diff options
-rw-r--r-- | arch/ia64/kernel/gate.S | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/arch/ia64/kernel/gate.S b/arch/ia64/kernel/gate.S index 272e64c0e21b..86948ce63e43 100644 --- a/arch/ia64/kernel/gate.S +++ b/arch/ia64/kernel/gate.S | |||
@@ -77,7 +77,7 @@ GLOBAL_ENTRY(__kernel_syscall_via_epc) | |||
77 | epc // B causes split-issue | 77 | epc // B causes split-issue |
78 | } | 78 | } |
79 | ;; | 79 | ;; |
80 | rsm psr.be // M2 (5 cyc to srlz.d) | 80 | rsm psr.be | psr.i // M2 (5 cyc to srlz.d) |
81 | LOAD_FSYSCALL_TABLE(r14) // X | 81 | LOAD_FSYSCALL_TABLE(r14) // X |
82 | ;; | 82 | ;; |
83 | mov r16=IA64_KR(CURRENT) // M2 (12 cyc) | 83 | mov r16=IA64_KR(CURRENT) // M2 (12 cyc) |
@@ -98,15 +98,14 @@ GLOBAL_ENTRY(__kernel_syscall_via_epc) | |||
98 | nop.i 0 | 98 | nop.i 0 |
99 | ;; | 99 | ;; |
100 | nop.m 0 | 100 | nop.m 0 |
101 | (p6) mov b7=r18 // I0 | ||
102 | (p6) tbit.z.unc p8,p0=r18,0 // I0 (dual-issues with "mov b7=r18"!) | 101 | (p6) tbit.z.unc p8,p0=r18,0 // I0 (dual-issues with "mov b7=r18"!) |
103 | |||
104 | nop.m 0 | ||
105 | nop.i 0 | 102 | nop.i 0 |
103 | ;; | ||
104 | (p8) ssm psr.i | ||
105 | (p6) mov b7=r18 // I0 | ||
106 | (p8) br.dptk.many b7 // B | 106 | (p8) br.dptk.many b7 // B |
107 | 107 | ||
108 | mov r27=ar.rsc // M2 (12 cyc) | 108 | mov r27=ar.rsc // M2 (12 cyc) |
109 | (p6) rsm psr.i // M2 | ||
110 | /* | 109 | /* |
111 | * brl.cond doesn't work as intended because the linker would convert this branch | 110 | * brl.cond doesn't work as intended because the linker would convert this branch |
112 | * into a branch to a PLT. Perhaps there will be a way to avoid this with some | 111 | * into a branch to a PLT. Perhaps there will be a way to avoid this with some |
@@ -123,7 +122,7 @@ GLOBAL_ENTRY(__kernel_syscall_via_epc) | |||
123 | #else | 122 | #else |
124 | BRL_COND_FSYS_BUBBLE_DOWN(p6) | 123 | BRL_COND_FSYS_BUBBLE_DOWN(p6) |
125 | #endif | 124 | #endif |
126 | 125 | ssm psr.i | |
127 | mov r10=-1 | 126 | mov r10=-1 |
128 | (p10) mov r8=EINVAL | 127 | (p10) mov r8=EINVAL |
129 | (p9) mov r8=ENOSYS | 128 | (p9) mov r8=ENOSYS |