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