git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
feat: lru eviction policy on page caches
[lunaix-os.git]
/
lunaix-os
/
hal
/
ahci
/
ata.c
diff --git
a/lunaix-os/hal/ahci/ata.c
b/lunaix-os/hal/ahci/ata.c
index a2f10ba769bfa49c24e7440baae63b7e98231c65..a77e03b4a87535ee0929911e2a57a5b7485a8a18 100644
(file)
--- a/
lunaix-os/hal/ahci/ata.c
+++ b/
lunaix-os/hal/ahci/ata.c
@@
-5,6
+5,14
@@
#include <lunaix/mm/vmm.h>
#include <lunaix/spike.h>
#include <lunaix/mm/vmm.h>
#include <lunaix/spike.h>
+void
+sata_read_error(struct hba_port* port)
+{
+ uint32_t tfd = port->regs[HBA_RPxTFD];
+ port->device->last_error = (tfd >> 8) & 0xff;
+ port->device->last_status = tfd & 0xff;
+}
+
int
__sata_buffer_io(struct hba_device* dev,
uint64_t lba,
int
__sata_buffer_io(struct hba_device* dev,
uint64_t lba,
@@
-28,7
+36,7
@@
__sata_buffer_io(struct hba_device* dev,
header->options |= HBA_CMDH_WRITE * (write == 1);
uint16_t count = ICEIL(size, port->device->block_size);
header->options |= HBA_CMDH_WRITE * (write == 1);
uint16_t count = ICEIL(size, port->device->block_size);
- struct sata_reg_fis* fis = table->command_fis;
+ struct sata_reg_fis* fis =
(struct sata_reg_fis*)
table->command_fis;
if ((port->device->flags & HBA_DEV_FEXTLBA)) {
// 如果该设备支持48位LBA寻址
if ((port->device->flags & HBA_DEV_FEXTLBA)) {
// 如果该设备支持48位LBA寻址
@@
-87,11
+95,3
@@
sata_write_buffer(struct hba_device* dev,
{
return __sata_buffer_io(dev, lba, buffer, size, 1);
}
{
return __sata_buffer_io(dev, lba, buffer, size, 1);
}
-
-void
-sata_read_error(struct hba_port* port)
-{
- uint32_t tfd = port->regs[HBA_RPxTFD];
- port->device->last_error = (tfd >> 8) & 0xff;
- port->device->last_status = tfd & 0xff;
-}
\ No newline at end of file