Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Apr 2003 17:50:57 -0800 (PST)
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 28106 for review
Message-ID:  <200304050150.h351ovlV090712@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=28106

Change 28106 by peter@peter_daintree on 2003/04/04 17:50:39

	64 bit updates.  I have to check the register constraints though.

Affected files ...

.. //depot/projects/hammer/sys/x86_64/include/cpufunc.h#5 edit

Differences ...

==== //depot/projects/hammer/sys/x86_64/include/cpufunc.h#5 (text+ko) ====

@@ -52,10 +52,12 @@
 #define readb(va)	(*(volatile u_int8_t *) (va))
 #define readw(va)	(*(volatile u_int16_t *) (va))
 #define readl(va)	(*(volatile u_int32_t *) (va))
+#define readq(va)	(*(volatile u_int64_t *) (va))
 
 #define writeb(va, d)	(*(volatile u_int8_t *) (va) = (d))
 #define writew(va, d)	(*(volatile u_int16_t *) (va) = (d))
 #define writel(va, d)	(*(volatile u_int32_t *) (va) = (d))
+#define writeq(va, d)	(*(volatile u_int64_t *) (va) = (d))
 
 #ifdef	__GNUC__
 
@@ -313,9 +315,9 @@
 static __inline u_long
 read_rflags(void)
 {
-	u_int	ef;
+	u_long	ef;
 
-	__asm __volatile("pushfl; XXX; popl %0" : "=r" (ef));
+	__asm __volatile("pushfq; popq %0" : "=r" (ef));
 	return (ef);
 }
 
@@ -324,7 +326,7 @@
 {
 	u_int64_t rv;
 
-	__asm __volatile("rdmsr XXX" : "=A" (rv) : "c" (msr));
+	__asm __volatile("rdmsr" : "=A" (rv) : "c" (msr));
 	return (rv);
 }
 
@@ -333,7 +335,7 @@
 {
 	u_int64_t rv;
 
-	__asm __volatile("rdpmc XXX" : "=A" (rv) : "c" (pmc));
+	__asm __volatile("rdpmc" : "=A" (rv) : "c" (pmc));
 	return (rv);
 }
 
@@ -342,7 +344,7 @@
 {
 	u_int64_t rv;
 
-	__asm __volatile("rdtsc XXX" : "=A" (rv));
+	__asm __volatile("rdtsc" : "=A" (rv));
 	return (rv);
 }
 
@@ -355,13 +357,13 @@
 static __inline void
 write_rflags(u_long ef)
 {
-	__asm __volatile("pushl %0;  XXXpopfl" : : "r" (ef));
+	__asm __volatile("pushl %0;  popfq" : : "r" (ef));
 }
 
 static __inline void
 wrmsr(u_int msr, u_int64_t newval)
 {
-	__asm __volatile("wrmsr XXX" : : "A" (newval), "c" (msr));
+	__asm __volatile("wrmsr" : : "A" (newval), "c" (msr));
 }
 
 static __inline void
@@ -441,6 +443,7 @@
 	__asm __volatile("invlpg %0" : : "m" (*(char *)addr) : "memory");
 }
 
+/* XXX these are replaced with rdmsr/wrmsr */
 static __inline u_int
 rfs(void)
 {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304050150.h351ovlV090712>