diff options
Diffstat (limited to 'arch/s390/kernel/entry.S')
-rw-r--r-- | arch/s390/kernel/entry.S | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S index c2773cff89c3..3705700ed374 100644 --- a/arch/s390/kernel/entry.S +++ b/arch/s390/kernel/entry.S | |||
@@ -184,16 +184,16 @@ sysc_vtime: | |||
184 | stm %r0,%r7,__PT_R0(%r11) | 184 | stm %r0,%r7,__PT_R0(%r11) |
185 | mvc __PT_R8(32,%r11),__LC_SAVE_AREA_SYNC | 185 | mvc __PT_R8(32,%r11),__LC_SAVE_AREA_SYNC |
186 | mvc __PT_PSW(8,%r11),__LC_SVC_OLD_PSW | 186 | mvc __PT_PSW(8,%r11),__LC_SVC_OLD_PSW |
187 | mvc __PT_SVC_CODE(4,%r11),__LC_SVC_ILC | 187 | mvc __PT_INT_CODE(4,%r11),__LC_SVC_ILC |
188 | sysc_do_svc: | 188 | sysc_do_svc: |
189 | oi __TI_flags+3(%r12),_TIF_SYSCALL | 189 | oi __TI_flags+3(%r12),_TIF_SYSCALL |
190 | lh %r8,__PT_SVC_CODE+2(%r11) | 190 | lh %r8,__PT_INT_CODE+2(%r11) |
191 | sla %r8,2 # shift and test for svc0 | 191 | sla %r8,2 # shift and test for svc0 |
192 | jnz sysc_nr_ok | 192 | jnz sysc_nr_ok |
193 | # svc 0: system call number in %r1 | 193 | # svc 0: system call number in %r1 |
194 | cl %r1,BASED(.Lnr_syscalls) | 194 | cl %r1,BASED(.Lnr_syscalls) |
195 | jnl sysc_nr_ok | 195 | jnl sysc_nr_ok |
196 | sth %r1,__PT_SVC_CODE+2(%r11) | 196 | sth %r1,__PT_INT_CODE+2(%r11) |
197 | lr %r8,%r1 | 197 | lr %r8,%r1 |
198 | sla %r8,2 | 198 | sla %r8,2 |
199 | sysc_nr_ok: | 199 | sysc_nr_ok: |
@@ -266,9 +266,9 @@ sysc_sigpending: | |||
266 | jno sysc_return | 266 | jno sysc_return |
267 | lm %r2,%r7,__PT_R2(%r11) # load svc arguments | 267 | lm %r2,%r7,__PT_R2(%r11) # load svc arguments |
268 | xr %r8,%r8 # svc 0 returns -ENOSYS | 268 | xr %r8,%r8 # svc 0 returns -ENOSYS |
269 | clc __PT_SVC_CODE+2(2,%r11),BASED(.Lnr_syscalls+2) | 269 | clc __PT_INT_CODE+2(2,%r11),BASED(.Lnr_syscalls+2) |
270 | jnl sysc_nr_ok # invalid svc number -> do svc 0 | 270 | jnl sysc_nr_ok # invalid svc number -> do svc 0 |
271 | lh %r8,__PT_SVC_CODE+2(%r11) # load new svc number | 271 | lh %r8,__PT_INT_CODE+2(%r11) # load new svc number |
272 | sla %r8,2 | 272 | sla %r8,2 |
273 | j sysc_nr_ok # restart svc | 273 | j sysc_nr_ok # restart svc |
274 | 274 | ||
@@ -300,7 +300,7 @@ sysc_tracesys: | |||
300 | lr %r2,%r11 # pass pointer to pt_regs | 300 | lr %r2,%r11 # pass pointer to pt_regs |
301 | la %r3,0 | 301 | la %r3,0 |
302 | xr %r0,%r0 | 302 | xr %r0,%r0 |
303 | icm %r0,3,__PT_SVC_CODE+2(%r11) | 303 | icm %r0,3,__PT_INT_CODE+2(%r11) |
304 | st %r0,__PT_R2(%r11) | 304 | st %r0,__PT_R2(%r11) |
305 | basr %r14,%r1 # call do_syscall_trace_enter | 305 | basr %r14,%r1 # call do_syscall_trace_enter |
306 | cl %r2,BASED(.Lnr_syscalls) | 306 | cl %r2,BASED(.Lnr_syscalls) |
@@ -396,6 +396,8 @@ ENTRY(pgm_check_handler) | |||
396 | stm %r0,%r7,__PT_R0(%r11) | 396 | stm %r0,%r7,__PT_R0(%r11) |
397 | mvc __PT_R8(32,%r11),__LC_SAVE_AREA_SYNC | 397 | mvc __PT_R8(32,%r11),__LC_SAVE_AREA_SYNC |
398 | stm %r8,%r9,__PT_PSW(%r11) | 398 | stm %r8,%r9,__PT_PSW(%r11) |
399 | mvc __PT_INT_CODE(4,%r11),__LC_PGM_ILC | ||
400 | mvc __PT_INT_PARM_LONG(4,%r11),__LC_TRANS_EXC_CODE | ||
399 | tm __LC_PGM_ILC+3,0x80 # check for per exception | 401 | tm __LC_PGM_ILC+3,0x80 # check for per exception |
400 | jz 0f | 402 | jz 0f |
401 | l %r1,__TI_task(%r12) | 403 | l %r1,__TI_task(%r12) |
@@ -405,13 +407,11 @@ ENTRY(pgm_check_handler) | |||
405 | mvc __THREAD_per_address(4,%r1),__LC_PER_ADDRESS | 407 | mvc __THREAD_per_address(4,%r1),__LC_PER_ADDRESS |
406 | mvc __THREAD_per_cause(2,%r1),__LC_PER_CAUSE | 408 | mvc __THREAD_per_cause(2,%r1),__LC_PER_CAUSE |
407 | mvc __THREAD_per_paid(1,%r1),__LC_PER_PAID | 409 | mvc __THREAD_per_paid(1,%r1),__LC_PER_PAID |
408 | 0: l %r3,__LC_PGM_ILC # load program interruption code | 410 | 0: REENABLE_IRQS |
409 | l %r4,__LC_TRANS_EXC_CODE | ||
410 | REENABLE_IRQS | ||
411 | xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) | 411 | xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) |
412 | l %r1,BASED(.Ljump_table) | 412 | l %r1,BASED(.Ljump_table) |
413 | la %r10,0x7f | 413 | la %r10,0x7f |
414 | nr %r10,%r3 | 414 | n %r10,__PT_INT_CODE(%r11) |
415 | je sysc_return | 415 | je sysc_return |
416 | sll %r10,2 | 416 | sll %r10,2 |
417 | l %r1,0(%r10,%r1) # load address of handler routine | 417 | l %r1,0(%r10,%r1) # load address of handler routine |
@@ -858,7 +858,7 @@ cleanup_system_call: | |||
858 | mvc __PT_R8(32,%r15),__LC_SAVE_AREA_SYNC | 858 | mvc __PT_R8(32,%r15),__LC_SAVE_AREA_SYNC |
859 | stm %r0,%r7,__PT_R0(%r15) | 859 | stm %r0,%r7,__PT_R0(%r15) |
860 | mvc __PT_PSW(8,%r15),__LC_SVC_OLD_PSW | 860 | mvc __PT_PSW(8,%r15),__LC_SVC_OLD_PSW |
861 | mvc __PT_SVC_CODE(4,%r15),__LC_SVC_ILC | 861 | mvc __PT_INT_CODE(4,%r15),__LC_SVC_ILC |
862 | # setup saved register 15 | 862 | # setup saved register 15 |
863 | ahi %r15,-STACK_FRAME_OVERHEAD | 863 | ahi %r15,-STACK_FRAME_OVERHEAD |
864 | st %r15,28(%r11) # r15 stack pointer | 864 | st %r15,28(%r11) # r15 stack pointer |