|
@@ -218,7 +218,7 @@ ENTRY(_ex_single_step)
|
|
|
/* Single stepping only a single instruction, so clear the trace
|
|
|
* bit here. */
|
|
|
r7 = syscfg;
|
|
|
- bitclr (r7, 0);
|
|
|
+ bitclr (r7, SYSCFG_SSSTEP_P);
|
|
|
syscfg = R7;
|
|
|
jump _ex_trap_c;
|
|
|
|
|
@@ -251,7 +251,7 @@ ENTRY(_ex_single_step)
|
|
|
if !cc jump _bfin_return_from_exception;
|
|
|
|
|
|
r7 = syscfg;
|
|
|
- bitclr (r7, 0);
|
|
|
+ bitclr (r7, SYSCFG_SSSTEP_P); /* Turn off single step */
|
|
|
syscfg = R7;
|
|
|
|
|
|
/* Fall through to _bfin_return_from_exception. */
|
|
@@ -342,9 +342,11 @@ ENTRY(_ex_trap_c)
|
|
|
r6 = retx;
|
|
|
[p5 + PDA_RETX] = r6;
|
|
|
#endif
|
|
|
+ /* Save the state of single stepping */
|
|
|
r6 = SYSCFG;
|
|
|
[p5 + PDA_SYSCFG] = r6;
|
|
|
- BITCLR(r6, 0);
|
|
|
+ /* Clear it while we handle the exception in IRQ5 mode */
|
|
|
+ BITCLR(r6, SYSCFG_SSSTEP_P);
|
|
|
SYSCFG = r6;
|
|
|
|
|
|
/* Disable all interrupts, but make sure level 5 is enabled so
|
|
@@ -367,7 +369,7 @@ ENDPROC(_ex_trap_c)
|
|
|
* exception. This is a unrecoverable event, so crash.
|
|
|
* Note: this cannot be ENTRY() as we jump here with "if cc jump" ...
|
|
|
*/
|
|
|
-_double_fault:
|
|
|
+ENTRY(_double_fault)
|
|
|
/* Turn caches & protection off, to ensure we don't get any more
|
|
|
* double exceptions
|
|
|
*/
|
|
@@ -872,7 +874,7 @@ ENTRY(_ret_from_exception)
|
|
|
raise 15; /* raise evt15 to do signal or reschedule */
|
|
|
4:
|
|
|
r0 = syscfg;
|
|
|
- bitclr(r0, 0);
|
|
|
+ bitclr(r0, SYSCFG_SSSTEP_P); /* Turn off single step */
|
|
|
syscfg = r0;
|
|
|
5:
|
|
|
rts;
|