diff options
| author | cpplover0 <osdev555@yandex.com> | 2026-03-30 18:21:18 +0300 |
|---|---|---|
| committer | cpplover0 <osdev555@yandex.com> | 2026-03-30 18:21:18 +0300 |
| commit | 8844a7888ea94a11939b1c92915162f2e5acd378 (patch) | |
| tree | 1b4ef74fde17d6f8bb6e054f3266e9342b41c836 /kernel/src/arch/x86_64/drivers | |
| parent | be997311c240f49db247ccce05ecb8ea5d3bfc31 (diff) | |
Diffstat (limited to 'kernel/src/arch/x86_64/drivers')
| -rw-r--r-- | kernel/src/arch/x86_64/drivers/pci.cpp | 3 | ||||
| -rw-r--r-- | kernel/src/arch/x86_64/drivers/tsc.cpp | 7 |
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; |
