summaryrefslogtreecommitdiff
path: root/kernel/src/arch/x86_64/x86_64.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/arch/x86_64/x86_64.cpp')
-rw-r--r--kernel/src/arch/x86_64/x86_64.cpp13
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