xref: /OK3568_Linux_fs/kernel/arch/x86/include/asm/sections.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _ASM_X86_SECTIONS_H
3 #define _ASM_X86_SECTIONS_H
4 
5 #define arch_is_kernel_initmem_freed arch_is_kernel_initmem_freed
6 
7 #include <asm-generic/sections.h>
8 #include <asm/extable.h>
9 
10 extern char __brk_base[], __brk_limit[];
11 extern char __cfi_jt_start[], __cfi_jt_end[];
12 extern char __end_rodata_aligned[];
13 
14 #if defined(CONFIG_X86_64)
15 extern char __end_rodata_hpage_align[];
16 #endif
17 
18 extern char __end_of_kernel_reserve[];
19 
20 extern unsigned long _brk_start, _brk_end;
21 
arch_is_kernel_initmem_freed(unsigned long addr)22 static inline bool arch_is_kernel_initmem_freed(unsigned long addr)
23 {
24 	/*
25 	 * If _brk_start has not been cleared, brk allocation is incomplete,
26 	 * and we can not make assumptions about its use.
27 	 */
28 	if (_brk_start)
29 		return 0;
30 
31 	/*
32 	 * After brk allocation is complete, space between _brk_end and _end
33 	 * is available for allocation.
34 	 */
35 	return addr >= _brk_end && addr < (unsigned long)&_end;
36 }
37 
38 #endif	/* _ASM_X86_SECTIONS_H */
39