Commit | Line | Data |
---|---|---|
92ab45c5 CL |
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef _ASM_POWERPC_TASK_SIZE_64_H | |
3 | #define _ASM_POWERPC_TASK_SIZE_64_H | |
4 | ||
5 | /* | |
6 | * 64-bit user address space can have multiple limits | |
7 | * For now supported values are: | |
8 | */ | |
9 | #define TASK_SIZE_64TB (0x0000400000000000UL) | |
10 | #define TASK_SIZE_128TB (0x0000800000000000UL) | |
11 | #define TASK_SIZE_512TB (0x0002000000000000UL) | |
12 | #define TASK_SIZE_1PB (0x0004000000000000UL) | |
13 | #define TASK_SIZE_2PB (0x0008000000000000UL) | |
14 | ||
15 | /* | |
16 | * With 52 bits in the address we can support up to 4PB of range. | |
17 | */ | |
18 | #define TASK_SIZE_4PB (0x0010000000000000UL) | |
19 | ||
20 | /* | |
21 | * For now 512TB is only supported with book3s and 64K linux page size. | |
22 | */ | |
5874cabe | 23 | #ifdef CONFIG_PPC_64K_PAGES |
92ab45c5 CL |
24 | /* |
25 | * Max value currently used: | |
26 | */ | |
27 | #define TASK_SIZE_USER64 TASK_SIZE_4PB | |
28 | #define DEFAULT_MAP_WINDOW_USER64 TASK_SIZE_128TB | |
29 | #define TASK_CONTEXT_SIZE TASK_SIZE_512TB | |
30 | #else | |
31 | #define TASK_SIZE_USER64 TASK_SIZE_64TB | |
32 | #define DEFAULT_MAP_WINDOW_USER64 TASK_SIZE_64TB | |
33 | ||
34 | /* | |
35 | * We don't need to allocate extended context ids for 4K page size, because we | |
36 | * limit the max effective address on this config to 64TB. | |
37 | */ | |
38 | #define TASK_CONTEXT_SIZE TASK_SIZE_64TB | |
39 | #endif | |
40 | ||
41 | /* | |
42 | * 32-bit user address space is 4GB - 1 page | |
43 | * (this 1 page is needed so referencing of 0xFFFFFFFF generates EFAULT | |
44 | */ | |
45 | #define TASK_SIZE_USER32 (0x0000000100000000UL - (1 * PAGE_SIZE)) | |
46 | ||
47 | #define TASK_SIZE_OF(tsk) \ | |
48 | (test_tsk_thread_flag(tsk, TIF_32BIT) ? TASK_SIZE_USER32 : \ | |
49 | TASK_SIZE_USER64) | |
50 | ||
51 | #define TASK_SIZE TASK_SIZE_OF(current) | |
52 | ||
53 | #define TASK_UNMAPPED_BASE_USER32 (PAGE_ALIGN(TASK_SIZE_USER32 / 4)) | |
54 | #define TASK_UNMAPPED_BASE_USER64 (PAGE_ALIGN(DEFAULT_MAP_WINDOW_USER64 / 4)) | |
55 | ||
56 | /* | |
57 | * This decides where the kernel will search for a free chunk of vm space during | |
58 | * mmap's. | |
59 | */ | |
60 | #define TASK_UNMAPPED_BASE \ | |
61 | ((is_32bit_task()) ? TASK_UNMAPPED_BASE_USER32 : TASK_UNMAPPED_BASE_USER64) | |
62 | ||
63 | /* | |
64 | * Initial task size value for user applications. For book3s 64 we start | |
65 | * with 128TB and conditionally enable upto 512TB | |
66 | */ | |
67 | #ifdef CONFIG_PPC_BOOK3S_64 | |
68 | #define DEFAULT_MAP_WINDOW \ | |
69 | ((is_32bit_task()) ? TASK_SIZE_USER32 : DEFAULT_MAP_WINDOW_USER64) | |
70 | #else | |
71 | #define DEFAULT_MAP_WINDOW TASK_SIZE | |
72 | #endif | |
73 | ||
74 | #define STACK_TOP_USER64 DEFAULT_MAP_WINDOW_USER64 | |
75 | #define STACK_TOP_USER32 TASK_SIZE_USER32 | |
76 | #define STACK_TOP_MAX TASK_SIZE_USER64 | |
77 | #define STACK_TOP (is_32bit_task() ? STACK_TOP_USER32 : STACK_TOP_USER64) | |
78 | ||
79 | #endif /* _ASM_POWERPC_TASK_SIZE_64_H */ |