summaryrefslogtreecommitdiff
path: root/kernel/src/arch/x86_64/drivers
diff options
context:
space:
mode:
authorcpplover0 <osdev555@yandex.com>2026-03-30 18:21:18 +0300
committercpplover0 <osdev555@yandex.com>2026-03-30 18:21:18 +0300
commit8844a7888ea94a11939b1c92915162f2e5acd378 (patch)
tree1b4ef74fde17d6f8bb6e054f3266e9342b41c836 /kernel/src/arch/x86_64/drivers
parentbe997311c240f49db247ccce05ecb8ea5d3bfc31 (diff)
trying to get xhci working on vboxHEADmain
Diffstat (limited to 'kernel/src/arch/x86_64/drivers')
-rw-r--r--kernel/src/arch/x86_64/drivers/pci.cpp3
-rw-r--r--kernel/src/arch/x86_64/drivers/tsc.cpp7
2 files changed, 9 insertions, 1 deletions
diff --git a/kernel/src/arch/x86_64/drivers/pci.cpp b/kernel/src/arch/x86_64/drivers/pci.cpp
index 88d5f36..db259f8 100644
--- a/kernel/src/arch/x86_64/drivers/pci.cpp
+++ b/kernel/src/arch/x86_64/drivers/pci.cpp
@@ -2,6 +2,7 @@
#include <cstdint>
pci_driver_t pci_drivers[256];
+int last_pci_drv = 0;
pci_t __pci_load(std::uint8_t bus, std::uint8_t num, std::uint8_t function) {
pci_t pciData;
@@ -19,6 +20,7 @@ void x86_64::pci::reg(void (*pcidrv)(pci_t, std::uint8_t, std::uint8_t, std::uin
pci_drivers[i]._class = _class;
pci_drivers[i].subclass = subclass;
pci_drivers[i].pcidrv = pcidrv;
+ return;
}
}
}
@@ -27,7 +29,6 @@ void __pci_launch(pci_t pci, std::uint8_t bus, std::uint8_t device, std::uint8_t
for (std::uint16_t i = 0; i < 256; i++) {
if (pci_drivers[i].used && pci_drivers[i]._class == pci._class && pci_drivers[i].subclass == pci.subclass) {
pci_drivers[i].pcidrv(pci, bus, device, function);
- return;
}
}
}
diff --git a/kernel/src/arch/x86_64/drivers/tsc.cpp b/kernel/src/arch/x86_64/drivers/tsc.cpp
index 4203d76..f381173 100644
--- a/kernel/src/arch/x86_64/drivers/tsc.cpp
+++ b/kernel/src/arch/x86_64/drivers/tsc.cpp
@@ -14,10 +14,17 @@ static inline uint64_t rdtsc() {
return ((uint64_t)hi << 32) | lo;
}
+bool is_disabled_tsc = false;
+
void drivers::tsc::init() {
+ if(is_disabled_tsc == true)
+ return;
+
if(time::timer == nullptr) {
log("tsc", "can't initialize without timer !");
+ is_disabled_tsc = true;
+ return;
}
uint64_t tsc_start, tsc_end;