diff options
Diffstat (limited to 'arch/m68k/kernel/entry.S')
| -rw-r--r-- | arch/m68k/kernel/entry.S | 40 |
1 files changed, 4 insertions, 36 deletions
diff --git a/arch/m68k/kernel/entry.S b/arch/m68k/kernel/entry.S index a78f5649e8de..b54ac7aba850 100644 --- a/arch/m68k/kernel/entry.S +++ b/arch/m68k/kernel/entry.S | |||
| @@ -45,7 +45,7 @@ | |||
| 45 | .globl system_call, buserr, trap, resume | 45 | .globl system_call, buserr, trap, resume |
| 46 | .globl sys_call_table | 46 | .globl sys_call_table |
| 47 | .globl __sys_fork, __sys_clone, __sys_vfork | 47 | .globl __sys_fork, __sys_clone, __sys_vfork |
| 48 | .globl ret_from_interrupt, bad_interrupt | 48 | .globl bad_interrupt |
| 49 | .globl auto_irqhandler_fixup | 49 | .globl auto_irqhandler_fixup |
| 50 | .globl user_irqvec_fixup | 50 | .globl user_irqvec_fixup |
| 51 | 51 | ||
| @@ -275,8 +275,6 @@ do_delayed_trace: | |||
| 275 | ENTRY(auto_inthandler) | 275 | ENTRY(auto_inthandler) |
| 276 | SAVE_ALL_INT | 276 | SAVE_ALL_INT |
| 277 | GET_CURRENT(%d0) | 277 | GET_CURRENT(%d0) |
| 278 | movel %d0,%a1 | ||
| 279 | addqb #1,%a1@(TINFO_PREEMPT+1) | ||
| 280 | | put exception # in d0 | 278 | | put exception # in d0 |
| 281 | bfextu %sp@(PT_OFF_FORMATVEC){#4,#10},%d0 | 279 | bfextu %sp@(PT_OFF_FORMATVEC){#4,#10},%d0 |
| 282 | subw #VEC_SPUR,%d0 | 280 | subw #VEC_SPUR,%d0 |
| @@ -286,32 +284,13 @@ ENTRY(auto_inthandler) | |||
| 286 | auto_irqhandler_fixup = . + 2 | 284 | auto_irqhandler_fixup = . + 2 |
| 287 | jsr do_IRQ | process the IRQ | 285 | jsr do_IRQ | process the IRQ |
| 288 | addql #8,%sp | pop parameters off stack | 286 | addql #8,%sp | pop parameters off stack |
| 289 | 287 | jra ret_from_exception | |
| 290 | ret_from_interrupt: | ||
| 291 | movel %curptr@(TASK_STACK),%a1 | ||
| 292 | subqb #1,%a1@(TINFO_PREEMPT+1) | ||
| 293 | jeq ret_from_last_interrupt | ||
| 294 | 2: RESTORE_ALL | ||
| 295 | |||
| 296 | ALIGN | ||
| 297 | ret_from_last_interrupt: | ||
| 298 | moveq #(~ALLOWINT>>8)&0xff,%d0 | ||
| 299 | andb %sp@(PT_OFF_SR),%d0 | ||
| 300 | jne 2b | ||
| 301 | |||
| 302 | /* check if we need to do software interrupts */ | ||
| 303 | tstl irq_stat+CPUSTAT_SOFTIRQ_PENDING | ||
| 304 | jeq .Lret_from_exception | ||
| 305 | pea ret_from_exception | ||
| 306 | jra do_softirq | ||
| 307 | 288 | ||
| 308 | /* Handler for user defined interrupt vectors */ | 289 | /* Handler for user defined interrupt vectors */ |
| 309 | 290 | ||
| 310 | ENTRY(user_inthandler) | 291 | ENTRY(user_inthandler) |
| 311 | SAVE_ALL_INT | 292 | SAVE_ALL_INT |
| 312 | GET_CURRENT(%d0) | 293 | GET_CURRENT(%d0) |
| 313 | movel %d0,%a1 | ||
| 314 | addqb #1,%a1@(TINFO_PREEMPT+1) | ||
| 315 | | put exception # in d0 | 294 | | put exception # in d0 |
| 316 | bfextu %sp@(PT_OFF_FORMATVEC){#4,#10},%d0 | 295 | bfextu %sp@(PT_OFF_FORMATVEC){#4,#10},%d0 |
| 317 | user_irqvec_fixup = . + 2 | 296 | user_irqvec_fixup = . + 2 |
| @@ -321,29 +300,18 @@ user_irqvec_fixup = . + 2 | |||
| 321 | movel %d0,%sp@- | put vector # on stack | 300 | movel %d0,%sp@- | put vector # on stack |
| 322 | jsr do_IRQ | process the IRQ | 301 | jsr do_IRQ | process the IRQ |
| 323 | addql #8,%sp | pop parameters off stack | 302 | addql #8,%sp | pop parameters off stack |
| 324 | 303 | jra ret_from_exception | |
| 325 | movel %curptr@(TASK_STACK),%a1 | ||
| 326 | subqb #1,%a1@(TINFO_PREEMPT+1) | ||
| 327 | jeq ret_from_last_interrupt | ||
| 328 | RESTORE_ALL | ||
| 329 | 304 | ||
| 330 | /* Handler for uninitialized and spurious interrupts */ | 305 | /* Handler for uninitialized and spurious interrupts */ |
| 331 | 306 | ||
| 332 | ENTRY(bad_inthandler) | 307 | ENTRY(bad_inthandler) |
| 333 | SAVE_ALL_INT | 308 | SAVE_ALL_INT |
| 334 | GET_CURRENT(%d0) | 309 | GET_CURRENT(%d0) |
| 335 | movel %d0,%a1 | ||
| 336 | addqb #1,%a1@(TINFO_PREEMPT+1) | ||
| 337 | 310 | ||
| 338 | movel %sp,%sp@- | 311 | movel %sp,%sp@- |
| 339 | jsr handle_badint | 312 | jsr handle_badint |
| 340 | addql #4,%sp | 313 | addql #4,%sp |
| 341 | 314 | jra ret_from_exception | |
| 342 | movel %curptr@(TASK_STACK),%a1 | ||
| 343 | subqb #1,%a1@(TINFO_PREEMPT+1) | ||
| 344 | jeq ret_from_last_interrupt | ||
| 345 | RESTORE_ALL | ||
| 346 | |||
| 347 | 315 | ||
| 348 | resume: | 316 | resume: |
| 349 | /* | 317 | /* |
