syscall.S (1809de7e7d37c585e01a1bcc583ea92b78fc759d) syscall.S (910cd32e552ea09caa89cdbe328e468979b030dd)
1/*
2 * Linux/PA-RISC Project (http://www.parisc-linux.org/)
3 *
4 * System call entry code / Linux gateway page
5 * Copyright (c) Matthew Wilcox 1999 <willy@bofh.ai>
6 * Licensed under the GNU GPL.
7 * thanks to Philipp Rumpf, Mike Shaver and various others
8 * sorry about the wall, puffin..

--- 315 unchanged lines hidden (view full) ---

324 * task->thread.regs.gr[20] above.
325 */
326 copy %ret0,%r20
327 ldil L%sys_call_table,%r1
328 ldo R%sys_call_table(%r1), %r19
329
330 ldo -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1 /* get task ptr */
331 LDREG TI_TASK(%r1), %r1
1/*
2 * Linux/PA-RISC Project (http://www.parisc-linux.org/)
3 *
4 * System call entry code / Linux gateway page
5 * Copyright (c) Matthew Wilcox 1999 <willy@bofh.ai>
6 * Licensed under the GNU GPL.
7 * thanks to Philipp Rumpf, Mike Shaver and various others
8 * sorry about the wall, puffin..

--- 315 unchanged lines hidden (view full) ---

324 * task->thread.regs.gr[20] above.
325 */
326 copy %ret0,%r20
327 ldil L%sys_call_table,%r1
328 ldo R%sys_call_table(%r1), %r19
329
330 ldo -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1 /* get task ptr */
331 LDREG TI_TASK(%r1), %r1
332 LDREG TASK_PT_GR28(%r1), %r28 /* Restore return value */
332 LDREG TASK_PT_GR26(%r1), %r26 /* Restore the users args */
333 LDREG TASK_PT_GR25(%r1), %r25
334 LDREG TASK_PT_GR24(%r1), %r24
335 LDREG TASK_PT_GR23(%r1), %r23
336 LDREG TASK_PT_GR22(%r1), %r22
337 LDREG TASK_PT_GR21(%r1), %r21
338#ifdef CONFIG_64BIT
339 ldo -16(%r30),%r29 /* Reference param save area */
340#else
341 stw %r22, -52(%r30) /* 5th argument */
342 stw %r21, -56(%r30) /* 6th argument */
343#endif
344
333 LDREG TASK_PT_GR26(%r1), %r26 /* Restore the users args */
334 LDREG TASK_PT_GR25(%r1), %r25
335 LDREG TASK_PT_GR24(%r1), %r24
336 LDREG TASK_PT_GR23(%r1), %r23
337 LDREG TASK_PT_GR22(%r1), %r22
338 LDREG TASK_PT_GR21(%r1), %r21
339#ifdef CONFIG_64BIT
340 ldo -16(%r30),%r29 /* Reference param save area */
341#else
342 stw %r22, -52(%r30) /* 5th argument */
343 stw %r21, -56(%r30) /* 6th argument */
344#endif
345
346 cmpib,COND(=),n -1,%r20,tracesys_exit /* seccomp may have returned -1 */
345 comiclr,>>= __NR_Linux_syscalls, %r20, %r0
346 b,n .Ltracesys_nosys
347
348 LDREGX %r20(%r19), %r19
349
350 /* If this is a sys_rt_sigreturn call, and the signal was received
351 * when not in_syscall, then we want to return via syscall_exit_rfi,
352 * not syscall_exit. Signal no. in r20, in_syscall in r25 (see

--- 596 unchanged lines hidden ---
347 comiclr,>>= __NR_Linux_syscalls, %r20, %r0
348 b,n .Ltracesys_nosys
349
350 LDREGX %r20(%r19), %r19
351
352 /* If this is a sys_rt_sigreturn call, and the signal was received
353 * when not in_syscall, then we want to return via syscall_exit_rfi,
354 * not syscall_exit. Signal no. in r20, in_syscall in r25 (see

--- 596 unchanged lines hidden ---