Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef _ASM_X86_SECTIONS_H
0003 #define _ASM_X86_SECTIONS_H
0004 
0005 #define arch_is_kernel_initmem_freed arch_is_kernel_initmem_freed
0006 
0007 #include <asm-generic/sections.h>
0008 #include <asm/extable.h>
0009 
0010 extern char __brk_base[], __brk_limit[];
0011 extern char __end_rodata_aligned[];
0012 
0013 #if defined(CONFIG_X86_64)
0014 extern char __end_rodata_hpage_align[];
0015 #endif
0016 
0017 extern char __end_of_kernel_reserve[];
0018 
0019 extern unsigned long _brk_start, _brk_end;
0020 
0021 static inline bool arch_is_kernel_initmem_freed(unsigned long addr)
0022 {
0023     /*
0024      * If _brk_start has not been cleared, brk allocation is incomplete,
0025      * and we can not make assumptions about its use.
0026      */
0027     if (_brk_start)
0028         return 0;
0029 
0030     /*
0031      * After brk allocation is complete, space between _brk_end and _end
0032      * is available for allocation.
0033      */
0034     return addr >= _brk_end && addr < (unsigned long)&_end;
0035 }
0036 
0037 #endif  /* _ASM_X86_SECTIONS_H */