diff options
Diffstat (limited to 'kernel/src/arch/x86_64/x86_64.cpp')
| -rw-r--r-- | kernel/src/arch/x86_64/x86_64.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/kernel/src/arch/x86_64/x86_64.cpp b/kernel/src/arch/x86_64/x86_64.cpp index 4d272da..1389351 100644 --- a/kernel/src/arch/x86_64/x86_64.cpp +++ b/kernel/src/arch/x86_64/x86_64.cpp @@ -15,6 +15,7 @@ #include <arch/x86_64/schedule_timer.hpp> #include <utils/gobject.hpp> #include <arch/x86_64/cpu/sse.hpp> +#include <arch/x86_64/drivers/pvclock.hpp> namespace arch { [[gnu::weak]] void disable_interrupts() { @@ -72,6 +73,7 @@ namespace arch { x86_64::init_cpu_data(); drivers::hpet::init(); drivers::tsc::init(); + drivers::pvclock::bsp_init(); x86_64::gdt::init(); x86_64::idt::init(); x86_64::lapic::init(1500); @@ -84,6 +86,7 @@ namespace arch { enable_paging(gobject::kernel_root); x86_64::init_cpu_data(); drivers::tsc::init(); + drivers::pvclock::init(); x86_64::gdt::init(); x86_64::idt::init(); x86_64::lapic::init(1500); @@ -108,4 +111,14 @@ namespace arch { return x86_64::irq::create(irq,type,func,arg,flags); } + [[gnu::weak]] bool test_interrupts() { + uint64_t rflags; + __asm__ __volatile__ ( + "pushfq\n\t" + "pop %0" : "=rm" (rflags): : "memory" + ); + return (rflags & (1 << 9)) != 0; + } + + }
\ No newline at end of file |
