Changeset View
Changeset View
Standalone View
Standalone View
head/sys/amd64/include/pcpu.h
| Show First 20 Lines • Show All 72 Lines • ▼ Show 20 Lines | |||||
| #define PC_DBREG_CMD_LOAD 1 | #define PC_DBREG_CMD_LOAD 1 | ||||
| #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 108 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,%%gs:%0" \ | __asm __volatile("mov %1,%%gs:%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; \ | ||||
| } \ | } \ | ||||
| } | } | ||||
| #define get_pcpu() __extension__ ({ \ | |||||
| struct pcpu *__pc; \ | |||||
| \ | |||||
| __asm __volatile("movq %%gs:%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 40 Lines | |||||