patch-2.4.0-test5 linux/arch/ia64/kernel/ivt.S
Next file: linux/arch/ia64/kernel/mca.c
Previous file: linux/arch/ia64/kernel/irq.c
Back to the patch index
Back to the overall index
- Lines: 96
- Date:
Fri Jul 14 16:08:11 2000
- Orig file:
v2.4.0-test4/linux/arch/ia64/kernel/ivt.S
- Orig date:
Fri Jun 23 21:55:07 2000
diff -u --recursive --new-file v2.4.0-test4/linux/arch/ia64/kernel/ivt.S linux/arch/ia64/kernel/ivt.S
@@ -170,10 +170,11 @@
* The ITLB basically does the same as the VHPT handler except
* that we always insert exactly one instruction TLB entry.
*/
-#if 0
+#if 1
/*
- * This code works, but I don't want to enable it until I have numbers
- * that prove this to be a win.
+ * Attempt to lookup PTE through virtual linear page table.
+ * The speculative access will fail if there is no TLB entry
+ * for the L3 page table page we're trying to access.
*/
mov r31=pr // save predicates
;;
@@ -244,10 +245,11 @@
* that we always insert exactly one data TLB entry.
*/
mov r16=cr.ifa // get address that caused the TLB miss
-#if 0
+#if 1
/*
- * This code works, but I don't want to enable it until I have numbers
- * that prove this to be a win.
+ * Attempt to lookup PTE through virtual linear page table.
+ * The speculative access will fail if there is no TLB entry
+ * for the L3 page table page we're trying to access.
*/
mov r31=pr // save predicates
;;
@@ -568,7 +570,7 @@
mov r3=255
adds r15=-1024,r15 // r15 contains the syscall number---subtract 1024
- adds r2=IA64_TASK_FLAGS_OFFSET,r13 // r2 = ¤t->flags
+ adds r2=IA64_TASK_PTRACE_OFFSET,r13 // r2 = ¤t->ptrace
;;
cmp.geu.unc p6,p7=r3,r15 // (syscall > 0 && syscall <= 1024+255) ?
@@ -581,7 +583,7 @@
ld8 r16=[r16] // load address of syscall entry point
mov rp=r15 // set the real return addr
;;
- ld8 r2=[r2] // r2 = current->flags
+ ld8 r2=[r2] // r2 = current->ptrace
mov b6=r16
// arrange things so we skip over break instruction when returning:
@@ -590,7 +592,7 @@
adds r17=24,sp // get pointer to cr_iip
;;
ld8 r18=[r16] // fetch cr_ipsr
- tbit.z p8,p0=r2,5 // (current->flags & PF_TRACESYS) == 0?
+ tbit.z p8,p0=r2,PT_TRACESYS_BIT // (current->ptrace & PF_TRACESYS) == 0?
;;
ld8 r19=[r17] // fetch cr_iip
extr.u r20=r18,41,2 // extract ei field
@@ -686,7 +688,7 @@
SAVE_REST
;;
br.call.sptk.few rp=ia64_illegal_op_fault
- ;;
+.ret0: ;;
alloc r14=ar.pfs,0,0,3,0 // must be first in insn group
mov out0=r9
mov out1=r10
@@ -755,16 +757,16 @@
ld4 out5=[r14],8 // r13 == ebp
;;
ld4 out3=[r14],8 // r14 == esi
- adds r2=IA64_TASK_FLAGS_OFFSET,r13 // r2 = ¤t->flags
+ adds r2=IA64_TASK_PTRACE_OFFSET,r13 // r2 = ¤t->ptrace
;;
ld4 out4=[r14] // R15 == edi
movl r16=ia32_syscall_table
;;
(p6) shladd r16=r8,3,r16 // Force ni_syscall if not valid syscall number
- ld8 r2=[r2] // r2 = current->flags
+ ld8 r2=[r2] // r2 = current->ptrace
;;
ld8 r16=[r16]
- tbit.z p8,p0=r2,5 // (current->flags & PF_TRACESYS) == 0?
+ tbit.z p8,p0=r2,PT_TRACESYS_BIT // (current->ptrace & PT_TRACESYS) == 0?
;;
mov b6=r16
movl r15=ia32_ret_from_syscall
@@ -780,8 +782,7 @@
add out1=16,sp // pointer to pt_regs
;; // avoid WAW on CFM
br.call.sptk.few rp=ia32_bad_interrupt
- ;;
- movl r15=ia64_leave_kernel
+.ret1: movl r15=ia64_leave_kernel
;;
mov rp=r15
br.ret.sptk.many rp
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)