svn commit: r216628 - in head/sys/sparc64: include sparc64

Marius Strobl marius at FreeBSD.org
Tue Dec 21 22:03:13 UTC 2010


Author: marius
Date: Tue Dec 21 22:03:12 2010
New Revision: 216628
URL: http://svn.freebsd.org/changeset/base/216628

Log:
  Extend the hack of r182730 to trick GAS/GCC into compiling access to
  STICK/STICK_COMPARE independently of the selected instruction set by
  TICK_COMPARE so tick.c as of r214358 once again can be compiled with
  gcc -mcpu=v9 for reference purposes.

Modified:
  head/sys/sparc64/include/cpufunc.h
  head/sys/sparc64/sparc64/tick.c

Modified: head/sys/sparc64/include/cpufunc.h
==============================================================================
--- head/sys/sparc64/include/cpufunc.h	Tue Dec 21 22:01:26 2010	(r216627)
+++ head/sys/sparc64/include/cpufunc.h	Tue Dec 21 22:03:12 2010	(r216628)
@@ -174,11 +174,13 @@ int fasword32(u_long asi, void *addr, ui
 } while (0)
 
 /*
- * Trick GAS/GCC into compiling access to STICK/STICK_COMPARE independently
+ * Trick GAS/GCC into compiling access to TICK/(S)TICK_COMPARE independently
  * of the selected instruction set.
  */
+#define	rdtickcmpr()		rd(asr23)
 #define	rdstick()		rd(asr24)
 #define	rdstickcmpr()		rd(asr25)
+#define	wrtickcmpr(val, xor)	wr(asr23, (val), (xor))
 #define	wrstick(val, xor)	wr(asr24, (val), (xor))
 #define	wrstickcmpr(val, xor)	wr(asr25, (val), (xor))
 
@@ -191,7 +193,7 @@ int fasword32(u_long asi, void *addr, ui
  * aligned to a quadword boundary in order to ensure that I$ misses won't
  * split them up.
  */
-#define	wrtickcmpr(val, xor) ({						\
+#define	wrtickcmpr_bbwar(val, xor) ({					\
 	__asm __volatile(						\
 	"	ba,pt	%%xcc, 1f ;		"			\
 	"	 nop	 ;			"			\

Modified: head/sys/sparc64/sparc64/tick.c
==============================================================================
--- head/sys/sparc64/sparc64/tick.c	Tue Dec 21 22:01:26 2010	(r216627)
+++ head/sys/sparc64/sparc64/tick.c	Tue Dec 21 22:03:12 2010	(r216628)
@@ -132,14 +132,14 @@ static void
 tick_wr_cmpr(uint64_t tick_cmpr)
 {
 
-	wr(tick_cmpr, tick_cmpr, 0);
+	wrtickcmpr(tick_cmpr, 0);
 }
 
 static void
 tick_wr_cmpr_bbwar(uint64_t tick_cmpr)
 {
 
-	wrtickcmpr(tick_cmpr, 0);
+	wrtickcmpr_bbwar(tick_cmpr, 0);
 }
 
 static uint64_t


More information about the svn-src-all mailing list