summaryrefslogtreecommitdiffhomepage
path: root/dev/Mod/AHCI
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-03-14 08:19:35 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-03-14 08:19:35 +0100
commitb244cd4bdfb83b3f87c16f8d03725f84cfd0760e (patch)
tree96e26346bc0ab41115c4abffa20e228a34d46008 /dev/Mod/AHCI
parent27f4afb0e6bf21124ea4ca74e38821ecfe250388 (diff)
AHCI: Important tweaks.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Mod/AHCI')
-rw-r--r--dev/Mod/AHCI/AHCI.h30
1 files changed, 18 insertions, 12 deletions
diff --git a/dev/Mod/AHCI/AHCI.h b/dev/Mod/AHCI/AHCI.h
index 9e534a1a..d4f8ceb1 100644
--- a/dev/Mod/AHCI/AHCI.h
+++ b/dev/Mod/AHCI/AHCI.h
@@ -271,16 +271,22 @@ typedef struct HbaMem final
typedef struct HbaCmdHeader final
{
// DW0
- NeOS::UInt8 Cfl : 5; // Command FIS length in DWORDS, 2 ~ 16
- NeOS::UInt8 Atapi : 1; // ATAPI
- NeOS::UInt8 Write : 1; // Write, 1: H2D, 0: D2H
- NeOS::UInt8 Prefetchable : 1; // Prefetchable
-
- NeOS::UInt8 Reset : 1; // Reset
- NeOS::UInt8 BIST : 1; // BIST
- NeOS::UInt8 Clear : 1; // Clear busy upon R_OK
- NeOS::UInt8 Reserved0 : 1; // Reserved
- NeOS::UInt8 Pmp : 4; // Port multiplier port
+ union {
+ struct
+ {
+ NeOS::UInt8 Cfl : 5; // Command FIS length in DWORDS, 2 ~ 16
+ NeOS::UInt8 Atapi : 1; // ATAPI
+ NeOS::UInt8 Write : 1; // Write, 1: H2D, 0: D2H
+ NeOS::UInt8 Prefetchable : 1; // Prefetchable
+
+ NeOS::UInt8 Reset : 1; // Reset
+ NeOS::UInt8 BIST : 1; // BIST
+ NeOS::UInt8 Clear : 1; // Clear busy upon R_OK
+ NeOS::UInt8 Reserved0 : 1; // Reserved
+ NeOS::UInt8 Pmp : 4; // Port multiplier port
+ };
+ NeOS::UInt16 Flags;
+ };
NeOS::UInt16 Prdtl; // Physical region descriptor table length in entries
NeOS::UInt32 Prdbc; // Physical region descriptor byte count transferred
@@ -288,8 +294,8 @@ typedef struct HbaCmdHeader final
NeOS::UInt32 Ctba; // Command table descriptor base address
NeOS::UInt32 Ctbau; // Command table descriptor base address upper 32 bits
- NeOS::UInt32 Rscv[4];
-} HbaCmdHeader;
+ NeOS::UInt32 Rsv[4];
+} ATTRIBUTE(packed, aligned(32)) HbaCmdHeader;
typedef struct HbaFis final
{