xref: /linux/arch/powerpc/include/asm/task_size_32.h (revision 69050f8d6d075dc01af7a5f2f550a8067510366f)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _ASM_POWERPC_TASK_SIZE_32_H
3 #define _ASM_POWERPC_TASK_SIZE_32_H
4 
5 #include <linux/sizes.h>
6 
7 #if CONFIG_TASK_SIZE > CONFIG_KERNEL_START
8 #error User TASK_SIZE overlaps with KERNEL_START address
9 #endif
10 
11 #ifdef CONFIG_PPC_8xx
12 #define MODULES_END	ASM_CONST(CONFIG_PAGE_OFFSET)
13 #define MODULES_SIZE	(CONFIG_MODULES_SIZE * SZ_1M)
14 #define MODULES_VADDR	(MODULES_END - MODULES_SIZE)
15 #define MODULES_BASE	(MODULES_VADDR & ~(UL(SZ_4M) - 1))
16 #define USER_TOP	(MODULES_BASE - SZ_4M)
17 #endif
18 
19 #ifdef CONFIG_PPC_BOOK3S_32
20 #define MODULES_END	(ASM_CONST(CONFIG_PAGE_OFFSET) & ~(UL(SZ_256M) - 1))
21 #define MODULES_SIZE	(CONFIG_MODULES_SIZE * SZ_1M)
22 #define MODULES_VADDR	(MODULES_END - MODULES_SIZE)
23 #define MODULES_BASE	(MODULES_VADDR & ~(UL(SZ_256M) - 1))
24 #define USER_TOP	(MODULES_BASE - SZ_4M)
25 #endif
26 
27 #ifndef USER_TOP
28 #define USER_TOP	((ASM_CONST(CONFIG_PAGE_OFFSET) - SZ_128K) & ~(UL(SZ_128K) - 1))
29 #endif
30 
31 #if CONFIG_TASK_SIZE < USER_TOP
32 #define TASK_SIZE ASM_CONST(CONFIG_TASK_SIZE)
33 #else
34 #define TASK_SIZE USER_TOP
35 #endif
36 
37 /*
38  * This decides where the kernel will search for a free chunk of vm space during
39  * mmap's.
40  */
41 #define TASK_UNMAPPED_BASE (TASK_SIZE / 8 * 3)
42 
43 #define DEFAULT_MAP_WINDOW TASK_SIZE
44 #define STACK_TOP TASK_SIZE
45 #define STACK_TOP_MAX STACK_TOP
46 
47 #endif /* _ASM_POWERPC_TASK_SIZE_32_H */
48