summaryrefslogtreecommitdiff
path: root/sys/arch/sparc64
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2008-07-10 09:29:34 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2008-07-10 09:29:34 +0000
commit6b5b3279f0b20db9ea02aed5f3f788e2af01fa28 (patch)
treed3a1dd6d8ad73bc8cca6ec99ea64c354587fcf30 /sys/arch/sparc64
parent53a75d7d59fcfe75c0fec20bbad71a82254a6aff (diff)
Add support for Fujitsu SPARC64-VI CPUs.
UltraSPARC I/II has a 41-bit physical address space, UltraSPARC III/IV has a 43-bit physical address space. The Fujitsu SPARC64-VI extends this to 46 bits. Adjust the TTE masks to take this into account and adjust some locore code that truncated physical addresses to 41 bits (fixing a potential bug for UltraSPARC III/IV too). While there, fix the locore code for UltraSPARC Architecture 2007 CPUs, which may support up to 56 bits of physical address space.
Diffstat (limited to 'sys/arch/sparc64')
-rw-r--r--sys/arch/sparc64/include/pte.h4
-rw-r--r--sys/arch/sparc64/sparc64/locore.s10
2 files changed, 7 insertions, 7 deletions
diff --git a/sys/arch/sparc64/include/pte.h b/sys/arch/sparc64/include/pte.h
index 9d453fafd54..bcc04d693ef 100644
--- a/sys/arch/sparc64/include/pte.h
+++ b/sys/arch/sparc64/include/pte.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pte.h,v 1.11 2008/04/20 09:18:52 kettenis Exp $ */
+/* $OpenBSD: pte.h,v 1.12 2008/07/10 09:29:33 kettenis Exp $ */
/* $NetBSD: pte.h,v 1.7 2001/07/31 06:55:46 eeh Exp $ */
/*
@@ -168,7 +168,7 @@ void smp_tlb_flush_ctx(int);
#define SUN4U_TLB_IE 0x0800000000000000LL
#define SUN4U_TLB_SOFT2_MASK 0x07fc000000000000LL
#define SUN4U_TLB_RESERVED_MASK 0x0003f80000000000LL
-#define SUN4U_TLB_PA_MASK 0x000007ffffffe000LL
+#define SUN4U_TLB_PA_MASK 0x00007fffffffe000LL
#define SUN4U_TLB_SOFT_MASK 0x0000000000001f80LL
/* S/W bits */
#define SUN4U_TLB_ACCESS 0x0000000000000200LL
diff --git a/sys/arch/sparc64/sparc64/locore.s b/sys/arch/sparc64/sparc64/locore.s
index 670c4e77acd..ae03b3b3a7d 100644
--- a/sys/arch/sparc64/sparc64/locore.s
+++ b/sys/arch/sparc64/sparc64/locore.s
@@ -1,4 +1,4 @@
-/* $OpenBSD: locore.s,v 1.144 2008/07/05 20:53:33 kettenis Exp $ */
+/* $OpenBSD: locore.s,v 1.145 2008/07/10 09:29:33 kettenis Exp $ */
/* $NetBSD: locore.s,v 1.137 2001/08/13 06:10:10 jdolecek Exp $ */
/*
@@ -2086,9 +2086,9 @@ winfixspill:
brgez %g7, 0f
srlx %g7, PGSHIFT, %g7 ! Isolate PA part
sll %g6, 32-PGSHIFT, %g6 ! And offset
- sllx %g7, PGSHIFT+23, %g7 ! There are 23 bits to the left of the PA in the TTE
+ sllx %g7, PGSHIFT+17, %g7 ! There are 17 bits to the left of the PA in the TTE
srl %g6, 32-PGSHIFT, %g6
- srax %g7, 23, %g7
+ srax %g7, 17, %g7
or %g7, %g6, %g6 ! Then combine them to form PA
wr %g0, ASI_PHYS_CACHED, %asi ! Use ASI_PHYS_CACHED to prevent possible page faults
@@ -3287,9 +3287,9 @@ pcbspill:
brgez %g7, pcbspill_fail
srlx %g7, PGSHIFT, %g7 ! Isolate PA part
sll %g6, 32-PGSHIFT, %g6 ! And offset
- sllx %g7, PGSHIFT+23, %g7 ! There are 23 bits to the left of the PA in the TTE
+ sllx %g7, PGSHIFT+8, %g7 ! There are 8 bits to the left of the PA in the TTE
srl %g6, 32-PGSHIFT, %g6
- srax %g7, 23, %g7
+ srax %g7, 8, %g7
or %g7, %g6, %g6 ! Then combine them to form PA
! wr %g0, ASI_PHYS_CACHED, %asi ! Use ASI_PHYS_CACHED to prevent possible page faults