1*5615f69bSLinus Walleij /* SPDX-License-Identifier: GPL-2.0 */ 2*5615f69bSLinus Walleij /* 3*5615f69bSLinus Walleij * arch/arm/include/asm/kasan.h 4*5615f69bSLinus Walleij * 5*5615f69bSLinus Walleij * Copyright (c) 2015 Samsung Electronics Co., Ltd. 6*5615f69bSLinus Walleij * Author: Andrey Ryabinin <ryabinin.a.a@gmail.com> 7*5615f69bSLinus Walleij * 8*5615f69bSLinus Walleij */ 9*5615f69bSLinus Walleij 10*5615f69bSLinus Walleij #ifndef __ASM_KASAN_H 11*5615f69bSLinus Walleij #define __ASM_KASAN_H 12*5615f69bSLinus Walleij 13*5615f69bSLinus Walleij #ifdef CONFIG_KASAN 14*5615f69bSLinus Walleij 15*5615f69bSLinus Walleij #include <asm/kasan_def.h> 16*5615f69bSLinus Walleij 17*5615f69bSLinus Walleij #define KASAN_SHADOW_SCALE_SHIFT 3 18*5615f69bSLinus Walleij 19*5615f69bSLinus Walleij /* 20*5615f69bSLinus Walleij * The compiler uses a shadow offset assuming that addresses start 21*5615f69bSLinus Walleij * from 0. Kernel addresses don't start from 0, so shadow 22*5615f69bSLinus Walleij * for kernel really starts from 'compiler's shadow offset' + 23*5615f69bSLinus Walleij * ('kernel address space start' >> KASAN_SHADOW_SCALE_SHIFT) 24*5615f69bSLinus Walleij */ 25*5615f69bSLinus Walleij 26*5615f69bSLinus Walleij asmlinkage void kasan_early_init(void); 27*5615f69bSLinus Walleij extern void kasan_init(void); 28*5615f69bSLinus Walleij 29*5615f69bSLinus Walleij #else kasan_init(void)30*5615f69bSLinus Walleijstatic inline void kasan_init(void) { } 31*5615f69bSLinus Walleij #endif 32*5615f69bSLinus Walleij 33*5615f69bSLinus Walleij #endif 34