Closed erfzsven closed 10 years ago
The total address is still 64-bit. The address has to be 1K aligned so bits 9:0 in PxCLB can only be 0.
I wrote the driver from scratch. Intel hosts the AHCI specifications on their website: http://www.intel.com/content/www/us/en/io/serial-ata/ahci.html
the founddriver function loads ahci_cmdlist into P0CLB(Port0 command list base address), and 0x0 into P0CLBU, ahci_cmdlist equal 0x0007_0000, but it is bit31:10 in P0CLB presents the base address, plus the upper 32bits, forms a 54bit address, that will be 0x0000_01C0 instead of 0x0007_0000. so you have the command list placed at 0x0007_0000, why does it work? btw, where did you find these manuals for drivers development? how do you know how to control a device? just from google? or read other OS's code? Thank you.