Module Name:    src
Committed By:   mrg
Date:           Sat Dec  5 22:24:11 UTC 2009

Modified Files:
        src/sys/arch/sparc64/include: pte.h

Log Message:
- update the TLB_SOFT2_MASK and TLB_DIAG_MASK definitions for USIII.  partly
  from openbsd.
- rename TLB_DIAG_MASK to TLB_RESERVED_MASK.  from openbsd.
- fix the TLB_PA_MASK definition to be correct.   our old one was 4 bits
  too wide.
- fix various errors in the #if 0 bitfield version of struct sun4u_tag_fields.

tested on U60 and SB2500.


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/sparc64/include/pte.h

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/sparc64/include/pte.h
diff -u src/sys/arch/sparc64/include/pte.h:1.20 src/sys/arch/sparc64/include/pte.h:1.21
--- src/sys/arch/sparc64/include/pte.h:1.20	Fri Mar 14 15:40:02 2008
+++ src/sys/arch/sparc64/include/pte.h	Sat Dec  5 22:24:11 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: pte.h,v 1.20 2008/03/14 15:40:02 nakayama Exp $ */
+/*	$NetBSD: pte.h,v 1.21 2009/12/05 22:24:11 mrg Exp $ */
 
 /*
  * Copyright (c) 1996-1999 Eduardo Horvath
@@ -41,15 +41,17 @@
  *
  *	struct sun4u_tte {
  *		uint64	tag_g:1,	(global flag)
- *			tag_ctxt:15,	(context for mapping)
+ *			tag_reserved:2,	(reserved for future use)
+ *			tag_ctxt:13,	(context for mapping)
  *			tag_unassigned:6,
  *			tag_va:42;	(virtual address bits<64:22>)
  *		uint64	data_v:1,	(valid bit)
  *			data_size:2,	(page size [8K*8**<SIZE>])
  *			data_nfo:1,	(no-fault only)
  *			data_ie:1,	(invert endianness [inefficient])
- *			data_soft2:2,	(reserved for S/W)
- *			data_pa:36,	(physical address)
+ *			data_soft9:9,	(reserved for S/W)
+ *			data_reserved:7,(reserved for future use)
+ *			data_pa:30,	(physical address)
  *			data_soft:6,	(reserved for S/W)
  *			data_lock:1,	(lock into TLB)
  *			data_cacheable:2,	(cacheability control)
@@ -91,23 +93,25 @@
 #if 0
 /* We don't use bitfeilds anyway. */
 struct sun4u_tag_fields {
-	uint64_t	tag_g:1,	/* global flag */
-		tag_ctxt:15,	/* context for mapping */
+	uint64_t tag_g:1,	/* global flag */
+		tag_reserved:2,	/* reserved for future use */
+		tag_ctxt:13,	/* context for mapping */
 		tag_unassigned:6,
 		tag_va:42;	/* virtual address bits<64:22> */
 };
 union sun4u_tag { struct sun4u_tag_fields f; int64_t tag; };
 struct sun4u_data_fields {
-	uint64_t	data_v:1,	/* valid bit */
+	uint64_t data_v:1,	/* valid bit */
 		data_size:2,	/* page size [8K*8**<SIZE>] */
 		data_nfo:1,	/* no-fault only */
 		data_ie:1,	/* invert endianness [inefficient] */
-		data_soft2:2,	/* reserved for S/W */
-		data_pa:36,	/* physical address */
-		data_accessed:1,/* S/W accessed bit */
+		data_soft2:9,	/* reserved for S/W */
+		data_reserved:7,/* reserved for future use */
+		data_pa:30,	/* physical address */
+		data_tsblock:1,	/* S/W TSB locked entry */
 		data_modified:1,/* S/W modified bit */
 		data_realw:1,	/* S/W real writable bit (to manage modified) */
-		data_tsblock:1,	/* S/W TSB locked entry */
+		data_accessed:1,/* S/W accessed bit */
 		data_exec:1,	/* S/W Executable */
 		data_onlyexec:1,/* S/W Executable only */
 		data_lock:1,	/* lock into TLB */
@@ -160,9 +164,9 @@
 #define TLB_SZ_MASK		0x6000000000000000LL
 #define TLB_NFO			0x1000000000000000LL
 #define TLB_IE			0x0800000000000000LL
-#define TLB_SOFT2_MASK		0x07fe000000000000LL
-#define TLB_DIAG_MASK		0x0001fe0000000000LL
-#define TLB_PA_MASK		0x000001ffffffe000LL
+#define TLB_SOFT2_MASK		0x07fc000000000000LL
+#define TLB_RESERVED_MASK	0x0003f80000000000LL
+#define TLB_PA_MASK		0x000007ffffffe000LL
 #define TLB_SOFT_MASK		0x0000000000001f80LL
 /* S/W bits */
 /* Access & TSB locked bits are swapped so I can set access w/one insn */

Reply via email to