diff options
Diffstat (limited to 'arch/blackfin')
-rw-r--r-- | arch/blackfin/mach-common/entry.S | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S index 3db2f4df261b..4bd971e81f1f 100644 --- a/arch/blackfin/mach-common/entry.S +++ b/arch/blackfin/mach-common/entry.S | |||
@@ -163,6 +163,8 @@ ENTRY(_ex_single_step) | |||
163 | p5.l = lo(IPEND); | 163 | p5.l = lo(IPEND); |
164 | p5.h = hi(IPEND); | 164 | p5.h = hi(IPEND); |
165 | r6 = [p5]; | 165 | r6 = [p5]; |
166 | cc = bittst(r6, 4); | ||
167 | if cc jump _bfin_return_from_exception; | ||
166 | cc = bittst(r6, 5); | 168 | cc = bittst(r6, 5); |
167 | if cc jump _bfin_return_from_exception; | 169 | if cc jump _bfin_return_from_exception; |
168 | 170 | ||
@@ -186,10 +188,9 @@ ENTRY(_ex_single_step) | |||
186 | if cc jump .Ldo_single_step; | 188 | if cc jump .Ldo_single_step; |
187 | r6 += -1; | 189 | r6 += -1; |
188 | cc = r6 < r7; | 190 | cc = r6 < r7; |
189 | if cc jump _bfin_return_from_exception; | 191 | if cc jump 1f; |
190 | .Ldo_single_step: | 192 | .Ldo_single_step: |
191 | #endif | 193 | #else |
192 | |||
193 | /* If we were in user mode, do the single step normally. */ | 194 | /* If we were in user mode, do the single step normally. */ |
194 | p5.l = lo(IPEND); | 195 | p5.l = lo(IPEND); |
195 | p5.h = hi(IPEND); | 196 | p5.h = hi(IPEND); |
@@ -198,6 +199,7 @@ ENTRY(_ex_single_step) | |||
198 | r7 = r7 & r6; | 199 | r7 = r7 & r6; |
199 | cc = r7 == 0; | 200 | cc = r7 == 0; |
200 | if !cc jump 1f; | 201 | if !cc jump 1f; |
202 | #endif | ||
201 | 203 | ||
202 | /* Single stepping only a single instruction, so clear the trace | 204 | /* Single stepping only a single instruction, so clear the trace |
203 | * bit here. */ | 205 | * bit here. */ |