aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/entry.S
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2010-10-25 10:10:40 -0400
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>2010-10-25 10:10:19 -0400
commitbaa071588c3ffcc1a8721faf9337140e85d34bf6 (patch)
tree5aefe1db8edbc3dfb956669e657368673ad601ef /arch/s390/kernel/entry.S
parent178514d7e3e8cfba087b3a208e22a54ce65e8f34 (diff)
[S390] cleanup system call parameter setup
Do the setup of the stack overflow argument for the sixth system call parameter right before the branch to the system call function. That simplifies the system call parameter access code. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/entry.S')
-rw-r--r--arch/s390/kernel/entry.S6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
index 736d7010629e..5efce7202984 100644
--- a/arch/s390/kernel/entry.S
+++ b/arch/s390/kernel/entry.S
@@ -254,12 +254,11 @@ sysc_do_svc:
254 bnl BASED(sysc_nr_ok) 254 bnl BASED(sysc_nr_ok)
255 lr %r7,%r1 # copy svc number to %r7 255 lr %r7,%r1 # copy svc number to %r7
256sysc_nr_ok: 256sysc_nr_ok:
257 mvc SP_ARGS(4,%r15),SP_R7(%r15)
258sysc_do_restart:
259 sth %r7,SP_SVCNR(%r15) 257 sth %r7,SP_SVCNR(%r15)
260 sll %r7,2 # svc number *4 258 sll %r7,2 # svc number *4
261 l %r8,BASED(.Lsysc_table) 259 l %r8,BASED(.Lsysc_table)
262 tm __TI_flags+2(%r9),_TIF_SYSCALL 260 tm __TI_flags+2(%r9),_TIF_SYSCALL
261 mvc SP_ARGS(4,%r15),SP_R7(%r15)
263 l %r8,0(%r7,%r8) # get system call addr. 262 l %r8,0(%r7,%r8) # get system call addr.
264 bnz BASED(sysc_tracesys) 263 bnz BASED(sysc_tracesys)
265 basr %r14,%r8 # call sys_xxxx 264 basr %r14,%r8 # call sys_xxxx
@@ -347,7 +346,7 @@ sysc_restart:
347 l %r7,SP_R2(%r15) # load new svc number 346 l %r7,SP_R2(%r15) # load new svc number
348 mvc SP_R2(4,%r15),SP_ORIG_R2(%r15) # restore first argument 347 mvc SP_R2(4,%r15),SP_ORIG_R2(%r15) # restore first argument
349 lm %r2,%r6,SP_R2(%r15) # load svc arguments 348 lm %r2,%r6,SP_R2(%r15) # load svc arguments
350 b BASED(sysc_do_restart) # restart svc 349 b BASED(sysc_nr_ok) # restart svc
351 350
352# 351#
353# _TIF_SINGLE_STEP is set, call do_single_step 352# _TIF_SINGLE_STEP is set, call do_single_step
@@ -380,6 +379,7 @@ sysc_tracesys:
380 l %r8,0(%r7,%r8) 379 l %r8,0(%r7,%r8)
381sysc_tracego: 380sysc_tracego:
382 lm %r3,%r6,SP_R3(%r15) 381 lm %r3,%r6,SP_R3(%r15)
382 mvc SP_ARGS(4,%r15),SP_R7(%r15)
383 l %r2,SP_ORIG_R2(%r15) 383 l %r2,SP_ORIG_R2(%r15)
384 basr %r14,%r8 # call sys_xxx 384 basr %r14,%r8 # call sys_xxx
385 st %r2,SP_R2(%r15) # store return value 385 st %r2,SP_R2(%r15) # store return value