xref: /openbmc/linux/arch/powerpc/boot/page.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*2874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
294b212c2SPaul Mackerras #ifndef _PPC_BOOT_PAGE_H
394b212c2SPaul Mackerras #define _PPC_BOOT_PAGE_H
494b212c2SPaul Mackerras /*
594b212c2SPaul Mackerras  * Copyright (C) 2001 PPC64 Team, IBM Corp
694b212c2SPaul Mackerras  */
794b212c2SPaul Mackerras 
894b212c2SPaul Mackerras #ifdef __ASSEMBLY__
994b212c2SPaul Mackerras #define ASM_CONST(x) x
1094b212c2SPaul Mackerras #else
1194b212c2SPaul Mackerras #define __ASM_CONST(x) x##UL
1294b212c2SPaul Mackerras #define ASM_CONST(x) __ASM_CONST(x)
1394b212c2SPaul Mackerras #endif
1494b212c2SPaul Mackerras 
1594b212c2SPaul Mackerras /* PAGE_SHIFT determines the page size */
1694b212c2SPaul Mackerras #define PAGE_SHIFT	12
1794b212c2SPaul Mackerras #define PAGE_SIZE	(ASM_CONST(1) << PAGE_SHIFT)
1894b212c2SPaul Mackerras #define PAGE_MASK	(~(PAGE_SIZE-1))
1994b212c2SPaul Mackerras 
2094b212c2SPaul Mackerras /* align addr on a size boundary - adjust address up/down if needed */
21f78f7ed7SAneesh Kumar K.V #define _ALIGN_UP(addr, size)	(((addr)+((size)-1))&(~((typeof(addr))(size)-1)))
22f78f7ed7SAneesh Kumar K.V #define _ALIGN_DOWN(addr, size)	((addr)&(~((typeof(addr))(size)-1)))
2394b212c2SPaul Mackerras 
2494b212c2SPaul Mackerras /* align addr on a size boundary - adjust address up if needed */
2594b212c2SPaul Mackerras #define _ALIGN(addr,size)     _ALIGN_UP(addr,size)
2694b212c2SPaul Mackerras 
2794b212c2SPaul Mackerras /* to align the pointer to the (next) page boundary */
2894b212c2SPaul Mackerras #define PAGE_ALIGN(addr)	_ALIGN(addr, PAGE_SIZE)
2994b212c2SPaul Mackerras 
3094b212c2SPaul Mackerras #endif				/* _PPC_BOOT_PAGE_H */
31