Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/include/pcpu.h
Show First 20 Lines • Show All 234 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 IS_BSP() (PCPU_GET(cpuid) == 0) | #define IS_BSP() (PCPU_GET(cpuid) == 0) | ||||
#define zpcpu_offset_cpu(cpu) ((uintptr_t)&__pcpu[0] + UMA_PCPU_ALLOC_SIZE * cpu) | |||||
#define zpcpu_base_to_offset(base) (void *)((uintptr_t)(base) - (uintptr_t)&__pcpu[0]) | |||||
#define zpcpu_offset_to_base(base) (void *)((uintptr_t)(base) + (uintptr_t)&__pcpu[0]) | |||||
jeff: Are there any archs that do this differently? Is there a reason not to make the shift… | |||||
Done Inline ActionsLooks like everyone but amd64 uses the real address here. Whether some of the other archs can be patched to things differently I don't know. mjg: Looks like everyone but amd64 uses the real address here. Whether some of the other archs can… | |||||
#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_ */ |
Are there any archs that do this differently? Is there a reason not to make the shift everywhere?