1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _ASM_X86_KASAN_H 3 #define _ASM_X86_KASAN_H 4 5 #include <linux/const.h> 6 #define KASAN_SHADOW_OFFSET _AC(CONFIG_KASAN_SHADOW_OFFSET, UL) 7 8 /* 9 * Compiler uses shadow offset assuming that addresses start 10 * from 0. Kernel addresses don't start from 0, so shadow 11 * for kernel really starts from compiler's shadow offset + 12 * 'kernel address space start' >> KASAN_SHADOW_SCALE_SHIFT 13 */ 14 #define KASAN_SHADOW_START (KASAN_SHADOW_OFFSET + \ 15 ((-1UL << __VIRTUAL_MASK_SHIFT) >> 3)) 16 /* 17 * 47 bits for kernel address -> (47 - 3) bits for shadow 18 * 56 bits for kernel address -> (56 - 3) bits for shadow 19 */ 20 #define KASAN_SHADOW_END (KASAN_SHADOW_START + (1ULL << (__VIRTUAL_MASK_SHIFT - 3))) 21 22 #ifndef __ASSEMBLY__ 23 24 #ifdef CONFIG_KASAN 25 void __init kasan_early_init(void); 26 void __init kasan_init(void); 27 #else 28 static inline void kasan_early_init(void) { } 29 static inline void kasan_init(void) { } 30 #endif 31 32 #endif 33 34 #endif 35