summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/x86/machine/trap.c35
-rw-r--r--arch/x86/machine/trap.h86
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__ */