1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Copyright (C) 2020 Western Digital Corporation or its affiliates.
4 */
5#ifndef __ASM_SECTIONS_H
6#define __ASM_SECTIONS_H
7
8#include <asm-generic/sections.h>
9#include <linux/mm.h>
10
11extern char _start[];
12extern char _start_kernel[];
13extern char __init_data_begin[], __init_data_end[];
14extern char __init_text_begin[], __init_text_end[];
15extern char __alt_start[], __alt_end[];
16extern char __exittext_begin[], __exittext_end[];
17
18static inline bool is_va_kernel_text(uintptr_t va)
19{
20	uintptr_t start = (uintptr_t)_start;
21	uintptr_t end = (uintptr_t)__init_data_begin;
22
23	return va >= start && va < end;
24}
25
26static inline bool is_va_kernel_lm_alias_text(uintptr_t va)
27{
28	uintptr_t start = (uintptr_t)lm_alias(_start);
29	uintptr_t end = (uintptr_t)lm_alias(__init_data_begin);
30
31	return va >= start && va < end;
32}
33
34#endif /* __ASM_SECTIONS_H */
35