aboutsummaryrefslogtreecommitdiffstats
path: root/kernel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel.cpp')
-rw-r--r--kernel.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/kernel.cpp b/kernel.cpp
index 408a19e..cbeab58 100644
--- a/kernel.cpp
+++ b/kernel.cpp
@@ -1,4 +1,5 @@
#include "acpi.hpp"
+#include "ata.hpp"
#include "gdt.hpp"
#include "idt.hpp"
#include "keyboard.hpp"
@@ -15,6 +16,24 @@ TextOutput& term = vga;
static volatile bool termBusy = false;
+void ata_probe(auto bus, ATA::Drive drv, const char *name)
+{
+ switch (bus.identify(drv)) {
+ case ATA::Type::ATA:
+ term.write("ata:");
+ term.write(name);
+ term.write(": ATA drive detected.\n");
+ break;
+ case ATA::Type::ATAPI:
+ term.write("ata:");
+ term.write(name);
+ term.write(": ATAPI drive detected.\n");
+ break;
+ default:
+ break;
+ }
+}
+
void kernel_main(void)
{
term.write("Clyne's kernel, v2024\n\n");
@@ -40,6 +59,14 @@ void kernel_main(void)
tasking_initialize();
term.write("Tasking enabled.\n");
+ ATA::Bus<ATA::Primary> bus0;
+ ATA::Bus<ATA::Secondary> bus1;
+
+ ata_probe(bus0, ATA::Master, "0:0");
+ ata_probe(bus0, ATA::Slave, "0:1");
+ ata_probe(bus1, ATA::Master, "1:0");
+ ata_probe(bus1, ATA::Slave, "1:1");
+
for (;;) {
const auto ch = keyboard_read();
if (ch)