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