Module Name:    src
Committed By:   skrll
Date:           Fri Nov 18 06:53:06 UTC 2022

Modified Files:
        src/sys/arch/riscv/include: sysreg.h

Log Message:
Fix SR_WPRI.

Tweak csr_cycle_read and csr_asid_write for code style, and add some
KNF whitespace.


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/riscv/include/sysreg.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/riscv/include/sysreg.h
diff -u src/sys/arch/riscv/include/sysreg.h:1.26 src/sys/arch/riscv/include/sysreg.h:1.27
--- src/sys/arch/riscv/include/sysreg.h:1.26	Thu Nov 17 13:10:42 2022
+++ src/sys/arch/riscv/include/sysreg.h	Fri Nov 18 06:53:06 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: sysreg.h,v 1.26 2022/11/17 13:10:42 simonb Exp $ */
+ /* $NetBSD: sysreg.h,v 1.27 2022/11/18 06:53:06 skrll Exp $ */
 
 /*
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -39,14 +39,14 @@
 #include <riscv/reg.h>
 
 #define	FCSR_FMASK	0	// no exception bits
-#define	FCSR_FRM	__BITS(7,5)
+#define	FCSR_FRM	__BITS(7, 5)
 #define	 FCSR_FRM_RNE	0b000	// Round Nearest, ties to Even
 #define	 FCSR_FRM_RTZ	0b001	// Round Towards Zero
 #define	 FCSR_FRM_RDN	0b010	// Round DowN (-infinity)
 #define	 FCSR_FRM_RUP	0b011	// Round UP (+infinity)
 #define	 FCSR_FRM_RMM	0b100	// Round to nearest, ties to Max Magnitude
 #define	 FCSR_FRM_DYN	0b111	// Dynamic rounding
-#define	FCSR_FFLAGS	__BITS(4,0)	// Sticky bits
+#define	FCSR_FFLAGS	__BITS(4, 0)	// Sticky bits
 #define	FCSR_NV		__BIT(4)	// iNValid operation
 #define	FCSR_DZ		__BIT(3)	// Divide by Zero
 #define	FCSR_OF		__BIT(2)	// OverFlow
@@ -163,18 +163,20 @@ RISCVREG_SET_CLEAR_INLINE(regname)
 /* Supervisor Status Register */
 RISCVREG_READ_SET_CLEAR_INLINE(sstatus)		// supervisor status register
 #ifdef _LP64
-#define	SR_WPRI		__BITS(62, 34) | __BITS(31,20) | __BIT(17) | \
-			    __BITS(12,9) | __BITS(7,6) | __BITS(3,2)
+#define	SR_WPRI		__BITS(62, 34) | __BITS(31, 20) | \
+			__BIT(17) | __BITS(12, 11) | __BIT(7) | __BITS(4, 2) | \
+			__BIT(0)
 #define	SR_SD		__BIT(63)	// any of FS or VS or XS dirty
 			/* Bits 62-34 are WPRI */
-#define	SR_UXL		__BITS(33,32)	// U-mode XLEN
+#define	SR_UXL		__BITS(33, 32)	// U-mode XLEN
 #define	 SR_UXL_32	1		//   XLEN ==  32
 #define	 SR_UXL_64	2		//   XLEN ==  64
 #define	 SR_UXL_128	3		//   XLEN == 128
 			/* Bits 31-20 are WPRI*/
 #else
-#define	SR_WPRI		__BITS(30,20) | __BIT(17) | __BITS(12,9) | \
-			    __BITS(7,6) | __BITS(3,2)
+#define	SR_WPRI		__BITS(30, 20) | \
+			__BIT(17) | __BITS(12, 11) | __BIT(7) | __BITS(4, 2) | \
+			__BIT(0)
 #define	SR_SD		__BIT(31)	// any of FS or VS or XS dirty
 			/* Bits 30-20 are WPRI*/
 #endif /* _LP64 */
@@ -183,18 +185,18 @@ RISCVREG_READ_SET_CLEAR_INLINE(sstatus)	
 #define	SR_MXR		__BIT(19)	// Make eXecutable Readable
 #define	SR_SUM		__BIT(18)	// permit Supervisor User Memory access
 			/* Bit 17 is WPRI */
-#define	SR_XS		__BITS(16,15)	// Vector extension state
+#define	SR_XS		__BITS(16, 15)	// Vector extension state
 #define	 SR_XS_OFF		0	//   All off
 #define	 SR_XS_SOME_ON		1	//   None dirty or clean, some on
 #define	 SR_XS_SOME_CLEAN	2	//   None dirty, some clean
 #define	 SR_XS_SOME_DIRTY	3	//   Some dirty
-#define	SR_FS		__BITS(14,13)	// Floating-point unit state
+#define	SR_FS		__BITS(14, 13)	// Floating-point unit state
 #define	 SR_FS_OFF	0		//   Off
 #define	 SR_FS_INITIAL	1		//   Initial
 #define	 SR_FS_CLEAN	2		//   Clean
 #define	 SR_FS_DIRTY	3		//   Dirty
 			/* Bits 12-11 are WPRI */
-#define	SR_VS		__BITS(10,9)	// User-mode extention state
+#define	SR_VS		__BITS(10, 9)	// User-mode extention state
 #define	 SR_VS_OFF	SR_FS_OFF	//   Off
 #define	 SR_VS_INITIAL	SR_FS_INITIAL	//   Initial
 #define	 SR_VS_CLEAN	SR_FS_CLEAN	//   Clean
@@ -229,7 +231,7 @@ RISCVREG_READ_SET_CLEAR_INLINE(sie)		// 
 			/* Bit 0 is WIRI */
 
 /* Mask for all interrupts */
-#define	SIE_IM		(SIE_SEI|SIE_STIE|SIE_SSIE)	/* XXX unused? */
+#define	SIE_IM		(SIE_SEI |SIE_STIE | SIE_SSIE)
 
 #ifdef _LP64
 #define	SR_USER64	(SR_SPIE | SR_UXL_64)	// 64-bit U-mode sstatus
@@ -239,8 +241,8 @@ RISCVREG_READ_SET_CLEAR_INLINE(sie)		// 
 #endif
 
 // Cause register
-#define	CAUSE_INTERRUPT_P(cause)	((cause) & __BIT(XLEN-1))
-#define	CAUSE_CODE(cause)		((cause) & __BITS(XLEN-2, 0))
+#define	CAUSE_INTERRUPT_P(cause)	((cause) & __BIT(XLEN - 1))
+#define	CAUSE_CODE(cause)		((cause) & __BITS(XLEN - 2, 0))
 
 // Cause register - exceptions
 #define	CAUSE_FETCH_MISALIGNED		0
@@ -287,12 +289,14 @@ csr_cycle_read(void)
 			[__lo0] "=r"(__lo0),
 			[__hi1] "=r"(__hi1));
 	} while (__hi0 != __hi1);
-	return ((uint64_t)__hi0 << 32) | (uint64_t)__lo0;
+	return
+	    __SHIFTIN(__hi0, __BITS(63, 32)) |
+	    __SHIFTIN(__lo0, __BITS(31,  0));
 }
 #endif /* !_LP64 */
 
 #ifdef _LP64
-#define	SATP_MODE		__BITS(63,60)	// Translation mode
+#define	SATP_MODE		__BITS(63, 60)	// Translation mode
 #define	 SATP_MODE_BARE		0		//   No translation or protection
 				/* modes 1-7 reserved for standard use */
 #define	 SATP_MODE_SV39		8		//   Page-based 39-bit virt addr
@@ -301,14 +305,14 @@ csr_cycle_read(void)
 #define	 SATP_MODE_SV64		11		//   Page-based 64-bit virt addr
 				/* modes 12-13 reserved for standard use */
 				/* modes 14-15 designated for custom use */
-#define	SATP_ASID		__BITS(59,44)	//   Address Space Identifier
-#define	SATP_PPN		__BITS(43,0)	//   Physical Page Number
+#define	SATP_ASID		__BITS(59, 44)	//   Address Space Identifier
+#define	SATP_PPN		__BITS(43, 0)	//   Physical Page Number
 #else
 #define	SATP_MODE		__BIT(31)	// Translation mode
 #define	 SATP_MODE_BARE		0		//   No translation or protection
 #define	 SATP_MODE_SV32		1		//   Page-based 32-bit virt addr
-#define	SATP_ASID		__BITS(30,22)	//   Address Space Identifier
-#define	SATP_PPN		__BITS(21,0)	//   Physical Page Number
+#define	SATP_ASID		__BITS(30, 22)	//   Address Space Identifier
+#define	SATP_PPN		__BITS(21, 0)	//   Physical Page Number
 #endif
 
 RISCVREG_READ_WRITE_INLINE(satp)
@@ -324,9 +328,7 @@ csr_asid_read(void)
 static inline void
 csr_asid_write(uint32_t asid)
 {
-	uintptr_t satp;
-
-	satp = csr_satp_read();
+	uintptr_t satp = csr_satp_read();
 	satp &= ~SATP_ASID;
 	satp |= __SHIFTIN(asid, SATP_ASID);
 	csr_satp_write(satp);

Reply via email to