From 0d74f1e54335478b01a22fb12b5c49cccfc8c3e5 Mon Sep 17 00:00:00 2001 From: Bernd Schmidt Date: Wed, 23 Apr 2008 07:17:34 +0800 Subject: [PATCH] --- yaml --- r: 92280 b: refs/heads/master c: 2a0c4fdb6602ea066380aaf71ff7bb2f61ffeee8 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/blackfin/mach-common/entry.S | 7 ++++++- trunk/include/asm-blackfin/trace.h | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 39f149a02495..9335b6dda417 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: dbfe44f02b6855efb5a596e942ec2fd96d592f60 +refs/heads/master: 2a0c4fdb6602ea066380aaf71ff7bb2f61ffeee8 diff --git a/trunk/arch/blackfin/mach-common/entry.S b/trunk/arch/blackfin/mach-common/entry.S index cee54cebbc65..a504c65d9990 100644 --- a/trunk/arch/blackfin/mach-common/entry.S +++ b/trunk/arch/blackfin/mach-common/entry.S @@ -121,10 +121,14 @@ ENTRY(_ex_icplb_miss) (R7:6,P5:4) = [sp++]; ASTAT = [sp++]; SAVE_ALL_SYS - DEBUG_HWTRACE_SAVE(p5, r7) #ifdef CONFIG_MPU + /* We must load R1 here, _before_ DEBUG_HWTRACE_SAVE, since that + * will change the stack pointer. */ R0 = SEQSTAT; R1 = SP; +#endif + DEBUG_HWTRACE_SAVE(p5, r7) +#ifdef CONFIG_MPU sp += -12; call _cplb_hdr; sp += 12; @@ -191,6 +195,7 @@ ENTRY(_bfin_return_from_exception) ENDPROC(_bfin_return_from_exception) ENTRY(_handle_bad_cplb) + DEBUG_HWTRACE_RESTORE(p5, r7) /* To get here, we just tried and failed to change a CPLB * so, handle things in trap_c (C code), by lowering to * IRQ5, just like we normally do. Since this is not a diff --git a/trunk/include/asm-blackfin/trace.h b/trunk/include/asm-blackfin/trace.h index ef18afbc2101..312b596b9731 100644 --- a/trunk/include/asm-blackfin/trace.h +++ b/trunk/include/asm-blackfin/trace.h @@ -62,14 +62,14 @@ extern unsigned long software_trace_buff[]; preg.L = LO(TBUFCTL); \ preg.H = HI(TBUFCTL); \ dreg = [preg]; \ - [sp++] = dreg; \ + [--sp] = dreg; \ dreg = 0x1; \ [preg] = dreg; #define trace_buffer_restore(preg, dreg) \ preg.L = LO(TBUFCTL); \ preg.H = HI(TBUFCTL); \ - dreg = [sp--]; \ + dreg = [sp++]; \ [preg] = dreg; #else /* CONFIG_DEBUG_BFIN_HWTRACE_ON */