From 8221396effe61eb17fb72281dd36665091f30e62 Mon Sep 17 00:00:00 2001 From: Mercier Pierre-Olivier Date: Sun, 17 Feb 2013 04:30:09 +0100 Subject: [PATCH] Working IDT --- kaneton/machine/architecture/ia32/educational/idt.c | 5 ++--- kaneton/machine/architecture/ia32/educational/include/idt.h | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/kaneton/machine/architecture/ia32/educational/idt.c b/kaneton/machine/architecture/ia32/educational/idt.c index 482d516..1a2415c 100644 --- a/kaneton/machine/architecture/ia32/educational/idt.c +++ b/kaneton/machine/architecture/ia32/educational/idt.c @@ -61,7 +61,7 @@ t_error architecture_idt_dump(void) privilege = ARCHITECTURE_IDTE_DPL_GET(_idt[i]); - if (_idt[i] & ARCHITECTURE_GDTE_32BIT) + if (_idt[i] & ARCHITECTURE_IDTE_32BIT) flag = 's'; else flag = '.'; @@ -145,7 +145,6 @@ t_error architecture_idt_insert(t_uint16 index, t_uint16 sselector; architecture_gdt_selector(1, ARCHITECTURE_PRIVILEGE_RING0, &sselector); -//* _idt[index] = ARCHITECTURE_IDTE_INTERRUPT | ARCHITECTURE_IDTE_PRESENT | @@ -153,7 +152,7 @@ t_error architecture_idt_insert(t_uint16 index, ARCHITECTURE_IDTE_SEGMENT_SET(sselector) | ARCHITECTURE_IDTE_32BIT | flags; -//*/ + MACHINE_LEAVE(); } diff --git a/kaneton/machine/architecture/ia32/educational/include/idt.h b/kaneton/machine/architecture/ia32/educational/include/idt.h index e5cdcc0..1ab5b00 100644 --- a/kaneton/machine/architecture/ia32/educational/include/idt.h +++ b/kaneton/machine/architecture/ia32/educational/include/idt.h @@ -120,7 +120,7 @@ #define ARCHITECTURE_IDTE_OFFSET_GET(_idte_) \ (t_paddr)((((_idte_) >> 0) & 0x0000ffff) | \ - (((_idte_) >> 16) & 0xffff0000)) + (((_idte_) >> 32) & 0xffff0000)) #define ARCHITECTURE_IDTE_DPL_SET(_privilege_) \ (((at_idte)(_privilege_) & 0x3) << 45) @@ -128,8 +128,8 @@ #define ARCHITECTURE_IDTE_DPL_GET(_idte_) \ (((_idte_) >> 45) & 0x3) -#define ARCHITECTURE_IDTE_SEGMENT_SET(_segment_) \ - ((((t_uint32) _segment_) & 0xffff) << 32) +#define ARCHITECTURE_IDTE_SEGMENT_SET(_segment_) \ + ((((t_uint32) _segment_) & 0xffff) << 16) /* EOFIXME */