Changeset View
Changeset View
Standalone View
Standalone View
head/sys/amd64/include/pcpu.h
Show First 20 Lines • Show All 227 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 | |||||
#ifdef __clang__ | |||||
#pragma clang diagnostic push | |||||
#pragma clang diagnostic ignored "-Wnull-dereference" | |||||
#endif | |||||
static __inline __pure2 struct thread * | |||||
__curthread(void) | |||||
{ | |||||
struct thread *td; | |||||
__asm("movq %%gs:%P1,%0" : "=r" (td) : "n" (OFFSETOF_CURTHREAD)); | |||||
return (td); | |||||
} | |||||
#ifdef __clang__ | |||||
#pragma clang diagnostic pop | |||||
#endif | |||||
#define curthread (__curthread()) | |||||
#define OFFSETOF_CURPCB 32 | |||||
static __inline __pure2 struct pcb * | |||||
__curpcb(void) | |||||
{ | |||||
struct pcb *pcb; | |||||
__asm("movq %%gs:%P1,%0" : "=r" (pcb) : "n" (OFFSETOF_CURPCB)); | |||||
return (pcb); | |||||
} | |||||
#define curpcb (__curpcb()) | |||||
#define IS_BSP() (PCPU_GET(cpuid) == 0) | #define IS_BSP() (PCPU_GET(cpuid) == 0) | ||||
#else /* !__GNUCLIKE_ASM || !__GNUCLIKE___TYPEOF */ | #else /* !__GNUCLIKE_ASM || !__GNUCLIKE___TYPEOF */ | ||||
#error "this file needs to be ported to your compiler" | #error "this file needs to be ported to your compiler" | ||||
#endif /* __GNUCLIKE_ASM && __GNUCLIKE___TYPEOF */ | #endif /* __GNUCLIKE_ASM && __GNUCLIKE___TYPEOF */ | ||||
#endif /* _KERNEL */ | #endif /* _KERNEL */ | ||||
#endif /* !_MACHINE_PCPU_H_ */ | #endif /* !_MACHINE_PCPU_H_ */ |