aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/mn10300/include/asm/exceptions.h5
-rw-r--r--arch/mn10300/kernel/entry.S25
-rw-r--r--arch/mn10300/kernel/traps.c22
-rw-r--r--arch/mn10300/mm/fault.c5
4 files changed, 2 insertions, 55 deletions
diff --git a/arch/mn10300/include/asm/exceptions.h b/arch/mn10300/include/asm/exceptions.h
index fa16466ef3f9..3f3826abc745 100644
--- a/arch/mn10300/include/asm/exceptions.h
+++ b/arch/mn10300/include/asm/exceptions.h
@@ -15,8 +15,8 @@
15 15
16/* 16/*
17 * define the breakpoint instruction opcode to use 17 * define the breakpoint instruction opcode to use
18 * - note that the JTAG unit steals 0xFF, so we want to avoid that if we can 18 * - note that the JTAG unit steals 0xFF, so you can't use JTAG and GDBSTUB at
19 * (can use 0xF7) 19 * the same time.
20 */ 20 */
21#define GDBSTUB_BKPT 0xFF 21#define GDBSTUB_BKPT 0xFF
22 22
@@ -90,7 +90,6 @@ enum exception_code {
90 90
91extern void __set_intr_stub(enum exception_code code, void *handler); 91extern void __set_intr_stub(enum exception_code code, void *handler);
92extern void set_intr_stub(enum exception_code code, void *handler); 92extern void set_intr_stub(enum exception_code code, void *handler);
93extern void set_jtag_stub(enum exception_code code, void *handler);
94 93
95struct pt_regs; 94struct pt_regs;
96 95
diff --git a/arch/mn10300/kernel/entry.S b/arch/mn10300/kernel/entry.S
index 3d394b4eefba..b82ce7b47fcb 100644
--- a/arch/mn10300/kernel/entry.S
+++ b/arch/mn10300/kernel/entry.S
@@ -216,31 +216,6 @@ ENTRY(irq_handler)
216 216
217############################################################################### 217###############################################################################
218# 218#
219# Monitor Signal handler entry point
220#
221###############################################################################
222ENTRY(monitor_signal)
223 movbu (0xae000001),d1
224 cmp 1,d1
225 beq monsignal
226 ret [],0
227
228monsignal:
229 or EPSW_NMID,epsw
230 mov d0,a0
231 mov a0,sp
232 mov (REG_EPSW,fp),d1
233 and ~EPSW_nSL,d1
234 mov d1,(REG_EPSW,fp)
235 movm (sp),[d2,d3,a2,a3,exreg0,exreg1,exother]
236 mov (sp),a1
237 mov a1,usp
238 movm (sp),[other]
239 add 4,sp
240here: jmp 0x8e000008-here+0x8e000008
241
242###############################################################################
243#
244# Double Fault handler entry point 219# Double Fault handler entry point
245# - note that there will not be a stack, D0/A0 will hold EPSW/PC as were 220# - note that there will not be a stack, D0/A0 will hold EPSW/PC as were
246# 221#
diff --git a/arch/mn10300/kernel/traps.c b/arch/mn10300/kernel/traps.c
index 91365adba4f5..a64604b512d5 100644
--- a/arch/mn10300/kernel/traps.c
+++ b/arch/mn10300/kernel/traps.c
@@ -538,28 +538,6 @@ void __init set_intr_stub(enum exception_code code, void *handler)
538} 538}
539 539
540/* 540/*
541 * set an interrupt stub to invoke the JTAG unit and then jump to a handler
542 */
543void __init set_jtag_stub(enum exception_code code, void *handler)
544{
545 unsigned long addr;
546 u8 *vector = (u8 *)(CONFIG_INTERRUPT_VECTOR_BASE + code);
547
548 addr = (unsigned long) handler - ((unsigned long) vector + 1);
549 vector[0] = 0xff; /* PI to jump into JTAG debugger */
550 vector[1] = 0xdc; /* jmp handler */
551 vector[2] = addr;
552 vector[3] = addr >> 8;
553 vector[4] = addr >> 16;
554 vector[5] = addr >> 24;
555 vector[6] = 0xcb;
556 vector[7] = 0xcb;
557
558 mn10300_dcache_flush_inv();
559 flush_icache_range((unsigned long) vector, (unsigned long) vector + 8);
560}
561
562/*
563 * initialise the exception table 541 * initialise the exception table
564 */ 542 */
565void __init trap_init(void) 543void __init trap_init(void)
diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c
index 81f153fa51b4..906e4c8f9ab1 100644
--- a/arch/mn10300/mm/fault.c
+++ b/arch/mn10300/mm/fault.c
@@ -100,8 +100,6 @@ static void print_pagetable_entries(pgd_t *pgdir, unsigned long address)
100} 100}
101#endif 101#endif
102 102
103asmlinkage void monitor_signal(struct pt_regs *);
104
105/* 103/*
106 * This routine handles page faults. It determines the address, 104 * This routine handles page faults. It determines the address,
107 * and the problem, and then passes it off to one of the appropriate 105 * and the problem, and then passes it off to one of the appropriate
@@ -279,7 +277,6 @@ good_area:
279 */ 277 */
280bad_area: 278bad_area:
281 up_read(&mm->mmap_sem); 279 up_read(&mm->mmap_sem);
282 monitor_signal(regs);
283 280
284 /* User mode accesses just cause a SIGSEGV */ 281 /* User mode accesses just cause a SIGSEGV */
285 if ((fault_code & MMUFCR_xFC_ACCESS) == MMUFCR_xFC_ACCESS_USR) { 282 if ((fault_code & MMUFCR_xFC_ACCESS) == MMUFCR_xFC_ACCESS_USR) {
@@ -292,7 +289,6 @@ bad_area:
292 } 289 }
293 290
294no_context: 291no_context:
295 monitor_signal(regs);
296 /* Are we prepared to handle this kernel fault? */ 292 /* Are we prepared to handle this kernel fault? */
297 if (fixup_exception(regs)) 293 if (fixup_exception(regs))
298 return; 294 return;
@@ -345,7 +341,6 @@ out_of_memory:
345 341
346do_sigbus: 342do_sigbus:
347 up_read(&mm->mmap_sem); 343 up_read(&mm->mmap_sem);
348 monitor_signal(regs);
349 344
350 /* 345 /*
351 * Send a sigbus, regardless of whether we were in kernel 346 * Send a sigbus, regardless of whether we were in kernel