aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHelge Deller <deller@gmx.de>2007-01-09 13:57:38 -0500
committerKyle McMartin <kyle@athena.road.mcmartin.ca>2007-02-17 01:06:32 -0500
commit3fe4c55ebc440159c49efe2e9464ac301b390913 (patch)
treeb1a27aa4fbc5cf03be658d636c39affb5f2a2f25
parent4650f0a5832033c78690811aa9b171764c11fc0f (diff)
[PARISC] use less assembler statements in syscall path
Signed-off-by: Helge Deller <deller@gmx.de> Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
-rw-r--r--arch/parisc/kernel/entry.S13
1 files changed, 5 insertions, 8 deletions
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
index f965673e6863..67dda1b0d6da 100644
--- a/arch/parisc/kernel/entry.S
+++ b/arch/parisc/kernel/entry.S
@@ -983,7 +983,7 @@ intr_check_sig:
983 /* As above */ 983 /* As above */
984 mfctl %cr30,%r1 984 mfctl %cr30,%r1
985 LDREG TI_FLAGS(%r1),%r19 985 LDREG TI_FLAGS(%r1),%r19
986 load32 (_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK), %r20 986 ldi (_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK), %r20
987 and,COND(<>) %r19, %r20, %r0 987 and,COND(<>) %r19, %r20, %r0
988 b,n intr_restore /* skip past if we've nothing to do */ 988 b,n intr_restore /* skip past if we've nothing to do */
989 989
@@ -995,11 +995,9 @@ intr_check_sig:
995 * Only do signals if we are returning to user space 995 * Only do signals if we are returning to user space
996 */ 996 */
997 LDREG PT_IASQ0(%r16), %r20 997 LDREG PT_IASQ0(%r16), %r20
998 CMPIB= 0,%r20,intr_restore /* backward */ 998 CMPIB=,n 0,%r20,intr_restore /* backward */
999 nop
1000 LDREG PT_IASQ1(%r16), %r20 999 LDREG PT_IASQ1(%r16), %r20
1001 CMPIB= 0,%r20,intr_restore /* backward */ 1000 CMPIB=,n 0,%r20,intr_restore /* backward */
1002 nop
1003 1001
1004 copy %r0, %r25 /* long in_syscall = 0 */ 1002 copy %r0, %r25 /* long in_syscall = 0 */
1005#ifdef CONFIG_64BIT 1003#ifdef CONFIG_64BIT
@@ -1009,8 +1007,7 @@ intr_check_sig:
1009 BL do_notify_resume,%r2 1007 BL do_notify_resume,%r2
1010 copy %r16, %r26 /* struct pt_regs *regs */ 1008 copy %r16, %r26 /* struct pt_regs *regs */
1011 1009
1012 b intr_check_sig 1010 b,n intr_check_sig
1013 nop
1014 1011
1015intr_restore: 1012intr_restore:
1016 copy %r16,%r29 1013 copy %r16,%r29
@@ -2091,7 +2088,7 @@ syscall_check_resched:
2091 .import do_signal,code 2088 .import do_signal,code
2092syscall_check_sig: 2089syscall_check_sig:
2093 LDREG TI_FLAGS-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r19 2090 LDREG TI_FLAGS-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r19
2094 load32 (_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK), %r26 2091 ldi (_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK), %r26
2095 and,COND(<>) %r19, %r26, %r0 2092 and,COND(<>) %r19, %r26, %r0
2096 b,n syscall_restore /* skip past if we've nothing to do */ 2093 b,n syscall_restore /* skip past if we've nothing to do */
2097 2094