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) 2000, 2001, 2002 Andi Kleen, SuSE Labs
*
* Pentium III FXSR, SSE support
* Gareth Hughes <gareth@valinux.com>, May 2000
......@@ -130,7 +131,8 @@ void printk_address(unsigned long address, int reliable)
#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 &&
p <= (void *)tinfo + THREAD_SIZE - size;
......@@ -167,8 +169,6 @@ print_context_stack(struct thread_info *tinfo,
return bp;
}
#define MSG(msg) ops->warning(data, msg)
void dump_trace(struct task_struct *task, struct pt_regs *regs,
unsigned long *stack, unsigned long bp,
const struct stacktrace_ops *ops, void *data)
......@@ -178,7 +178,6 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
if (!stack) {
unsigned long dummy;
stack = &dummy;
if (task != current)
stack = (unsigned long *)task->thread.sp;
......@@ -196,7 +195,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
}
#endif
while (1) {
for (;;) {
struct thread_info *context;
context = (struct thread_info *)
......@@ -351,8 +350,7 @@ void show_registers(struct pt_regs *regs)
printk(KERN_EMERG "Code: ");
ip = (u8 *)regs->ip - code_prologue;
if (ip < (u8 *)PAGE_OFFSET ||
probe_kernel_address(ip, c)) {
if (ip < (u8 *)PAGE_OFFSET || probe_kernel_address(ip, c)) {
/* try starting at EIP */
ip = (u8 *)regs->ip;
code_len = code_len - code_prologue + 1;
......@@ -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)
return;
/* AK: following checks seem to be broken on modern chipsets. FIXME */
if (reason & 0x80)
mem_parity_error(reason, regs);
if (reason & 0x40)
......@@ -997,7 +997,7 @@ void math_error(void __user *ip)
* 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,
* 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
* fully reproduce the context of the exception
*/
......@@ -1201,8 +1201,8 @@ void __init trap_init(void)
set_trap_gate(0, &divide_error);
set_intr_gate(1, &debug);
set_intr_gate(2, &nmi);
set_system_intr_gate(3, &int3); /* int3/4 can be called from all */
set_system_gate(4, &overflow);
set_system_intr_gate(3, &int3); /* int3 can be called from all */
set_system_gate(4, &overflow); /* int4 can be called from all */
set_trap_gate(5, &bounds);
set_trap_gate(6, &invalid_op);
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