xref: /OK3568_Linux_fs/kernel/arch/powerpc/boot/page.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun #ifndef _PPC_BOOT_PAGE_H
3*4882a593Smuzhiyun #define _PPC_BOOT_PAGE_H
4*4882a593Smuzhiyun /*
5*4882a593Smuzhiyun  * Copyright (C) 2001 PPC64 Team, IBM Corp
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #ifdef __ASSEMBLY__
9*4882a593Smuzhiyun #define ASM_CONST(x) x
10*4882a593Smuzhiyun #else
11*4882a593Smuzhiyun #define __ASM_CONST(x) x##UL
12*4882a593Smuzhiyun #define ASM_CONST(x) __ASM_CONST(x)
13*4882a593Smuzhiyun #endif
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun /* PAGE_SHIFT determines the page size */
16*4882a593Smuzhiyun #define PAGE_SHIFT	12
17*4882a593Smuzhiyun #define PAGE_SIZE	(ASM_CONST(1) << PAGE_SHIFT)
18*4882a593Smuzhiyun #define PAGE_MASK	(~(PAGE_SIZE-1))
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun /* align addr on a size boundary - adjust address up/down if needed */
21*4882a593Smuzhiyun #define _ALIGN_UP(addr, size)	(((addr)+((size)-1))&(~((typeof(addr))(size)-1)))
22*4882a593Smuzhiyun #define _ALIGN_DOWN(addr, size)	((addr)&(~((typeof(addr))(size)-1)))
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun /* align addr on a size boundary - adjust address up if needed */
25*4882a593Smuzhiyun #define _ALIGN(addr,size)     _ALIGN_UP(addr,size)
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun /* to align the pointer to the (next) page boundary */
28*4882a593Smuzhiyun #define PAGE_ALIGN(addr)	_ALIGN(addr, PAGE_SIZE)
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #endif				/* _PPC_BOOT_PAGE_H */
31