Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/include/mmuvar.h
Show First 20 Lines • Show All 176 Lines • ▼ Show 20 Lines | |||||
struct mmu_kobj { | struct mmu_kobj { | ||||
const char *name; | const char *name; | ||||
const struct mmu_kobj *base; | const struct mmu_kobj *base; | ||||
const struct pmap_funcs *funcs; | const struct pmap_funcs *funcs; | ||||
}; | }; | ||||
typedef struct mmu_kobj *mmu_t; | typedef struct mmu_kobj *mmu_t; | ||||
/* The currently installed pmap object. */ | |||||
extern mmu_t mmu_obj; | |||||
/* | |||||
* Resolve a given pmap function. | |||||
* 'func' is the function name less the 'pmap_' * prefix. | |||||
*/ | |||||
#define PMAP_RESOLVE_FUNC(func) \ | |||||
({ \ | |||||
pmap_##func##_t f; \ | |||||
const struct mmu_kobj *mmu = mmu_obj; \ | |||||
do { \ | |||||
f = mmu->funcs->func; \ | |||||
if (f != NULL) break; \ | |||||
mmu = mmu->base; \ | |||||
} while (mmu != NULL); \ | |||||
f;}) | |||||
#define MMU_DEF(name, ident, methods) \ | #define MMU_DEF(name, ident, methods) \ | ||||
\ | \ | ||||
const struct mmu_kobj name = { \ | const struct mmu_kobj name = { \ | ||||
ident, NULL, &methods \ | ident, NULL, &methods \ | ||||
}; \ | }; \ | ||||
DATA_SET(mmu_set, name) | DATA_SET(mmu_set, name) | ||||
#define MMU_DEF_INHERIT(name, ident, methods, base1) \ | #define MMU_DEF_INHERIT(name, ident, methods, base1) \ | ||||
Show All 16 Lines |