mirror of https://gitee.com/openkylin/linux.git
Blackfin arch: Fix bugs - Make kgdb code apparent to app debugging.
- Skip single step if global interrupt disable bit is set. - Extend bernds' patch r4673 to skip single step in any interrupt entry that interrupts the code which is under single stepping. Bernds' patch only allow user space single stepping. Singed-off-by: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: Bryan Wu <cooloney@kernel.org>
This commit is contained in:
parent
fe5aeb9302
commit
d6a2989136
|
@ -163,6 +163,8 @@ ENTRY(_ex_single_step)
|
|||
p5.l = lo(IPEND);
|
||||
p5.h = hi(IPEND);
|
||||
r6 = [p5];
|
||||
cc = bittst(r6, 4);
|
||||
if cc jump _bfin_return_from_exception;
|
||||
cc = bittst(r6, 5);
|
||||
if cc jump _bfin_return_from_exception;
|
||||
|
||||
|
@ -186,10 +188,9 @@ ENTRY(_ex_single_step)
|
|||
if cc jump .Ldo_single_step;
|
||||
r6 += -1;
|
||||
cc = r6 < r7;
|
||||
if cc jump _bfin_return_from_exception;
|
||||
if cc jump 1f;
|
||||
.Ldo_single_step:
|
||||
#endif
|
||||
|
||||
#else
|
||||
/* If we were in user mode, do the single step normally. */
|
||||
p5.l = lo(IPEND);
|
||||
p5.h = hi(IPEND);
|
||||
|
@ -198,6 +199,7 @@ ENTRY(_ex_single_step)
|
|||
r7 = r7 & r6;
|
||||
cc = r7 == 0;
|
||||
if !cc jump 1f;
|
||||
#endif
|
||||
|
||||
/* Single stepping only a single instruction, so clear the trace
|
||||
* bit here. */
|
||||
|
|
Loading…
Reference in New Issue