mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2025-04-18 05:38:36 +01:00
Improve logs on AHCI boot prototyping, update IDE DVD boot function order documentation.
This commit is contained in:
parent
6dbaae46f5
commit
24853fa765
3 changed files with 75 additions and 18 deletions
Binary file not shown.
|
@ -6,23 +6,62 @@ $WW$
|
|||
- ATAPI RW
|
||||
|
||||
|
||||
$FG,7$ZenithOS DVD IDE Boot function order$FG$
|
||||
$FG,7$ZenithOS IDE DVD Boot function order list and summary$FG$
|
||||
|
||||
$HL,1$
|
||||
KMain // Kernel/KMain.CC
|
||||
KMain // $LK+PU,"Kernel/KMain.CC",A="FF:::/Kernel/KMain.CC,KMain"$
|
||||
...
|
||||
BlkDevsInitAll // Kernel/BlkDev/DiskAddDev.CC
|
||||
[KConfigAddDev] // Kernel/KConfig.CC
|
||||
Mount2 // Zenith/ZBlkDev/Mount.CC
|
||||
BlkDevNextFreeSlot // Kernel/BlkDev/DiskBlkDev.CC
|
||||
|
||||
BlkDevsInitAll // $LK+PU,"Kernel/BlkDev/DiskAddDev.CC",A="FF:::/Kernel/BlkDev/DiskAddDev.CC,BlkDevsInitAll"$
|
||||
[KConfigAddDev] // $LK+PU,"Kernel/KConfig.CC",A="FF:::/Kernel/KConfig.CC,KConfigAddDev"$
|
||||
Mount2 // $LK+PU,"Zenith/ZBlkDev/Mount.CC",A="FF:::/Zenith/ZBlkDev/Mount.CC,Mount2"$
|
||||
BlkDevNextFreeSlot // $LK+PU,"Kernel/BlkDev/DiskBlkDev.CC",A="FF:::/Kernel/BlkDev/DiskBlkDev.CC,BlkDevNextFreeSlot"$
|
||||
...
|
||||
GetBaseUnit // Kernel/BlkDev/DiskAddDev.CC
|
||||
BootDVDProbeAll // Kernel/BlkDev/DiskATAId.CC
|
||||
GetBaseUnit // $LK+PU,"Kernel/BlkDev/DiskAddDev.CC",A="FF:::/Kernel/BlkDev/DiskAddDev.CC,GetBaseUnit"$
|
||||
BootDVDProbeAll // $LK+PU,"Kernel/BlkDev/DiskATAId.CC",A="FF:::/Kernel/BlkDev/DiskATAId.CC,BootDVDProbeAll"$
|
||||
j = PCIClassFind(0x010100 + k, ++i);
|
||||
...
|
||||
BootDVDProbe // Kernel/BlkDev/DiskATAId.CC
|
||||
ATAProbe // Kernel/BlkDev/DiskATA.CC
|
||||
ATAPIStartStop // Kernel/BlkDev/DiskATA.CC
|
||||
ATAPIReadBlks2 // Kernel/BlkDev/DiskATA.CC
|
||||
BlkDevAdd // Kernel/BlkDev/DiskAddDev.CC
|
||||
BootDVDProbe // $LK+PU,"Kernel/BlkDev/DiskATAId.CC",A="FF:::/Kernel/BlkDev/DiskATAId.CC,BootDVDProbe"$
|
||||
ATAProbe // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAProbe"$
|
||||
ATAGetDevId // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAGetDevId"$
|
||||
|
||||
ATAPIStartStop // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAPIStartStop"$
|
||||
ATAPIWritePacketWord // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAPIWritePacketWord"$
|
||||
|
||||
ATAPIReadBlks2 // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAPIReadBlks2"$
|
||||
ATAInit // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAInit"$
|
||||
ATAReadNativeMax // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAReadNativeMax"$
|
||||
ATAGetDevId // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAGetDevId"$
|
||||
ATABlkSel // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATABlkSel"$
|
||||
ATAPIStartStop // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAPIStartStop"$
|
||||
ATAPIWritePacketWord// $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAPIWritePacketWord"$
|
||||
|
||||
BlkDevAdd // $LK+PU,"Kernel/BlkDev/DiskAddDev.CC",A="FF:::/Kernel/BlkDev/DiskAddDev.CC,BlkDevAdd"$
|
||||
DriveMakeFreeSlot // $LK+PU,"Kernel/BlkDev/DiskDrive.CC",A="FF:::/Kernel/BlkDev/DiskDrive.CC,DriveMakeFreeSlot"$
|
||||
|
||||
DiskChange // $LK+PU,"Kernel/BlkDev/DiskDrive.CC",A="FF:::/Kernel/BlkDev/DiskDrive.CC,U0 DiskChange"$
|
||||
BlkDevInit // $LK+PU,"Kernel/BlkDev/DiskBlkDev.CC",A="FF:::/Kernel/BlkDev/DiskBlkDev.CC,BlkDevInit"$
|
||||
ATAInit // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAInit"$
|
||||
ATAReadNativeMax // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAReadNativeMax"$
|
||||
ATAGetDevId // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAGetDevId"$
|
||||
ATABlkSel // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATABlkSel"$
|
||||
ATAPIStartStop // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAPIStartStop"$
|
||||
ATAPIWritePacketWord // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAPIWritePacketWord"$
|
||||
|
||||
DiskCacheInvalidate // $LK+PU,"Kernel/BlkDev/DiskDrive.CC",A="FF:::/Kernel/BlkDev/DiskDrive.CC,U0 DiskCacheInvalidate"$
|
||||
DiskCheck // $LK+PU,"Zenith/ZBlkDev/DiskCheck.CC",A="FF:::/Zenith/ZBlkDev/DiskCheck.CC,DiskCheck"$
|
||||
BlkDevInit // $LK+PU,"Kernel/BlkDev/DiskBlkDev.CC",A="FF:::/Kernel/BlkDev/DiskBlkDev.CC,BlkDevInit"$
|
||||
...
|
||||
ISOInit // $LK+PU,"Kernel/BlkDev/DiskCDDVD.CC",A="FF:::/Kernel/BlkDev/DiskCDDVD.CC,ISOInit"$
|
||||
BlkRead // $LK+PU,"Kernel/BlkDev/DiskBlk.CC",A="FF:::/Kernel/BlkDev/DiskBlk.CC,BlkRead"$
|
||||
ATARBlks // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATARBlks"$
|
||||
ATAPIReadBlks // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAPIReadBlks:2"$
|
||||
ATAPIReadBlks2 // $LK+PU,"Kernel/BlkDev/DiskATA.CC",A="FF:::/Kernel/BlkDev/DiskATA.CC,ATAPIReadBlks2"$
|
||||
...
|
||||
|
||||
Drive // $LK+PU,"Kernel/BlkDev/DiskDrive.CC",A="FF:::/Kernel/BlkDev/DiskDrive.CC,Bool Drive("$
|
||||
BlkDevCheck // $LK+PU,"Kernel/BlkDev/DiskBlkDev.CC",A="FF:::/Kernel/BlkDev/DiskBlkDev.CC,CBlkDev *BlkDevCheck("$
|
||||
|
||||
|
||||
...$HL,0$
|
||||
|
||||
$HL,0$
|
||||
|
|
|
@ -53,23 +53,41 @@ Bool BootDVDProbeAll(CBlkDev *bd)
|
|||
Bts(&hba->ghc, AHCI_GHCf_HBA_RESET);
|
||||
while (Bt(&hba->ghc, AHCI_GHCf_HBA_RESET));
|
||||
Bts(&hba->ghc, AHCI_GHCf_AHCI_ENABLE);
|
||||
if (Bt(&hba->caps_ext, AHCI_CAPSEXTf_BOH))
|
||||
{
|
||||
"Transferring AHCI ownership from BIOS.\n\n";
|
||||
Bt(&hba->bohc, AHCI_BOHCf_OOS);
|
||||
while (Bt(&hba->bohc, AHCI_BOHCf_BOS));
|
||||
Sleep(25);
|
||||
if (Bt(&hba->bohc, AHCI_BOHCf_BB)) //if Bios Busy is still set after 25 mS, wait 2 seconds.
|
||||
Sleep(2000);
|
||||
}
|
||||
blkdev.ahci64 = Bt(&hba->caps, AHCI_CAPSf_S64A);
|
||||
blkdev.cmd_slot_count = (hba->caps & 0x1F00) >> 8;
|
||||
blkdev.ahci_hba = hba;
|
||||
"ahci64: %Z\n", blkdev.ahci64, "ST_FALSE_TRUE";
|
||||
"ahci cmd slots: %d\n\n", blkdev.cmd_slot_count;
|
||||
|
||||
for (i = 0; i < AHCI_MAX_PORTS; i++)
|
||||
{
|
||||
if (Bt(&hba->ports_implemented, i))
|
||||
{
|
||||
"AHCI Port %d implemented.\n", i;
|
||||
port = &hba->ports[i];
|
||||
"Port Signature: 0x%08X\n", port->signature;
|
||||
if (port->signature == AHCI_PxSIG_ATAPI)
|
||||
"ATAPI drive detected on AHCI Port %d\n", i;
|
||||
"ATAPI drive detected on AHCI Port %d.\n", i;
|
||||
else if (port->signature == AHCI_PxSIG_ATA)
|
||||
"ATA drive detected on AHCI Port %d\n", i;
|
||||
"ATA drive detected on AHCI Port %d.\n", i;
|
||||
|
||||
"\n";
|
||||
}
|
||||
}
|
||||
"\n\nReboot with IDE Compatibility mode set in the BIOS.\n";
|
||||
"Reboot with IDE Compatibility mode set in the BIOS.\n";
|
||||
SysHlt;
|
||||
}
|
||||
/********************/
|
||||
|
||||
|
||||
bd->base1 = 0;
|
||||
for (k = 0; k < 256; k++)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue