linux/arch/x86/include/asm/sections.h
<<
>>
Prefs
   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
  10extern char __brk_base[], __brk_limit[];
  11extern char __end_rodata_aligned[];
  12
  13#if defined(CONFIG_X86_64)
  14extern char __end_rodata_hpage_align[];
  15#endif
  16
  17extern char __end_of_kernel_reserve[];
  18
  19extern unsigned long _brk_start, _brk_end;
  20
  21static inline bool arch_is_kernel_initmem_freed(unsigned long addr)
  22{
  23        /*
  24         * If _brk_start has not been cleared, brk allocation is incomplete,
  25         * and we can not make assumptions about its use.
  26         */
  27        if (_brk_start)
  28                return 0;
  29
  30        /*
  31         * After brk allocation is complete, space between _brk_end and _end
  32         * is available for allocation.
  33         */
  34        return addr >= _brk_end && addr < (unsigned long)&_end;
  35}
  36
  37#endif  /* _ASM_X86_SECTIONS_H */
  38