xref: /netbsd-src/sys/arch/powerpc/include/pmap.h (revision d16b7486a53dcb8072b60ec6fcb4373a2d0c27b7)
1 /*	$NetBSD: pmap.h,v 1.42 2022/05/07 07:10:46 rin Exp $	*/
2 
3 #ifndef _POWERPC_PMAP_H_
4 #define _POWERPC_PMAP_H_
5 
6 #ifdef _KERNEL_OPT
7 #include "opt_ppcarch.h"
8 #include "opt_modular.h"
9 #endif
10 
11 #if !defined(_MODULE)
12 
13 #if defined(PPC_BOOKE)
14 #include <powerpc/booke/pmap.h>
15 #elif defined(PPC_IBM4XX)
16 #include <powerpc/ibm4xx/pmap.h>
17 #elif defined(PPC_OEA) || defined (PPC_OEA64) || defined (PPC_OEA64_BRIDGE)
18 #include <powerpc/oea/pmap.h>
19 #elif defined(_KERNEL)
20 #error unknown PPC variant
21 #endif
22 
23 #endif /* !_MODULE */
24 
25 #if !defined(_LOCORE) && (defined(MODULAR) || defined(_MODULE))
26 /*
27  * Both BOOKE and OEA use __HAVE_VM_PAGE_MD but IBM4XX doesn't so define
28  * a compatible vm_page_md so that struct vm_page is the same size for all
29  * PPC variants.
30  */
31 #ifndef __HAVE_VM_PAGE_MD
32 #define __HAVE_VM_PAGE_MD
33 #define VM_MDPAGE_INIT(pg) __nothing
34 
35 struct vm_page_md {
36 	uintptr_t mdpg_dummy[5];
37 };
38 #endif /* !__HAVE_VM_PAGE_MD */
39 
40 __CTASSERT(sizeof(struct vm_page_md) == sizeof(uintptr_t)*5);
41 
42 #ifndef __HAVE_PMAP_PV_TRACK
43 /*
44  * We need empty stubs for modules shared with all sub-archs.
45  */
46 #define	__HAVE_PMAP_PV_TRACK
47 #define	PMAP_PV_TRACK_ONLY_STUBS
48 #include <uvm/pmap/pmap_pvt.h>
49 #endif /* !__HAVE_PMAP_PV_TRACK */
50 
51 #endif /* !LOCORE && (MODULAR || _MODULE) */
52 
53 #endif /* !_POWERPC_PMAP_H_ */
54