0001
0002 #ifndef __ASM_UM_KASAN_H
0003 #define __ASM_UM_KASAN_H
0004
0005 #include <linux/init.h>
0006 #include <linux/const.h>
0007
0008 #define KASAN_SHADOW_OFFSET _AC(CONFIG_KASAN_SHADOW_OFFSET, UL)
0009
0010
0011 #define KASAN_SHADOW_SCALE_SHIFT 3
0012
0013 #ifdef CONFIG_X86_64
0014 #define KASAN_HOST_USER_SPACE_END_ADDR 0x00007fffffffffffUL
0015
0016 #define KASAN_SHADOW_SIZE ((KASAN_HOST_USER_SPACE_END_ADDR + 1) >> \
0017 KASAN_SHADOW_SCALE_SHIFT)
0018 #else
0019 #error "KASAN_SHADOW_SIZE is not defined for this sub-architecture"
0020 #endif
0021
0022 #define KASAN_SHADOW_START (KASAN_SHADOW_OFFSET)
0023 #define KASAN_SHADOW_END (KASAN_SHADOW_START + KASAN_SHADOW_SIZE)
0024
0025 #ifdef CONFIG_KASAN
0026 void kasan_init(void);
0027 void kasan_map_memory(void *start, unsigned long len);
0028 extern int kasan_um_is_ready;
0029
0030 #ifdef CONFIG_STATIC_LINK
0031 #define kasan_arch_is_ready() (kasan_um_is_ready)
0032 #endif
0033 #else
0034 static inline void kasan_init(void) { }
0035 #endif
0036
0037 #endif