aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/kernel/ivt.S
diff options
context:
space:
mode:
authorDavid Mosberger-Tang <davidm@hpl.hp.com>2005-04-28 00:17:03 -0400
committerTony Luck <tony.luck@intel.com>2005-04-28 00:17:03 -0400
commit060561ff79b01eea58e6d72abfb8e7580ff21f2a (patch)
tree7c3f95456480d3c6b44842df5a7619be98f2e14d /arch/ia64/kernel/ivt.S
parent96e017495e6833adcbad84783e3c5eb685836bbf (diff)
[IA64] In syscall-entry, use st8 instead of stf8 to clear pt_regs.r8
Using stf8 seemed like a clever idea at the time, but stf8 forces the cache-line to be invalidated in the L1D (if it happens to be there already). This patch eliminates a guaranteed L1D cache-miss and, by itself, is good for a 1-2 cycle improvement for heavy-weight syscalls. Signed-off-by: David Mosberger-Tang <davidm@hpl.hp.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64/kernel/ivt.S')
-rw-r--r--arch/ia64/kernel/ivt.S6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/ia64/kernel/ivt.S b/arch/ia64/kernel/ivt.S
index d9c05d53435b..dc78c356ddd0 100644
--- a/arch/ia64/kernel/ivt.S
+++ b/arch/ia64/kernel/ivt.S
@@ -1,7 +1,7 @@
1/* 1/*
2 * arch/ia64/kernel/ivt.S 2 * arch/ia64/kernel/ivt.S
3 * 3 *
4 * Copyright (C) 1998-2001, 2003 Hewlett-Packard Co 4 * Copyright (C) 1998-2001, 2003, 2005 Hewlett-Packard Co
5 * Stephane Eranian <eranian@hpl.hp.com> 5 * Stephane Eranian <eranian@hpl.hp.com>
6 * David Mosberger <davidm@hpl.hp.com> 6 * David Mosberger <davidm@hpl.hp.com>
7 * Copyright (C) 2000, 2002-2003 Intel Co 7 * Copyright (C) 2000, 2002-2003 Intel Co
@@ -918,7 +918,7 @@ GLOBAL_ENTRY(ia64_syscall_setup)
918 tnat.nz p14,p0=in6 918 tnat.nz p14,p0=in6
919 cmp.lt p10,p9=r11,r8 // frame size can't be more than local+8 919 cmp.lt p10,p9=r11,r8 // frame size can't be more than local+8
920 ;; 920 ;;
921 stf8 [r16]=f1 // ensure pt_regs.r8 != 0 (see handle_syscall_error) 921 mov r8=1
922(p9) tnat.nz p10,p0=r15 922(p9) tnat.nz p10,p0=r15
923 adds r12=-16,r1 // switch to kernel memory stack (with 16 bytes of scratch) 923 adds r12=-16,r1 // switch to kernel memory stack (with 16 bytes of scratch)
924 924
@@ -929,9 +929,9 @@ GLOBAL_ENTRY(ia64_syscall_setup)
929 mov r13=r2 // establish `current' 929 mov r13=r2 // establish `current'
930 movl r1=__gp // establish kernel global pointer 930 movl r1=__gp // establish kernel global pointer
931 ;; 931 ;;
932 st8 [r16]=r8 // ensure pt_regs.r8 != 0 (see handle_syscall_error)
932(p14) mov in6=-1 933(p14) mov in6=-1
933(p8) mov in7=-1 934(p8) mov in7=-1
934 nop.i 0
935 935
936 cmp.eq pSys,pNonSys=r0,r0 // set pSys=1, pNonSys=0 936 cmp.eq pSys,pNonSys=r0,r0 // set pSys=1, pNonSys=0
937 movl r17=FPSR_DEFAULT 937 movl r17=FPSR_DEFAULT