Loading arch/ia64/include/asm/native/inst.h +5 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,11 @@ #define RSM_PSR_DT \ rsm psr.dt #define RSM_PSR_BE_I(clob0, clob1) \ rsm psr.be | psr.i \ CLOBBER(clob0) \ CLOBBER(clob1) #define SSM_PSR_DT_AND_SRLZ_I \ ssm psr.dt \ ;; \ Loading arch/ia64/include/asm/native/pvchk_inst.h +3 −0 Original line number Diff line number Diff line Loading @@ -251,6 +251,9 @@ IS_RREG_CLOB(clob2) #define RSM_PSR_DT \ nop 0 #define RSM_PSR_BE_I(clob0, clob1) \ IS_RREG_CLOB(clob0) \ IS_RREG_CLOB(clob1) #define SSM_PSR_DT_AND_SRLZ_I \ nop 0 #define BSW_0(clob0, clob1, clob2) \ Loading arch/ia64/kernel/gate.S +13 −4 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ #include <asm/sigcontext.h> #include <asm/system.h> #include <asm/unistd.h> #include "paravirt_inst.h" /* * We can't easily refer to symbols inside the kernel. To avoid full runtime relocation, Loading Loading @@ -323,7 +324,7 @@ GLOBAL_ENTRY(__kernel_syscall_via_epc) epc // B causes split-issue } ;; rsm psr.be | psr.i // M2 (5 cyc to srlz.d) RSM_PSR_BE_I(r20, r22) // M2 (5 cyc to srlz.d) LOAD_FSYSCALL_TABLE(r14) // X ;; mov r16=IA64_KR(CURRENT) // M2 (12 cyc) Loading @@ -331,7 +332,7 @@ GLOBAL_ENTRY(__kernel_syscall_via_epc) mov r19=NR_syscalls-1 // A ;; lfetch [r18] // M0|1 mov r29=psr // M2 (12 cyc) MOV_FROM_PSR(p0, r29, r8) // M2 (12 cyc) // If r17 is a NaT, p6 will be zero cmp.geu p6,p7=r19,r17 // A (sysnr > 0 && sysnr < 1024+NR_syscalls)? ;; Loading @@ -347,7 +348,7 @@ GLOBAL_ENTRY(__kernel_syscall_via_epc) (p6) tbit.z.unc p8,p0=r18,0 // I0 (dual-issues with "mov b7=r18"!) nop.i 0 ;; (p8) ssm psr.i SSM_PSR_I(p8, p14, r25) (p6) mov b7=r18 // I0 (p8) br.dptk.many b7 // B Loading @@ -368,9 +369,17 @@ GLOBAL_ENTRY(__kernel_syscall_via_epc) #else BRL_COND_FSYS_BUBBLE_DOWN(p6) #endif ssm psr.i SSM_PSR_I(p0, p14, r10) mov r10=-1 (p10) mov r8=EINVAL (p9) mov r8=ENOSYS FSYS_RETURN #ifdef CONFIG_PARAVIRT /* * padd to make the size of this symbol constant * independent of paravirtualization. */ .align PAGE_SIZE / 8 #endif END(__kernel_syscall_via_epc) Loading
arch/ia64/include/asm/native/inst.h +5 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,11 @@ #define RSM_PSR_DT \ rsm psr.dt #define RSM_PSR_BE_I(clob0, clob1) \ rsm psr.be | psr.i \ CLOBBER(clob0) \ CLOBBER(clob1) #define SSM_PSR_DT_AND_SRLZ_I \ ssm psr.dt \ ;; \ Loading
arch/ia64/include/asm/native/pvchk_inst.h +3 −0 Original line number Diff line number Diff line Loading @@ -251,6 +251,9 @@ IS_RREG_CLOB(clob2) #define RSM_PSR_DT \ nop 0 #define RSM_PSR_BE_I(clob0, clob1) \ IS_RREG_CLOB(clob0) \ IS_RREG_CLOB(clob1) #define SSM_PSR_DT_AND_SRLZ_I \ nop 0 #define BSW_0(clob0, clob1, clob2) \ Loading
arch/ia64/kernel/gate.S +13 −4 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ #include <asm/sigcontext.h> #include <asm/system.h> #include <asm/unistd.h> #include "paravirt_inst.h" /* * We can't easily refer to symbols inside the kernel. To avoid full runtime relocation, Loading Loading @@ -323,7 +324,7 @@ GLOBAL_ENTRY(__kernel_syscall_via_epc) epc // B causes split-issue } ;; rsm psr.be | psr.i // M2 (5 cyc to srlz.d) RSM_PSR_BE_I(r20, r22) // M2 (5 cyc to srlz.d) LOAD_FSYSCALL_TABLE(r14) // X ;; mov r16=IA64_KR(CURRENT) // M2 (12 cyc) Loading @@ -331,7 +332,7 @@ GLOBAL_ENTRY(__kernel_syscall_via_epc) mov r19=NR_syscalls-1 // A ;; lfetch [r18] // M0|1 mov r29=psr // M2 (12 cyc) MOV_FROM_PSR(p0, r29, r8) // M2 (12 cyc) // If r17 is a NaT, p6 will be zero cmp.geu p6,p7=r19,r17 // A (sysnr > 0 && sysnr < 1024+NR_syscalls)? ;; Loading @@ -347,7 +348,7 @@ GLOBAL_ENTRY(__kernel_syscall_via_epc) (p6) tbit.z.unc p8,p0=r18,0 // I0 (dual-issues with "mov b7=r18"!) nop.i 0 ;; (p8) ssm psr.i SSM_PSR_I(p8, p14, r25) (p6) mov b7=r18 // I0 (p8) br.dptk.many b7 // B Loading @@ -368,9 +369,17 @@ GLOBAL_ENTRY(__kernel_syscall_via_epc) #else BRL_COND_FSYS_BUBBLE_DOWN(p6) #endif ssm psr.i SSM_PSR_I(p0, p14, r10) mov r10=-1 (p10) mov r8=EINVAL (p9) mov r8=ENOSYS FSYS_RETURN #ifdef CONFIG_PARAVIRT /* * padd to make the size of this symbol constant * independent of paravirtualization. */ .align PAGE_SIZE / 8 #endif END(__kernel_syscall_via_epc)