diff options
Diffstat (limited to 'arch/s390/kernel/entry.S')
-rw-r--r-- | arch/s390/kernel/entry.S | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S index be7a408be7a1..5ca70b4b72cb 100644 --- a/arch/s390/kernel/entry.S +++ b/arch/s390/kernel/entry.S | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <asm/unistd.h> | 18 | #include <asm/unistd.h> |
19 | #include <asm/page.h> | 19 | #include <asm/page.h> |
20 | #include <asm/sigp.h> | 20 | #include <asm/sigp.h> |
21 | #include <asm/irq.h> | ||
21 | 22 | ||
22 | __PT_R0 = __PT_GPRS | 23 | __PT_R0 = __PT_GPRS |
23 | __PT_R1 = __PT_GPRS + 4 | 24 | __PT_R1 = __PT_GPRS + 4 |
@@ -435,6 +436,11 @@ io_skip: | |||
435 | io_loop: | 436 | io_loop: |
436 | l %r1,BASED(.Ldo_IRQ) | 437 | l %r1,BASED(.Ldo_IRQ) |
437 | lr %r2,%r11 # pass pointer to pt_regs | 438 | lr %r2,%r11 # pass pointer to pt_regs |
439 | lhi %r3,IO_INTERRUPT | ||
440 | tm __PT_INT_CODE+8(%r11),0x80 # adapter interrupt ? | ||
441 | jz io_call | ||
442 | lhi %r3,THIN_INTERRUPT | ||
443 | io_call: | ||
438 | basr %r14,%r1 # call do_IRQ | 444 | basr %r14,%r1 # call do_IRQ |
439 | tm __LC_MACHINE_FLAGS+2,0x10 # MACHINE_FLAG_LPAR | 445 | tm __LC_MACHINE_FLAGS+2,0x10 # MACHINE_FLAG_LPAR |
440 | jz io_return | 446 | jz io_return |
@@ -584,9 +590,10 @@ ext_skip: | |||
584 | mvc __PT_INT_CODE(4,%r11),__LC_EXT_CPU_ADDR | 590 | mvc __PT_INT_CODE(4,%r11),__LC_EXT_CPU_ADDR |
585 | mvc __PT_INT_PARM(4,%r11),__LC_EXT_PARAMS | 591 | mvc __PT_INT_PARM(4,%r11),__LC_EXT_PARAMS |
586 | TRACE_IRQS_OFF | 592 | TRACE_IRQS_OFF |
593 | l %r1,BASED(.Ldo_IRQ) | ||
587 | lr %r2,%r11 # pass pointer to pt_regs | 594 | lr %r2,%r11 # pass pointer to pt_regs |
588 | l %r1,BASED(.Ldo_extint) | 595 | lhi %r3,EXT_INTERRUPT |
589 | basr %r14,%r1 # call do_extint | 596 | basr %r14,%r1 # call do_IRQ |
590 | j io_return | 597 | j io_return |
591 | 598 | ||
592 | /* | 599 | /* |
@@ -902,7 +909,6 @@ cleanup_idle_wait: | |||
902 | .Ldo_machine_check: .long s390_do_machine_check | 909 | .Ldo_machine_check: .long s390_do_machine_check |
903 | .Lhandle_mcck: .long s390_handle_mcck | 910 | .Lhandle_mcck: .long s390_handle_mcck |
904 | .Ldo_IRQ: .long do_IRQ | 911 | .Ldo_IRQ: .long do_IRQ |
905 | .Ldo_extint: .long do_extint | ||
906 | .Ldo_signal: .long do_signal | 912 | .Ldo_signal: .long do_signal |
907 | .Ldo_notify_resume: .long do_notify_resume | 913 | .Ldo_notify_resume: .long do_notify_resume |
908 | .Ldo_per_trap: .long do_per_trap | 914 | .Ldo_per_trap: .long do_per_trap |