Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/include/pcpu.h
Show First 20 Lines • Show All 212 Lines • ▼ Show 20 Lines | |||||
#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 | ||||
#ifdef __clang__ | struct thread * __curthread(void) __pure2 __attribute__((no_caller_saved_registers)); | ||||
#pragma clang diagnostic push | |||||
#pragma clang diagnostic ignored "-Wnull-dereference" | |||||
#endif | |||||
static __inline __pure2 struct thread * | |||||
__curthread(void) | |||||
{ | |||||
struct thread *td; | |||||
__asm("movq %%gs:%1,%0" : "=r" (td) | |||||
: "m" (*(char *)OFFSETOF_CURTHREAD)); | |||||
return (td); | |||||
} | |||||
#ifdef __clang__ | |||||
#pragma clang diagnostic pop | |||||
#endif | |||||
#define curthread (__curthread()) | #define curthread (__curthread()) | ||||
#define OFFSETOF_CURPCB 32 | #define OFFSETOF_CURPCB 32 | ||||
static __inline __pure2 struct pcb * | static __inline __pure2 struct pcb * | ||||
__curpcb(void) | __curpcb(void) | ||||
{ | { | ||||
struct pcb *pcb; | struct pcb *pcb; | ||||
Show All 16 Lines |