diff options
-rw-r--r-- | arch/x86/machine/trap.c | 35 | ||||
-rw-r--r-- | arch/x86/machine/trap.h | 86 |
2 files changed, 69 insertions, 52 deletions
diff --git a/arch/x86/machine/trap.c b/arch/x86/machine/trap.c index 49198123..5691d861 100644 --- a/arch/x86/machine/trap.c +++ b/arch/x86/machine/trap.c @@ -260,15 +260,21 @@ trap_frame_show(struct trap_frame *frame) "trap: vector: %lu error: %08lx\n" "trap: rip: %016lx cs: %lu rflags: %016lx\n" "trap: rsp: %016lx ss: %lu\n", - frame->rax, frame->rbx, frame->rcx, frame->rdx, frame->rbp, - frame->rsi, frame->rdi, frame->r8, frame->r9, frame->r10, - frame->r11, frame->r12, frame->r13, frame->r14, frame->r15, - frame->vector, frame->error, frame->rip, frame->cs, frame->rflags, - frame->rsp, frame->ss); + (unsigned long)frame->rax, (unsigned long)frame->rbx, + (unsigned long)frame->rcx, (unsigned long)frame->rdx, + (unsigned long)frame->rbp, (unsigned long)frame->rsi, + (unsigned long)frame->rdi, (unsigned long)frame->r8, + (unsigned long)frame->r9, (unsigned long)frame->r10, + (unsigned long)frame->r11, (unsigned long)frame->r12, + (unsigned long)frame->r13, (unsigned long)frame->r14, + (unsigned long)frame->r15, (unsigned long)frame->vector, + (unsigned long)frame->error, (unsigned long)frame->rip, + (unsigned long)frame->cs, (unsigned long)frame->rflags, + (unsigned long)frame->rsp, (unsigned long)frame->ss); /* XXX Until the page fault handler is written */ if (frame->vector == 14) { - printk("trap: cr2: %016lx\n", cpu_get_cr2()); + printk("trap: cr2: %016lx\n", (unsigned long)cpu_get_cr2()); } } @@ -289,19 +295,24 @@ trap_frame_show(struct trap_frame *frame) printk("trap: eax: %08lx ebx: %08lx ecx: %08lx edx: %08lx\n" "trap: ebp: %08lx esi: %08lx edi: %08lx\n" - "trap: ds: %lu es: %lu fs: %lu gs: %lu\n" + "trap: ds: %hu es: %hu fs: %hu gs: %hu\n" "trap: vector: %lu error: %08lx\n" "trap: eip: %08lx cs: %lu eflags: %08lx\n" "trap: esp: %08lx ss: %lu\n", - frame->eax, frame->ebx, frame->ecx, frame->edx, frame->ebp, - frame->esi, frame->edi, frame->ds, frame->es, frame->fs, frame->gs, - frame->vector, frame->error, frame->eip, frame->cs, frame->eflags, - esp, ss); + (unsigned long)frame->eax, (unsigned long)frame->ebx, + (unsigned long)frame->ecx, (unsigned long)frame->edx, + (unsigned long)frame->ebp, (unsigned long)frame->esi, + (unsigned long)frame->edi, (unsigned short)frame->ds, + (unsigned short)frame->es, (unsigned short)frame->fs, + (unsigned short)frame->gs, (unsigned long)frame->vector, + (unsigned long)frame->error, (unsigned long)frame->eip, + (unsigned long)frame->cs, (unsigned long)frame->eflags, + (unsigned long)esp, (unsigned long)ss); /* XXX Until the page fault handler is written */ if (frame->vector == 14) { - printk("trap: cr2: %08lx\n", cpu_get_cr2()); + printk("trap: cr2: %08lx\n", (unsigned long)cpu_get_cr2()); } } diff --git a/arch/x86/machine/trap.h b/arch/x86/machine/trap.h index b81bfb32..934ec77d 100644 --- a/arch/x86/machine/trap.h +++ b/arch/x86/machine/trap.h @@ -67,57 +67,63 @@ #ifndef __ASSEMBLER__ +#include <stdint.h> + #include <kern/macros.h> #include <kern/printk.h> #ifdef __LP64__ struct trap_frame { - unsigned long rax; - unsigned long rbx; - unsigned long rcx; - unsigned long rdx; - unsigned long rbp; - unsigned long rsi; - unsigned long rdi; - unsigned long r8; - unsigned long r9; - unsigned long r10; - unsigned long r11; - unsigned long r12; - unsigned long r13; - unsigned long r14; - unsigned long r15; - unsigned long vector; - unsigned long error; - unsigned long rip; - unsigned long cs; - unsigned long rflags; - unsigned long rsp; - unsigned long ss; + uint64_t rax; + uint64_t rbx; + uint64_t rcx; + uint64_t rdx; + uint64_t rbp; + uint64_t rsi; + uint64_t rdi; + uint64_t r8; + uint64_t r9; + uint64_t r10; + uint64_t r11; + uint64_t r12; + uint64_t r13; + uint64_t r14; + uint64_t r15; + uint64_t vector; + uint64_t error; + uint64_t rip; + uint64_t cs; + uint64_t rflags; + uint64_t rsp; + uint64_t ss; } __packed; #else /* __LP64__ */ struct trap_frame { - unsigned long eax; - unsigned long ebx; - unsigned long ecx; - unsigned long edx; - unsigned long ebp; - unsigned long esi; - unsigned long edi; - unsigned long ds; - unsigned long es; - unsigned long fs; - unsigned long gs; - unsigned long vector; - unsigned long error; - unsigned long eip; - unsigned long cs; - unsigned long eflags; - unsigned long esp; /* esp and ss are undefined if trapped in kernel */ - unsigned long ss; + uint32_t eax; + uint32_t ebx; + uint32_t ecx; + uint32_t edx; + uint32_t ebp; + uint32_t esi; + uint32_t edi; + uint16_t ds; + uint16_t _unused0; + uint16_t es; + uint16_t _unused1; + uint16_t fs; + uint16_t _unused2; + uint16_t gs; + uint16_t _unused3; + uint32_t vector; + uint32_t error; + uint32_t eip; + uint32_t cs; + uint32_t eflags; + uint32_t esp; /* esp and ss are undefined if trapped in kernel */ + uint32_t ss; } __packed; #endif /* __LP64__ */ |