svn commit: r231977 - in stable/9/sys/amd64: amd64 include
Konstantin Belousov
kib at FreeBSD.org
Tue Feb 21 20:29:39 UTC 2012
Author: kib
Date: Tue Feb 21 20:29:38 2012
New Revision: 231977
URL: http://svn.freebsd.org/changeset/base/231977
Log:
MFC r230538:
Order newly added functions alphabetically.
MFC r230766:
Move xrstor/xsave/xsetbv into fpu.c and reorder them.
Modified:
stable/9/sys/amd64/amd64/fpu.c
stable/9/sys/amd64/include/cpufunc.h
Directory Properties:
stable/9/sys/ (props changed)
Modified: stable/9/sys/amd64/amd64/fpu.c
==============================================================================
--- stable/9/sys/amd64/amd64/fpu.c Tue Feb 21 19:40:13 2012 (r231976)
+++ stable/9/sys/amd64/amd64/fpu.c Tue Feb 21 20:29:38 2012 (r231977)
@@ -78,6 +78,41 @@ __FBSDID("$FreeBSD$");
: : "n" (CR0_TS) : "ax")
#define stop_emulating() __asm __volatile("clts")
+static __inline void
+xrstor(char *addr, uint64_t mask)
+{
+ uint32_t low, hi;
+
+ low = mask;
+ hi = mask >> 32;
+ /* xrstor (%rdi) */
+ __asm __volatile(".byte 0x0f,0xae,0x2f" : :
+ "a" (low), "d" (hi), "D" (addr));
+}
+
+static __inline void
+xsave(char *addr, uint64_t mask)
+{
+ uint32_t low, hi;
+
+ low = mask;
+ hi = mask >> 32;
+ /* xsave (%rdi) */
+ __asm __volatile(".byte 0x0f,0xae,0x27" : :
+ "a" (low), "d" (hi), "D" (addr) : "memory");
+}
+
+static __inline void
+xsetbv(uint32_t reg, uint64_t val)
+{
+ uint32_t low, hi;
+
+ low = val;
+ hi = val >> 32;
+ __asm __volatile(".byte 0x0f,0x01,0xd1" : :
+ "c" (reg), "a" (low), "d" (hi));
+}
+
#else /* !(__GNUCLIKE_ASM && !lint) */
void fldcw(u_short cw);
@@ -90,6 +125,9 @@ void fxrstor(caddr_t addr);
void ldmxcsr(u_int csr);
void start_emulating(void);
void stop_emulating(void);
+void xrstor(char *addr, uint64_t mask);
+void xsave(char *addr, uint64_t mask);
+void xsetbv(uint32_t reg, uint64_t val);
#endif /* __GNUCLIKE_ASM && !lint */
Modified: stable/9/sys/amd64/include/cpufunc.h
==============================================================================
--- stable/9/sys/amd64/include/cpufunc.h Tue Feb 21 19:40:13 2012 (r231976)
+++ stable/9/sys/amd64/include/cpufunc.h Tue Feb 21 20:29:38 2012 (r231977)
@@ -669,41 +669,6 @@ intr_restore(register_t rflags)
write_rflags(rflags);
}
-static __inline void
-xsetbv(uint32_t reg, uint64_t val)
-{
- uint32_t low, hi;
-
- low = val;
- hi = val >> 32;
- __asm __volatile(".byte 0x0f,0x01,0xd1" : :
- "c" (reg), "a" (low), "d" (hi));
-}
-
-static __inline void
-xsave(char *addr, uint64_t mask)
-{
- uint32_t low, hi;
-
- low = mask;
- hi = mask >> 32;
- /* xsave (%rdi) */
- __asm __volatile(".byte 0x0f,0xae,0x27" : :
- "a" (low), "d" (hi), "D" (addr) : "memory");
-}
-
-static __inline void
-xrstor(char *addr, uint64_t mask)
-{
- uint32_t low, hi;
-
- low = mask;
- hi = mask >> 32;
- /* xrstor (%rdi) */
- __asm __volatile(".byte 0x0f,0xae,0x2f" : :
- "a" (low), "d" (hi), "D" (addr));
-}
-
#else /* !(__GNUCLIKE_ASM && __CC_SUPPORTS___INLINE) */
int breakpoint(void);
@@ -768,9 +733,6 @@ u_int rgs(void);
void wbinvd(void);
void write_rflags(u_int rf);
void wrmsr(u_int msr, uint64_t newval);
-void xsetbv(uint32_t reg, uint64_t val);
-void xsave(char *addr, uint64_t mask);
-void xrstor(char *addr, uint64_t mask);
#endif /* __GNUCLIKE_ASM && __CC_SUPPORTS___INLINE */
More information about the svn-src-stable-9
mailing list