diff --git a/src/kernel/interrupts/idt.tt b/src/kernel/interrupts/idt.tt index 4cec586..98b6f9b 100644 --- a/src/kernel/interrupts/idt.tt +++ b/src/kernel/interrupts/idt.tt @@ -11,21 +11,23 @@ void load_idt(struct idtr *_) (void)_; } +uint8_t *idt_raw = (uint8_t *)idt; + TEST(idt_set_gate_correctly_sets_address_L) { idt_set_gate(1, 0x1234567890ABCDEF, 0, 0, 0); - ASSERT_EQ_INT(idt[1].base_l, 0xCDEF); + ASSERT_EQ_INT(*(uint16_t *)&idt_raw[16+0], 0xCDEF); } TEST(idt_set_gate_correctly_sets_address_M) { idt_set_gate(1, 0x1234567890ABCDEF, 0, 0, 0); - ASSERT_EQ_INT(idt[1].base_m, 0x90AB); + ASSERT_EQ_INT(*(uint16_t *)&idt_raw[16+6], 0x90AB); } TEST(idt_set_gate_correctly_sets_address_H) { idt_set_gate(1, 0x1234567890ABCDEF, 0, 0, 0); - ASSERT_EQ_INT(idt[1].base_h, 0x12345678); + ASSERT_EQ_INT(*(uint32_t *)&idt_raw[16+8], 0x12345678); }