xref: /openbmc/linux/arch/m68k/include/asm/page.h (revision d82f07f0)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2138ff346SGreg Ungerer #ifndef _M68K_PAGE_H
3138ff346SGreg Ungerer #define _M68K_PAGE_H
4138ff346SGreg Ungerer 
5138ff346SGreg Ungerer #include <linux/const.h>
6138ff346SGreg Ungerer #include <asm/setup.h>
7138ff346SGreg Ungerer #include <asm/page_offset.h>
8138ff346SGreg Ungerer 
9138ff346SGreg Ungerer /* PAGE_SHIFT determines the page size */
109e95f7cdSGreg Ungerer #if defined(CONFIG_SUN3) || defined(CONFIG_COLDFIRE)
119e95f7cdSGreg Ungerer #define PAGE_SHIFT	13
1249148020SSam Ravnborg #else
139e95f7cdSGreg Ungerer #define PAGE_SHIFT	12
1449148020SSam Ravnborg #endif
15138ff346SGreg Ungerer #define PAGE_SIZE	(_AC(1, UL) << PAGE_SHIFT)
16138ff346SGreg Ungerer #define PAGE_MASK	(~(PAGE_SIZE-1))
17138ff346SGreg Ungerer #define PAGE_OFFSET	(PAGE_OFFSET_RAW)
18138ff346SGreg Ungerer 
19138ff346SGreg Ungerer #ifndef __ASSEMBLY__
20138ff346SGreg Ungerer 
21138ff346SGreg Ungerer /*
22138ff346SGreg Ungerer  * These are used to make use of C type-checking..
23138ff346SGreg Ungerer  */
2460e50f34SMike Rapoport #if !defined(CONFIG_MMU) || CONFIG_PGTABLE_LEVELS == 3
25ef22d8abSPeter Zijlstra typedef struct { unsigned long pmd; } pmd_t;
26ef22d8abSPeter Zijlstra #define pmd_val(x)	((&x)->pmd)
27ef22d8abSPeter Zijlstra #define __pmd(x)	((pmd_t) { (x) } )
2860e50f34SMike Rapoport #endif
2960e50f34SMike Rapoport 
3060e50f34SMike Rapoport typedef struct { unsigned long pte; } pte_t;
31138ff346SGreg Ungerer typedef struct { unsigned long pgd; } pgd_t;
32138ff346SGreg Ungerer typedef struct { unsigned long pgprot; } pgprot_t;
3361c64a25SPeter Zijlstra 
34de9e354eSWill Deacon #if defined(CONFIG_SUN3)
35de9e354eSWill Deacon /*
36de9e354eSWill Deacon  * Sun3 still uses the asm-generic/pgalloc.h code and thus needs this
37de9e354eSWill Deacon  * definition. It would be possible to unify Sun3 and ColdFire pgalloc and have
38de9e354eSWill Deacon  * all of m68k use the same type.
39de9e354eSWill Deacon  */
40138ff346SGreg Ungerer typedef struct page *pgtable_t;
4161c64a25SPeter Zijlstra #else
4261c64a25SPeter Zijlstra typedef pte_t *pgtable_t;
4361c64a25SPeter Zijlstra #endif
44138ff346SGreg Ungerer 
45138ff346SGreg Ungerer #define pte_val(x)	((x).pte)
46138ff346SGreg Ungerer #define pgd_val(x)	((x).pgd)
47138ff346SGreg Ungerer #define pgprot_val(x)	((x).pgprot)
48138ff346SGreg Ungerer 
49138ff346SGreg Ungerer #define __pte(x)	((pte_t) { (x) } )
50138ff346SGreg Ungerer #define __pgd(x)	((pgd_t) { (x) } )
51138ff346SGreg Ungerer #define __pgprot(x)	((pgprot_t) { (x) } )
52138ff346SGreg Ungerer 
5388be3515SGreg Ungerer extern unsigned long _rambase;
5488be3515SGreg Ungerer extern unsigned long _ramstart;
5588be3515SGreg Ungerer extern unsigned long _ramend;
5688be3515SGreg Ungerer 
57138ff346SGreg Ungerer #endif /* !__ASSEMBLY__ */
58138ff346SGreg Ungerer 
59138ff346SGreg Ungerer #ifdef CONFIG_MMU
60a1ce3928SDavid Howells #include <asm/page_mm.h>
61138ff346SGreg Ungerer #else
62a1ce3928SDavid Howells #include <asm/page_no.h>
63138ff346SGreg Ungerer #endif
64138ff346SGreg Ungerer 
65138ff346SGreg Ungerer #include <asm-generic/getorder.h>
66*d82f07f0SMike Rapoport (IBM) #include <asm-generic/memory_model.h>
67138ff346SGreg Ungerer 
68138ff346SGreg Ungerer #endif /* _M68K_PAGE_H */
69