patch-2.4.19 linux-2.4.19/arch/arm/kernel/traps.c
Next file: linux-2.4.19/arch/arm/kernel/via82c505.c
Previous file: linux-2.4.19/arch/arm/kernel/signal.c
Back to the patch index
Back to the overall index
- Lines: 116
- Date:
Fri Aug 2 17:39:42 2002
- Orig file:
linux-2.4.18/arch/arm/kernel/traps.c
- Orig date:
Thu Oct 11 09:04:57 2001
diff -urN linux-2.4.18/arch/arm/kernel/traps.c linux-2.4.19/arch/arm/kernel/traps.c
@@ -25,8 +25,6 @@
#include <linux/interrupt.h>
#include <linux/init.h>
-#include <asm/atomic.h>
-#include <asm/io.h>
#include <asm/pgtable.h>
#include <asm/system.h>
#include <asm/uaccess.h>
@@ -53,7 +51,7 @@
*/
static int verify_stack(unsigned long sp)
{
- if (sp < PAGE_OFFSET || sp > (unsigned long)high_memory)
+ if (sp < PAGE_OFFSET || (sp > (unsigned long)high_memory && high_memory != 0))
return -EFAULT;
return 0;
@@ -62,13 +60,15 @@
/*
* Dump out the contents of some memory nicely...
*/
-void dump_mem(unsigned long bottom, unsigned long top)
+static void dump_mem(const char *str, unsigned long bottom, unsigned long top)
{
unsigned long p = bottom & ~31;
int i;
+ printk("%s(0x%08lx to 0x%08lx)\n", str, bottom, top);
+
for (p = bottom & ~31; p < top;) {
- printk("%08lx: ", p);
+ printk("%04lx: ", p & 0xffff);
for (i = 0; i < 8; i++, p += 4) {
unsigned int val;
@@ -79,21 +79,11 @@
__get_user(val, (unsigned long *)p);
printk("%08x ", val);
}
- if (i == 3)
- printk(" ");
}
printk ("\n");
}
}
-/*
- * These constants are for searching for possible module text
- * segments. VMALLOC_OFFSET comes from mm/vmalloc.c; MODULE_RANGE is
- * a guess of how much space is likely to be vmalloced.
- */
-#define VMALLOC_OFFSET (8*1024*1024)
-#define MODULE_RANGE (8*1024*1024)
-
static void dump_instr(struct pt_regs *regs)
{
unsigned long addr = instruction_pointer(regs);
@@ -102,7 +92,7 @@
int i;
printk("Code: ");
- for (i = -2; i < 3; i++) {
+ for (i = -4; i < 1; i++) {
unsigned int val, bad;
if (thumb)
@@ -122,8 +112,7 @@
static void dump_stack(struct task_struct *tsk, unsigned long sp)
{
- printk("Stack:\n");
- dump_mem(sp - 16, 8192+(unsigned long)tsk);
+ dump_mem("Stack: ", sp - 16, 8192+(unsigned long)tsk);
}
static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk)
@@ -289,10 +278,9 @@
handler[reason], processor_modes[proc_mode]);
/*
- * We need to switch to kernel mode so that we can
- * use __get_user to safely read from kernel space.
- * Note that we now dump the code first, just in case
- * the backtrace kills us.
+ * We need to switch to kernel mode so that we can use __get_user
+ * to safely read from kernel space. Note that we now dump the
+ * code first, just in case the backtrace kills us.
*/
fs = get_fs();
set_fs(KERNEL_DS);
@@ -301,10 +289,8 @@
* Dump out the vectors and stub routines. Maybe a better solution
* would be to dump them out only if we detect that they are corrupted.
*/
- printk(KERN_CRIT "Vectors:\n");
- dump_mem(vectors, 0x40);
- printk(KERN_CRIT "Stubs:\n");
- dump_mem(vectors + 0x200, 0x4b8);
+ dump_mem(KERN_CRIT "Vectors: ", vectors, vectors + 0x40);
+ dump_mem(KERN_CRIT "Stubs: ", vectors + 0x200, vectors + 0x4b8);
set_fs(fs);
@@ -528,11 +514,6 @@
void abort(void)
{
- void *lr = __builtin_return_address(0);
-
- printk(KERN_CRIT "abort() called from %p! (Please "
- "report to rmk@arm.linux.org.uk)\n", lr);
-
BUG();
/* if that doesn't kill us, halt */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)