Module Name:    src
Committed By:   nakayama
Date:           Fri Dec  4 17:31:06 UTC 2009

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

Log Message:
Bring together similar definitions of inline functions manipulating
privileged registers using macro.  no functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.42 -r1.43 src/sys/arch/sparc64/include/psl.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/psl.h
diff -u src/sys/arch/sparc64/include/psl.h:1.42 src/sys/arch/sparc64/include/psl.h:1.43
--- src/sys/arch/sparc64/include/psl.h:1.42	Wed Nov 25 14:28:50 2009
+++ src/sys/arch/sparc64/include/psl.h	Fri Dec  4 17:31:06 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: psl.h,v 1.42 2009/11/25 14:28:50 rmind Exp $ */
+/*	$NetBSD: psl.h,v 1.43 2009/12/04 17:31:06 nakayama Exp $ */
 
 /*
  * Copyright (c) 1992, 1993
@@ -251,92 +251,58 @@
 /*
  * Inlines for manipulating privileged registers
  */
-static __inline uint64_t
-gettick(void)
-{
-#ifdef __arch64__
-	uint64_t tick;
-
-	__asm volatile("rdpr %%tick, %0" : "=r" (tick));
-	return tick;
-#else
-	uint32_t tick_hi, tick_lo;
-
-	__asm volatile("rdpr %%tick, %0; srl %0,0,%1; srlx %0,32,%0"
-		: "=r" (tick_hi), "=r" (tick_lo));
-	return ((uint64_t)tick_hi << 32) | tick_lo;
-#endif
+#define SPARC64_GETPR_DEF(pr, type)	\
+static __inline type get##pr(void)					\
+{									\
+	type pr;							\
+	__asm volatile("rdpr %%" #pr ",%0" : "=r" (pr));		\
+	return pr;							\
+}
+#define SPARC64_SETPR_DEF(pr, type)	\
+static __inline void set##pr(type pr)					\
+{									\
+	__asm volatile("wrpr %0,0,%%" #pr : : "r" (pr) : "memory");	\
 }
 
-static __inline void
-settick(uint64_t newtick)
-{
 #ifdef __arch64__
-	__asm volatile("wrpr %0, 0, %%tick" : : "r" (newtick) : "memory");
+#define SPARC64_GETPR64_DEF(pr)	SPARC64_GETPR_DEF(pr, uint64_t)
+#define SPARC64_SETPR64_DEF(pr)	SPARC64_SETPR_DEF(pr, uint64_t)
 #else
-	uint32_t tick_hi = newtick >> 32, tick_lo = newtick;
-
-	__asm volatile("sllx %1,32,%0; or %0,%2,%0; wrpr %0, 0, %%tick"
-		       : "=&r" (tick_hi) /* scratch register */
-		       : "r" (tick_hi), "r" (tick_lo) : "memory");
-#endif
+#define SPARC64_GETPR64_DEF(pr)	\
+static __inline uint64_t get##pr(void)					\
+{									\
+	uint32_t _hi, _lo;						\
+	__asm volatile("rdpr %%" #pr ",%0; srl %0,0,%1; srlx %0,32,%0"	\
+		: "=r" (_hi), "=r" (_lo));				\
+	return ((uint64_t)_hi << 32) | _lo;				\
+}
+#define SPARC64_SETPR64_DEF(pr)	\
+static __inline void set##pr(uint64_t pr)				\
+{									\
+	uint32_t _hi = pr >> 32, _lo = pr;				\
+	__asm volatile("sllx %1,32,%0; or %0,%2,%0; wrpr %0,0,%%" #pr	\
+		       : "=&r" (_hi) /* scratch register */		\
+		       : "r" (_hi), "r" (_lo) : "memory");		\
 }
+#endif
 
-static __inline int
-getpstate(void)
-{
-	int pstate;
-
-	__asm volatile("rdpr %%pstate,%0" : "=r" (pstate));
-	return pstate;
-}
-
-static __inline void
-setpstate(int newpstate)
-{
-	__asm volatile("wrpr %0,0,%%pstate" : : "r" (newpstate) : "memory");
-}
-
-static __inline int
-gettl(void)
-{
-	int tl;
-
-	__asm volatile("rdpr %%tl, %0" : "=r" (tl));
-	return tl;
-}
-
-static __inline int
-getcwp(void)
-{
-	int cwp;
-
-	__asm volatile("rdpr %%cwp,%0" : "=r" (cwp));
-	return cwp;
-}
-
-static __inline void
-setcwp(int newcwp)
-{
-	__asm volatile("wrpr %0,0,%%cwp" : : "r" (newcwp) : "memory");
-}
-
-static __inline uint64_t
-getver(void)
-{
-#ifdef __arch64__
-	uint64_t ver;
-
-	__asm volatile("rdpr %%ver,%0" : "=r" (ver));
-	return ver;
-#else
-	uint32_t ver_hi, ver_lo;
+/* Tick Register (PR 4) */
+SPARC64_GETPR64_DEF(tick)
+SPARC64_SETPR64_DEF(tick)
+
+/* Processor State Register (PR 6) */
+SPARC64_GETPR_DEF(pstate, int)
+SPARC64_SETPR_DEF(pstate, int)
+
+/* Trap Level Register (PR 7) */
+SPARC64_GETPR_DEF(tl, int)
+
+/* Current Window Pointer Register (PR 9) */
+SPARC64_GETPR_DEF(cwp, int)
+SPARC64_SETPR_DEF(cwp, int)
 
-	__asm volatile("rdpr %%ver,%0; srl %0,0,%1; srlx %0,32,%0"
-		       : "=r" (ver_hi), "=r" (ver_lo));
-	return (uint64_t)ver_hi << 32 | ver_lo;
-#endif
-}
+/* Version Register (PR 31) */
+SPARC64_GETPR64_DEF(ver)
 
 static __inline int
 intr_disable(void)
@@ -419,7 +385,7 @@
 	ipl_t _ipl;
 } ipl_cookie_t;
 
-static inline ipl_cookie_t
+static __inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)
 {
 

Reply via email to