1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef __ASM_KASAN_H
3#define __ASM_KASAN_H
4
5#ifndef __ASSEMBLY__
6
7#ifdef CONFIG_KASAN
8
9#include <linux/kernel.h>
10#include <linux/sizes.h>
11#include <asm/kmem_layout.h>
12
13#define KASAN_SHADOW_SCALE_SHIFT 3
14
15/* Start of area covered by KASAN */
16#define KASAN_START_VADDR __XTENSA_UL_CONST(0x90000000)
17/* Start of the shadow map */
18#define KASAN_SHADOW_START (XCHAL_PAGE_TABLE_VADDR + XCHAL_PAGE_TABLE_SIZE)
19/* Size of the shadow map */
20#define KASAN_SHADOW_SIZE (-KASAN_START_VADDR >> KASAN_SHADOW_SCALE_SHIFT)
21/* End of the shadow map */
22#define KASAN_SHADOW_END (KASAN_SHADOW_START + KASAN_SHADOW_SIZE)
23/* Offset for mem to shadow address transformation */
24#define KASAN_SHADOW_OFFSET __XTENSA_UL_CONST(CONFIG_KASAN_SHADOW_OFFSET)
25
26void __init kasan_early_init(void);
27void __init kasan_init(void);
28
29#else
30
31static inline void kasan_early_init(void)
32{
33}
34
35static inline void kasan_init(void)
36{
37}
38
39#endif
40#endif
41#endif
42