Commit a8c1be9d authored by Alexander van Heukelum's avatar Alexander van Heukelum Committed by Ingo Molnar

x86: initial changes to unify traps_32.c and traps_64.c

This patch does not change the generated object files.
Signed-off-by: default avatarAlexander van Heukelum <heukelum@fastmail.fm>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent e93ef949
/* /*
* Copyright (C) 1991, 1992 Linus Torvalds * Copyright (C) 1991, 1992 Linus Torvalds
* Copyright (C) 2000, 2001, 2002 Andi Kleen, SuSE Labs
* *
* Pentium III FXSR, SSE support * Pentium III FXSR, SSE support
* Gareth Hughes <gareth@valinux.com>, May 2000 * Gareth Hughes <gareth@valinux.com>, May 2000
...@@ -130,7 +131,8 @@ void printk_address(unsigned long address, int reliable) ...@@ -130,7 +131,8 @@ void printk_address(unsigned long address, int reliable)
#endif #endif
} }
static inline int valid_stack_ptr(struct thread_info *tinfo, void *p, unsigned size) static inline int valid_stack_ptr(struct thread_info *tinfo,
void *p, unsigned int size)
{ {
return p > (void *)tinfo && return p > (void *)tinfo &&
p <= (void *)tinfo + THREAD_SIZE - size; p <= (void *)tinfo + THREAD_SIZE - size;
...@@ -167,8 +169,6 @@ print_context_stack(struct thread_info *tinfo, ...@@ -167,8 +169,6 @@ print_context_stack(struct thread_info *tinfo,
return bp; return bp;
} }
#define MSG(msg) ops->warning(data, msg)
void dump_trace(struct task_struct *task, struct pt_regs *regs, void dump_trace(struct task_struct *task, struct pt_regs *regs,
unsigned long *stack, unsigned long bp, unsigned long *stack, unsigned long bp,
const struct stacktrace_ops *ops, void *data) const struct stacktrace_ops *ops, void *data)
...@@ -178,7 +178,6 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, ...@@ -178,7 +178,6 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
if (!stack) { if (!stack) {
unsigned long dummy; unsigned long dummy;
stack = &dummy; stack = &dummy;
if (task != current) if (task != current)
stack = (unsigned long *)task->thread.sp; stack = (unsigned long *)task->thread.sp;
...@@ -196,7 +195,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, ...@@ -196,7 +195,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
} }
#endif #endif
while (1) { for (;;) {
struct thread_info *context; struct thread_info *context;
context = (struct thread_info *) context = (struct thread_info *)
...@@ -351,8 +350,7 @@ void show_registers(struct pt_regs *regs) ...@@ -351,8 +350,7 @@ void show_registers(struct pt_regs *regs)
printk(KERN_EMERG "Code: "); printk(KERN_EMERG "Code: ");
ip = (u8 *)regs->ip - code_prologue; ip = (u8 *)regs->ip - code_prologue;
if (ip < (u8 *)PAGE_OFFSET || if (ip < (u8 *)PAGE_OFFSET || probe_kernel_address(ip, c)) {
probe_kernel_address(ip, c)) {
/* try starting at EIP */ /* try starting at EIP */
ip = (u8 *)regs->ip; ip = (u8 *)regs->ip;
code_len = code_len - code_prologue + 1; code_len = code_len - code_prologue + 1;
...@@ -818,6 +816,8 @@ static notrace __kprobes void default_do_nmi(struct pt_regs *regs) ...@@ -818,6 +816,8 @@ static notrace __kprobes void default_do_nmi(struct pt_regs *regs)
} }
if (notify_die(DIE_NMI, "nmi", regs, reason, 2, SIGINT) == NOTIFY_STOP) if (notify_die(DIE_NMI, "nmi", regs, reason, 2, SIGINT) == NOTIFY_STOP)
return; return;
/* AK: following checks seem to be broken on modern chipsets. FIXME */
if (reason & 0x80) if (reason & 0x80)
mem_parity_error(reason, regs); mem_parity_error(reason, regs);
if (reason & 0x40) if (reason & 0x40)
...@@ -997,7 +997,7 @@ void math_error(void __user *ip) ...@@ -997,7 +997,7 @@ void math_error(void __user *ip)
* C1 reg you need in case of a stack fault, 0x040 is the stack * C1 reg you need in case of a stack fault, 0x040 is the stack
* fault bit. We should only be taking one exception at a time, * fault bit. We should only be taking one exception at a time,
* so if this combination doesn't produce any single exception, * so if this combination doesn't produce any single exception,
* then we have a bad program that isn't syncronizing its FPU usage * then we have a bad program that isn't synchronizing its FPU usage
* and it will suffer the consequences since we won't be able to * and it will suffer the consequences since we won't be able to
* fully reproduce the context of the exception * fully reproduce the context of the exception
*/ */
...@@ -1201,8 +1201,8 @@ void __init trap_init(void) ...@@ -1201,8 +1201,8 @@ void __init trap_init(void)
set_trap_gate(0, &divide_error); set_trap_gate(0, &divide_error);
set_intr_gate(1, &debug); set_intr_gate(1, &debug);
set_intr_gate(2, &nmi); set_intr_gate(2, &nmi);
set_system_intr_gate(3, &int3); /* int3/4 can be called from all */ set_system_intr_gate(3, &int3); /* int3 can be called from all */
set_system_gate(4, &overflow); set_system_gate(4, &overflow); /* int4 can be called from all */
set_trap_gate(5, &bounds); set_trap_gate(5, &bounds);
set_trap_gate(6, &invalid_op); set_trap_gate(6, &invalid_op);
set_trap_gate(7, &device_not_available); set_trap_gate(7, &device_not_available);
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment