projects/linux·blob master · refs

47 lines · 1.3 KiB

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 */