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