Changeset View
Changeset View
Standalone View
Standalone View
sys/sys/pcpu.h
Show First 20 Lines • Show All 103 Lines • ▼ Show 20 Lines | |||||
*/ | */ | ||||
#define DPCPU_DEFINE_STATIC(t, n) \ | #define DPCPU_DEFINE_STATIC(t, n) \ | ||||
t DPCPU_NAME(n) __section(DPCPU_SETNAME) __used | t DPCPU_NAME(n) __section(DPCPU_SETNAME) __used | ||||
#else | #else | ||||
#define DPCPU_DEFINE_STATIC(t, n) \ | #define DPCPU_DEFINE_STATIC(t, n) \ | ||||
static t DPCPU_NAME(n) __section(DPCPU_SETNAME) __used | static t DPCPU_NAME(n) __section(DPCPU_SETNAME) __used | ||||
#endif | #endif | ||||
#ifndef DPCPU_BASE_OFFSET | |||||
#define DPCPU_BASE_OFFSET(pc) ((pc)->pc_dynamic) | |||||
#endif | |||||
/* | /* | ||||
* Accessors with a given base. | * Accessors with a given base. | ||||
*/ | */ | ||||
#define _DPCPU_PTR(b, n) \ | #define _DPCPU_PTR(b, n) \ | ||||
(__typeof(DPCPU_NAME(n))*)((b) + (uintptr_t)&DPCPU_NAME(n)) | (__typeof(DPCPU_NAME(n))*)((b) + (uintptr_t)&DPCPU_NAME(n)) | ||||
#define _DPCPU_GET(b, n) (*_DPCPU_PTR(b, n)) | #define _DPCPU_GET(b, n) (*_DPCPU_PTR(b, n)) | ||||
#define _DPCPU_SET(b, n, v) (*_DPCPU_PTR(b, n) = v) | #define _DPCPU_SET(b, n, v) (*_DPCPU_PTR(b, n) = v) | ||||
/* | /* | ||||
* Accessors for the current cpu. | * Accessors for the current cpu. | ||||
*/ | */ | ||||
#define DPCPU_PTR(n) _DPCPU_PTR(PCPU_GET(dynamic), n) | #define DPCPU_PTR(n) _DPCPU_PTR(DPCPU_BASE_OFFSET(get_pcpu()), n) | ||||
#define DPCPU_GET(n) (*DPCPU_PTR(n)) | #define DPCPU_GET(n) (*DPCPU_PTR(n)) | ||||
#define DPCPU_SET(n, v) (*DPCPU_PTR(n) = v) | #define DPCPU_SET(n, v) (*DPCPU_PTR(n) = v) | ||||
/* | /* | ||||
* Accessors for remote cpus. | * Accessors for remote cpus. | ||||
*/ | */ | ||||
#define DPCPU_ID_PTR(i, n) _DPCPU_PTR(dpcpu_off[(i)], n) | #define DPCPU_ID_PTR(i, n) _DPCPU_PTR(dpcpu_off[(i)], n) | ||||
#define DPCPU_ID_GET(i, n) (*DPCPU_ID_PTR(i, n)) | #define DPCPU_ID_GET(i, n) (*DPCPU_ID_PTR(i, n)) | ||||
▲ Show 20 Lines • Show All 199 Lines • Show Last 20 Lines |