Module Name: src
Committed By: matt
Date: Sat Sep 5 03:25:07 UTC 2009
Modified Files:
src/sys/arch/mips/mips [matt-nb5-mips64]: mipsX_subr.S
Log Message:
More LP64 cleanup.
To generate a diff of this commit:
cvs rdiff -u -r1.26.36.1.2.5 -r1.26.36.1.2.6 \
src/sys/arch/mips/mips/mipsX_subr.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/mips/mips/mipsX_subr.S
diff -u src/sys/arch/mips/mips/mipsX_subr.S:1.26.36.1.2.5 src/sys/arch/mips/mips/mipsX_subr.S:1.26.36.1.2.6
--- src/sys/arch/mips/mips/mipsX_subr.S:1.26.36.1.2.5 Wed Sep 2 15:56:52 2009
+++ src/sys/arch/mips/mips/mipsX_subr.S Sat Sep 5 03:25:07 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: mipsX_subr.S,v 1.26.36.1.2.5 2009/09/02 15:56:52 matt Exp $ */
+/* $NetBSD: mipsX_subr.S,v 1.26.36.1.2.6 2009/09/05 03:25:07 matt Exp $ */
/*
* Copyright 2002 Wasabi Systems, Inc.
@@ -306,34 +306,34 @@
*/
VECTOR(MIPSX(TLBMiss), unknown)
.set noat
- mfc0 k0, MIPS_COP_0_BAD_VADDR #00: k0=bad address
+ _MFC0 k0, MIPS_COP_0_BAD_VADDR #00: k0=bad address
lui k1, %hi(segbase) #01: k1=hi of segbase
bltz k0, 4f #02: k0<0 -> 4f (kernel fault)
- srl k0, (2*PGSHIFT-2-PTR_SCALESHIFT)#03: k0=seg offset (almost)
+ PTR_SRL k0, (2*PGSHIFT-2-PTR_SCALESHIFT)#03: k0=seg offset (almost)
PTR_L k1, %lo(segbase)(k1) #04: k1=segment tab base
andi k0, k0, (NBPG-(1<<PTR_SCALESHIFT))#05: k0=seg offset (mask 0x3)
PTR_ADDU k1, k0, k1 #06: k1=seg entry address
PTR_L k1, 0(k1) #07: k1=seg entry
- mfc0 k0, MIPS_COP_0_BAD_VADDR #08: k0=bad address (again)
+ _MFC0 k0, MIPS_COP_0_BAD_VADDR #08: k0=bad address (again)
beq k1, zero, 5f #09: ==0 -- no page table
- srl k0, (PGSHIFT-2) #0a: k0=VPN (aka va>>10)
+ PTR_SRL k0, (PGSHIFT-2) #0a: k0=VPN (aka va>>10)
andi k0, k0, (NBPG-8) #0b: k0=page tab offset
PTR_ADDU k1, k1, k0 #0c: k1=pte address
INT_L k0, 0(k1) #0d: k0=lo0 pte
INT_L k1, 4(k1) #0e: k1=lo1 pte
- sll k0, 2 #0f: chop top 2 bits (part 1a)
- srl k0, 2 #10: chop top 2 bits (part 1b)
+ PTR_SLL k0, 2 #0f: chop top 2 bits (part 1a)
+ PTR_SRL k0, 2 #10: chop top 2 bits (part 1b)
#ifdef MIPS3_5900
mtc0 k0, MIPS_COP_0_TLB_LO0 #11: lo0 is loaded
sync.p #12: R5900 cop0 hazard
- sll k1, 2 #13: chop top 2 bits (part 2a)
- srl k1, 2 #14: chop top 2 bits (part 2b)
+ PTR_SLL k1, 2 #13: chop top 2 bits (part 2a)
+ PTR_SRL k1, 2 #14: chop top 2 bits (part 2b)
mtc0 k1, MIPS_COP_0_TLB_LO1 #15: lo1 is loaded
sync.p #16: R5900 cop0 hazard
#else /* MIPS3_5900 */
mtc0 k0, MIPS_COP_0_TLB_LO0 #11: lo0 is loaded
- sll k1, 2 #12: chop top 2 bits (part 2a)
- srl k1, 2 #13: chop top 2 bits (part 2b)
+ PTR_SLL k1, 2 #12: chop top 2 bits (part 2a)
+ PTR_SRL k1, 2 #13: chop top 2 bits (part 2b)
mtc0 k1, MIPS_COP_0_TLB_LO1 #14: lo1 is loaded
nop #15: standard nop
nop #16: extra nop for QED5230
@@ -371,23 +371,23 @@
dmfc0 k0, MIPS_COP_0_BAD_VADDR #00: k0=bad address
lui k1, %hi(segbase) #01: k1=hi of segbase
bltz k0, 4f #02: k0<0 -> 4f (kernel fault)
- srl k0, 2*PGSHIFT-2-PTR_SCALESHIFT #03: k0=seg offset (almost)
+ PTR_SRL k0, 2*PGSHIFT-2-PTR_SCALESHIFT #03: k0=seg offset (almost)
PTR_L k1, %lo(segbase)(k1) #04: k1=segment tab base
andi k0, NBPG-(1<<PTR_SCALESHIFT) #05: k0=seg offset (mask 0x3)
PTR_ADDU k1, k0, k1 #06: k1=seg entry address
PTR_L k1, 0(k1) #07: k1=seg entry
dmfc0 k0, MIPS_COP_0_BAD_VADDR #08: k0=bad address (again)
beq k1, zero, 5f #09: ==0 -- no page table
- srl k0, (PGSHIFT-2) #0a: k0=VPN (aka va>>10)
+ PTR_SRL k0, (PGSHIFT-2) #0a: k0=VPN (aka va>>10)
andi k0, k0, (NBPG-8) #0b: k0=page tab offset
PTR_ADDU k1, k1, k0 #0c: k1=pte address
INT_L k0, 0(k1) #0d: k0=lo0 pte
INT_L k1, 4(k1) #0e: k1=lo1 pte
- sll k0, 2 #0f: chop top 2 bits (part 1a)
- srl k0, 2 #10: chop top 2 bits (part 1b)
+ PTR_SLL k0, 2 #0f: chop top 2 bits (part 1a)
+ PTR_SRL k0, 2 #10: chop top 2 bits (part 1b)
mtc0 k0, MIPS_COP_0_TLB_LO0 #11: lo0 is loaded
- sll k1, 2 #12: chop top 2 bits (part 2a)
- srl k1, 2 #13: chop top 2 bits (part 2b)
+ PTR_SLL k1, 2 #12: chop top 2 bits (part 2a)
+ PTR_SRL k1, 2 #13: chop top 2 bits (part 2b)
mtc0 k1, MIPS_COP_0_TLB_LO1 #14: lo1 is loaded
nop #15: standard nop
nop #16: extra nop for QED5230
@@ -452,18 +452,21 @@
sll k0, k0, 3 #03: shift user bit for cause index
and k1, k1, MIPS3_CR_EXC_CODE #04: mask out the cause bits.
or k1, k1, k0 #05: change index to user table
+#ifdef _LP64
+ PTR_SLL k1, k1, 1
+#endif
1:
PTR_LA k0, MIPSX(excpt_sw) #06: get base of the jump table
- addu k0, k0, k1 #07: get the address of the
+ PTR_ADDU k0, k0, k1 #08: get the address of the
# function entry. Note that
# the cause is already
# shifted left by 2 bits so
# we dont have to shift.
- PTR_L k0, 0(k0) #08: get the function address
+ PTR_L k0, 0(k0) #09: get the function address
#nop # -slip-
- j k0 #09: jump to the function
- nop #0a: branch delay slot
+ j k0 #0a: jump to the function
+ nop #0b: branch delay slot
.set at
_VECTOR_END(MIPSX(exception))
@@ -1443,16 +1446,16 @@
_MFC0 k0, MIPS_COP_0_BAD_VADDR # get the fault address
li k1, VM_MIN_KERNEL_ADDRESS # compute index
bgez k0, _C_LABEL(MIPSX(KernGenException)) # full trap processing
- subu k0, k0, k1
+ PTR_SUBU k0, k0, k1
INT_L k1, _C_LABEL(Sysmapsize) # index within range?
- srl k0, k0, PGSHIFT
+ PTR_SRL k0, k0, PGSHIFT
sltu k1, k0, k1
- beq k1, zero, outofworld # No. Failing beyond. . .
+ beq k1, zero, MIPSX(outofworld) # No. Failing beyond. . .
nop # - delay slot -
PTR_L k1, _C_LABEL(Sysmap)
- sll k0, k0, 2 # compute offset from index
- addu k1, k1, k0
+ PTR_SLL k0, k0, 2 # compute offset from index
+ PTR_ADDU k1, k1, k0
tlbp # Probe the invalid entry
COP0_SYNC
and k0, k0, 4 # check even/odd page
@@ -1462,7 +1465,7 @@
mfc0 k0, MIPS_COP_0_TLB_INDEX
nop
- bltz k0, outofworld # ASSERT(TLB entry exists)
+ bltz k0, MIPSX(outofworld) # ASSERT(TLB entry exists)
INT_L k0, 0(k1) # get PTE entry
_SLL k0, k0, WIRED_SHIFT # get rid of "wired" bit
@@ -1494,7 +1497,7 @@
KernTLBIOdd:
mfc0 k0, MIPS_COP_0_TLB_INDEX
nop
- bltz k0, outofworld # assert(TLB Entry exists)
+ bltz k0, MIPSX(outofworld) # assert(TLB Entry exists)
INT_L k0, 0(k1) # get PTE entry
_SLL k0, k0, WIRED_SHIFT # get rid of wired bit
@@ -1556,7 +1559,7 @@
nop # - delay slot -
1:
#else
- beq k1, zero, outofworld # No. Failing beyond. . .
+ beq k1, zero, MIPSX(outofworld) # No. Failing beyond. . .
nop # - delay slot -
#endif
PTR_L k1, _C_LABEL(Sysmap)
@@ -1584,7 +1587,7 @@
nop
eret
-outofworld:
+MIPSX(outofworld):
/* eret to panic so shutdown can use K2. Try to ensure valid $sp. */
PTR_LA a0, _C_LABEL(panic)
_MFC0 a2, MIPS_COP_0_EXC_PC
@@ -1890,7 +1893,7 @@
PTR_LA k1, VCED_count # count number of exceptions
PTR_SRL k0, k0, 26 # position upper 4 bits of VA
and k0, k0, 0x3c # mask it off
- add k1, k0 # get address of count table
+ PTR_ADDU k1, k0 # get address of count table
LONG_L k0, 0(k1)
LONG_ADDU k0, 1
LONG_S k0, 0(k1)
@@ -1925,9 +1928,9 @@
PTR_LA k1, VCEI_count # count number of exceptions
PTR_SRL k0, k0, 26 # position upper 4 bits of VA
and k0, k0, 0x3c # mask it off
- add k1, k0 # get address of count table
+ PTR_ADDU k1, k0 # get address of count table
LONG_L k0, 0(k1)
- addu k0, 1
+ PTR_ADDU k0, 1
LONG_S k0, 0(k1)
#endif
eret
@@ -2159,8 +2162,8 @@
#nop # -slip-
bltz v0, 1f # index < 0 then skip
li t1, MIPS_KSEG0_START # invalid address
- sll v0, v0, PGSHIFT + 1 # PAGE_SHIFT + 1
- addu t1, t1, v0
+ PTR_SLL v0, v0, PGSHIFT + 1 # PAGE_SHIFT + 1
+ PTR_ADDU t1, t1, v0
_MTC0 t1, MIPS_COP_0_TLB_HI # make entryHi invalid
COP0_SYNC
_MTC0 zero, MIPS_COP_0_TLB_LO0 # zero out entryLo0
@@ -2225,7 +2228,7 @@
_MFC0 a0, MIPS_COP_0_TLB_LO1
and a0, a0, MIPS3_PG_G # check to see it has G bit
bnez a0, 2f
- addu ta0, ta0, v0
+ PTR_ADDU ta0, ta0, v0
_MTC0 ta0, MIPS_COP_0_TLB_HI # make entryHi invalid
COP0_SYNC