Date: Sun, 4 Apr 2010 23:33:44 +0000 (UTC) From: Juli Mallett <jmallett@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r206171 - user/jmallett/octeon/sys/mips/mips Message-ID: <201004042333.o34NXieS056440@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jmallett Date: Sun Apr 4 23:33:44 2010 New Revision: 206171 URL: http://svn.freebsd.org/changeset/base/206171 Log: o) Adjust bitmasks for PTE and page directory pages. o) Add hazards after mtc0s. Modified: user/jmallett/octeon/sys/mips/mips/exception.S Modified: user/jmallett/octeon/sys/mips/mips/exception.S ============================================================================== --- user/jmallett/octeon/sys/mips/mips/exception.S Sun Apr 4 23:19:11 2010 (r206170) +++ user/jmallett/octeon/sys/mips/mips/exception.S Sun Apr 4 23:33:44 2010 (r206171) @@ -136,20 +136,22 @@ MipsDoTLBMiss: PTR_L k1, PC_SEGBASE(k1) beqz k1, 2f #05: make sure segbase is not null #if defined(__mips_n64) - andi k0, k0, 0xff8 #06: k0=seg offset (mask 0x7) + andi k0, k0, 0x1ff8 #06: k0=seg offset (mask 0x7) #else - andi k0, k0, 0x7fc #06: k0=seg offset (mask 0x3) + andi k0, k0, 0x1ffc #06: k0=seg offset (mask 0x3) #endif PTR_ADDU k1, k0, k1 #07: k1=seg entry address + PTR_L k1, 0(k1) #08: k1=seg entry MFC0 k0, COP_0_BAD_VADDR #09: k0=bad address (again) beq k1, zero, 2f #0a: ==0 -- no page table srl k0, PAGE_SHIFT - 2 #0b: k0=VPN (aka va>>10) - andi k0, k0, 0xffc #0c: k0=page tab offset + andi k0, k0, 0x1ffc #0c: k0=page tab offset PTR_ADDU k1, k1, k0 #0d: k1=pte address lw k0, 0(k1) #0e: k0=lo0 pte CLEAR_PTE_SWBITS(k0) MTC0 k0, COP_0_TLB_LO0 #12: lo0 is loaded + HAZARD_DELAY addu k0, TLBLO_PFN_ODD MTC0 k0, COP_0_TLB_LO1 #15: lo1 is loaded HAZARD_DELAY @@ -836,7 +838,7 @@ NLEAF(MipsTLBInvalidException) #if defined(__mips_n64) andi k0, k0, 0x1ff8 # k0=seg offset (mask 0x7) #else - andi k0, k0, 0xffc # k0=seg offset (mask 0x3) + andi k0, k0, 0x1ffc # k0=seg offset (mask 0x3) #endif PTR_ADDU k1, k0, k1 # k1=seg entry address PTR_L k1, 0(k1) # k1=seg entry @@ -847,7 +849,7 @@ NLEAF(MipsTLBInvalidException) MFC0 k0, COP_0_BAD_VADDR # k0=bad address (again) PTR_SRL k0, PAGE_SHIFT - 2 # k0=VPN - andi k0, k0, 0xffc # k0=page tab offset + andi k0, k0, 0x1ffc # k0=page tab offset PTR_ADDU k1, k1, k0 # k1=pte address lw k0, 0(k1) # k0=this PTE @@ -859,8 +861,10 @@ NLEAF(MipsTLBInvalidException) lw k0, 0(k1) CLEAR_PTE_SWBITS(k0) MTC0 k0, COP_0_TLB_LO0 + HAZARD_DELAY addu k0, TLBLO_PFN_ODD MTC0 k0, COP_0_TLB_LO1 + HAZARD_DELAY tlbp HAZARD_DELAY @@ -986,18 +990,19 @@ NLEAF(MipsTLBMissException) #if defined(__mips_n64) andi k0, k0, 0x1ff8 # k0=seg offset (mask 0x7) #else - andi k0, k0, 0xffc # k0=seg offset (mask 0x3) + andi k0, k0, 0x1ffc # k0=seg offset (mask 0x3) #endif PTR_ADDU k1, k0, k1 # k1=seg entry address PTR_L k1, 0(k1) # k1=seg entry MFC0 k0, COP_0_BAD_VADDR # k0=bad address (again) beq k1, zero, MipsKernGenException # ==0 -- no page table PTR_SRL k0, PAGE_SHIFT - 2 # k0=VPN - andi k0, k0, 0xffc # k0=page tab offset + andi k0, k0, 0x1ffc # k0=page tab offset PTR_ADDU k1, k1, k0 # k1=pte address lw k0, 0(k1) # k0=lo0 pte CLEAR_PTE_SWBITS(k0) MTC0 k0, COP_0_TLB_LO0 # lo0 is loaded + HAZARD_DELAY addu k0, TLBLO_PFN_ODD MTC0 k0, COP_0_TLB_LO1 # lo1 is loaded HAZARD_DELAY
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201004042333.o34NXieS056440>