diff options
| -rw-r--r-- | arch/s390/kernel/entry.S | 12 | ||||
| -rw-r--r-- | arch/s390/kernel/entry64.S | 12 |
2 files changed, 20 insertions, 4 deletions
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S index d5e3e6007447..bea9ee37ac9d 100644 --- a/arch/s390/kernel/entry.S +++ b/arch/s390/kernel/entry.S | |||
| @@ -535,8 +535,16 @@ pgm_no_vtime2: | |||
| 535 | l %r3,__LC_PGM_ILC # load program interruption code | 535 | l %r3,__LC_PGM_ILC # load program interruption code |
| 536 | la %r8,0x7f | 536 | la %r8,0x7f |
| 537 | nr %r8,%r3 # clear per-event-bit and ilc | 537 | nr %r8,%r3 # clear per-event-bit and ilc |
| 538 | be BASED(pgm_exit) # only per or per+check ? | 538 | be BASED(pgm_exit2) # only per or per+check ? |
| 539 | b BASED(pgm_do_call) | 539 | l %r7,BASED(.Ljump_table) |
| 540 | sll %r8,2 | ||
| 541 | l %r7,0(%r8,%r7) # load address of handler routine | ||
| 542 | la %r2,SP_PTREGS(%r15) # address of register-save area | ||
| 543 | basr %r14,%r7 # branch to interrupt-handler | ||
| 544 | pgm_exit2: | ||
| 545 | TRACE_IRQS_ON | ||
| 546 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts | ||
| 547 | b BASED(sysc_return) | ||
| 540 | 548 | ||
| 541 | # | 549 | # |
| 542 | # it was a single stepped SVC that is causing all the trouble | 550 | # it was a single stepped SVC that is causing all the trouble |
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S index e7192e1cb678..8bccec15ea90 100644 --- a/arch/s390/kernel/entry64.S +++ b/arch/s390/kernel/entry64.S | |||
| @@ -544,8 +544,16 @@ pgm_no_vtime2: | |||
| 544 | lgf %r3,__LC_PGM_ILC # load program interruption code | 544 | lgf %r3,__LC_PGM_ILC # load program interruption code |
| 545 | lghi %r8,0x7f | 545 | lghi %r8,0x7f |
| 546 | ngr %r8,%r3 # clear per-event-bit and ilc | 546 | ngr %r8,%r3 # clear per-event-bit and ilc |
| 547 | je pgm_exit | 547 | je pgm_exit2 |
| 548 | j pgm_do_call | 548 | sll %r8,3 |
| 549 | larl %r1,pgm_check_table | ||
| 550 | lg %r1,0(%r8,%r1) # load address of handler routine | ||
| 551 | la %r2,SP_PTREGS(%r15) # address of register-save area | ||
| 552 | basr %r14,%r1 # branch to interrupt-handler | ||
| 553 | pgm_exit2: | ||
| 554 | TRACE_IRQS_ON | ||
| 555 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts | ||
| 556 | j sysc_return | ||
| 549 | 557 | ||
| 550 | # | 558 | # |
| 551 | # it was a single stepped SVC that is causing all the trouble | 559 | # it was a single stepped SVC that is causing all the trouble |
