PERFORCE change 29754 for review
Peter Wemm
peter at FreeBSD.org
Fri Apr 25 18:15:57 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=29754
Change 29754 by peter at peter_daintree on 2003/04/25 18:15:52
remove stub pcpu stuff, use %gs instead of %fs since we have hardware
support for %gs via syscall/sysret
Affected files ...
.. //depot/projects/hammer/sys/x86_64/include/asmacros.h#5 edit
.. //depot/projects/hammer/sys/x86_64/include/pcpu.h#10 edit
Differences ...
==== //depot/projects/hammer/sys/x86_64/include/asmacros.h#5 (text+ko) ====
@@ -64,13 +64,9 @@
#define NON_GPROF_RET .byte 0xc3 /* opcode for `ret' */
#ifdef LOCORE
-#if 0
-#define PCPU(member) %fs:PC_ ## member
-#define PCPU_ADDR(member, reg) movq %fs:PC_PRVSPACE,reg; \
+#define PCPU(member) %gs:PC_ ## member
+#define PCPU_ADDR(member, reg) movq %gs:PC_PRVSPACE,reg; \
addq $PC_ ## member,reg
-#else
-#define PCPU(member) __pcpu + PC_ ## member
-#endif
#endif
#ifdef GPROF
==== //depot/projects/hammer/sys/x86_64/include/pcpu.h#10 (text+ko) ====
@@ -52,7 +52,6 @@
#elif defined(__GNUC__)
-#if 0
/*
* Evaluates to the byte offset of the per-cpu variable name.
*/
@@ -71,7 +70,7 @@
#define __PCPU_PTR(name) ({ \
__pcpu_type(name) *__p; \
\
- __asm __volatile("movq %%fs:%1,%0; addq %2,%0" \
+ __asm __volatile("movq %%gs:%1,%0; addq %2,%0" \
: "=r" (__p) \
: "m" (*(struct pcpu *)(__pcpu_offset(pc_prvspace))), \
"i" (__pcpu_offset(name))); \
@@ -87,25 +86,25 @@
\
if (sizeof(__result) == 1) { \
u_char __b; \
- __asm __volatile("movb %%fs:%1,%0" \
+ __asm __volatile("movb %%gs:%1,%0" \
: "=r" (__b) \
: "m" (*(u_char *)(__pcpu_offset(name)))); \
__result = *(__pcpu_type(name) *)&__b; \
} else if (sizeof(__result) == 2) { \
u_short __w; \
- __asm __volatile("movw %%fs:%1,%0" \
+ __asm __volatile("movw %%gs:%1,%0" \
: "=r" (__w) \
: "m" (*(u_short *)(__pcpu_offset(name)))); \
__result = *(__pcpu_type(name) *)&__w; \
} else if (sizeof(__result) == 4) { \
u_int __i; \
- __asm __volatile("movl %%fs:%1,%0" \
+ __asm __volatile("movl %%gs:%1,%0" \
: "=r" (__i) \
: "m" (*(u_int *)(__pcpu_offset(name)))); \
__result = *(__pcpu_type(name) *)&__i; \
} else if (sizeof(__result) == 8) { \
u_long __l; \
- __asm __volatile("movq %%fs:%1,%0" \
+ __asm __volatile("movq %%gs:%1,%0" \
: "=r" (__l) \
: "m" (*(u_long *)(__pcpu_offset(name)))); \
__result = *(__pcpu_type(name) *)&__l; \
@@ -125,25 +124,25 @@
if (sizeof(__val) == 1) { \
u_char __b; \
__b = *(u_char *)&__val; \
- __asm __volatile("movb %1,%%fs:%0" \
+ __asm __volatile("movb %1,%%gs:%0" \
: "=m" (*(u_char *)(__pcpu_offset(name))) \
: "r" (__b)); \
} else if (sizeof(__val) == 2) { \
u_short __w; \
__w = *(u_short *)&__val; \
- __asm __volatile("movw %1,%%fs:%0" \
+ __asm __volatile("movw %1,%%gs:%0" \
: "=m" (*(u_short *)(__pcpu_offset(name))) \
: "r" (__w)); \
} else if (sizeof(__val) == 4) { \
u_int __i; \
__i = *(u_int *)&__val; \
- __asm __volatile("movl %1,%%fs:%0" \
+ __asm __volatile("movl %1,%%gs:%0" \
: "=m" (*(u_int *)(__pcpu_offset(name))) \
: "r" (__i)); \
} else if (sizeof(__val) == 8) { \
u_long __l; \
__l = *(u_long *)&__val; \
- __asm __volatile("movq %1,%%fs:%0" \
+ __asm __volatile("movq %1,%%gs:%0" \
: "=m" (*(u_long *)(__pcpu_offset(name))) \
: "r" (__l)); \
} else { \
@@ -154,15 +153,6 @@
#define PCPU_GET(member) __PCPU_GET(pc_ ## member)
#define PCPU_PTR(member) __PCPU_PTR(pc_ ## member)
#define PCPU_SET(member, val) __PCPU_SET(pc_ ## member, val)
-#else
-
-extern struct pcpu __pcpu;
-
-#define PCPU_GET(member) (__pcpu.pc_ ## member)
-#define PCPU_PTR(member) (&__pcpu.pc_ ## member)
-#define PCPU_SET(member,value) (__pcpu.pc_ ## member = (value))
-
-#endif
#else
#error gcc or lint is required to use this file
More information about the p4-projects
mailing list