diff --git a/repos/base-hw/src/core/include/spec/x86/cpu.h b/repos/base-hw/src/core/include/spec/x86/cpu.h index cf78ff0bf..28d5a2061 100644 --- a/repos/base-hw/src/core/include/spec/x86/cpu.h +++ b/repos/base-hw/src/core/include/spec/x86/cpu.h @@ -52,7 +52,7 @@ class Genode::Cpu { if (primary_id() == executing_id()) { _idt = new (&_mt_idt) Idt(); - _idt->setup(); + _idt->setup(Cpu::exception_entry); _tss = new (&_mt_tss) Tss(); _tss->load(); diff --git a/repos/base-hw/src/core/include/spec/x86_64/idt.h b/repos/base-hw/src/core/include/spec/x86_64/idt.h index 3980502fc..b98ad12f9 100644 --- a/repos/base-hw/src/core/include/spec/x86_64/idt.h +++ b/repos/base-hw/src/core/include/spec/x86_64/idt.h @@ -43,8 +43,10 @@ class Genode::Idt /** * Setup IDT. + * + * \param virt_base virtual base address of mode transition pages */ - void setup(); + void setup(addr_t const virt_base); /** * Load IDT into IDTR. diff --git a/repos/base-hw/src/core/spec/x86_64/idt.cc b/repos/base-hw/src/core/spec/x86_64/idt.cc index 30d666e17..d10ed702a 100644 --- a/repos/base-hw/src/core/spec/x86_64/idt.cc +++ b/repos/base-hw/src/core/spec/x86_64/idt.cc @@ -8,7 +8,7 @@ extern int _mt_idt; using namespace Genode; -void Idt::setup() +void Idt::setup(addr_t const virt_base) { /* TODO: Calculate from _mt_isrs label */ uint64_t base = 0;