Changeset View
Changeset View
Standalone View
Standalone View
head/sys/i386/include/pcpu.h
Show First 20 Lines • Show All 70 Lines • ▼ Show 20 Lines | #define PCPU_MD_FIELDS \ | ||||
char __pad[189] | char __pad[189] | ||||
#ifdef _KERNEL | #ifdef _KERNEL | ||||
#ifdef lint | #ifdef lint | ||||
extern struct pcpu *pcpup; | extern struct pcpu *pcpup; | ||||
#define get_pcpu() (pcpup) | |||||
#define PCPU_GET(member) (pcpup->pc_ ## member) | #define PCPU_GET(member) (pcpup->pc_ ## member) | ||||
#define PCPU_ADD(member, val) (pcpup->pc_ ## member += (val)) | #define PCPU_ADD(member, val) (pcpup->pc_ ## member += (val)) | ||||
#define PCPU_INC(member) PCPU_ADD(member, 1) | #define PCPU_INC(member) PCPU_ADD(member, 1) | ||||
#define PCPU_PTR(member) (&pcpup->pc_ ## member) | #define PCPU_PTR(member) (&pcpup->pc_ ## member) | ||||
#define PCPU_SET(member, val) (pcpup->pc_ ## member = (val)) | #define PCPU_SET(member, val) (pcpup->pc_ ## member = (val)) | ||||
#elif defined(__GNUCLIKE_ASM) && defined(__GNUCLIKE___TYPEOF) | #elif defined(__GNUCLIKE_ASM) && defined(__GNUCLIKE___TYPEOF) | ||||
▲ Show 20 Lines • Show All 103 Lines • ▼ Show 20 Lines | if (sizeof(__val) == 1 || sizeof(__val) == 2 || \ | ||||
__s = *(struct __s *)(void *)&__val; \ | __s = *(struct __s *)(void *)&__val; \ | ||||
__asm __volatile("mov %1,%%fs:%0" \ | __asm __volatile("mov %1,%%fs:%0" \ | ||||
: "=m" (*(struct __s *)(__pcpu_offset(name))) \ | : "=m" (*(struct __s *)(__pcpu_offset(name))) \ | ||||
: "r" (__s)); \ | : "r" (__s)); \ | ||||
} else { \ | } else { \ | ||||
*__PCPU_PTR(name) = __val; \ | *__PCPU_PTR(name) = __val; \ | ||||
} \ | } \ | ||||
} while (0) | } while (0) | ||||
#define get_pcpu() __extension__ ({ \ | |||||
struct pcpu *__pc; \ | |||||
\ | |||||
__asm __volatile("movl %%fs:%1,%0" \ | |||||
: "=r" (__pc) \ | |||||
: "m" (*(struct pcpu *)(__pcpu_offset(pc_prvspace)))); \ | |||||
__pc; \ | |||||
}) | |||||
#define PCPU_GET(member) __PCPU_GET(pc_ ## member) | #define PCPU_GET(member) __PCPU_GET(pc_ ## member) | ||||
#define PCPU_ADD(member, val) __PCPU_ADD(pc_ ## member, val) | #define PCPU_ADD(member, val) __PCPU_ADD(pc_ ## member, val) | ||||
#define PCPU_INC(member) __PCPU_INC(pc_ ## member) | #define PCPU_INC(member) __PCPU_INC(pc_ ## member) | ||||
#define PCPU_PTR(member) __PCPU_PTR(pc_ ## member) | #define PCPU_PTR(member) __PCPU_PTR(pc_ ## member) | ||||
#define PCPU_SET(member, val) __PCPU_SET(pc_ ## member, val) | #define PCPU_SET(member, val) __PCPU_SET(pc_ ## member, val) | ||||
#define OFFSETOF_CURTHREAD 0 | #define OFFSETOF_CURTHREAD 0 | ||||
Show All 38 Lines |