18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * arch/arm/include/asm/kasan.h 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (c) 2015 Samsung Electronics Co., Ltd. 68c2ecf20Sopenharmony_ci * Author: Andrey Ryabinin <ryabinin.a.a@gmail.com> 78c2ecf20Sopenharmony_ci * 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#ifndef __ASM_KASAN_H 118c2ecf20Sopenharmony_ci#define __ASM_KASAN_H 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#ifdef CONFIG_KASAN 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci#include <asm/kasan_def.h> 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci#define KASAN_SHADOW_SCALE_SHIFT 3 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci/* 208c2ecf20Sopenharmony_ci * The compiler uses a shadow offset assuming that addresses start 218c2ecf20Sopenharmony_ci * from 0. Kernel addresses don't start from 0, so shadow 228c2ecf20Sopenharmony_ci * for kernel really starts from 'compiler's shadow offset' + 238c2ecf20Sopenharmony_ci * ('kernel address space start' >> KASAN_SHADOW_SCALE_SHIFT) 248c2ecf20Sopenharmony_ci */ 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ciasmlinkage void kasan_early_init(void); 278c2ecf20Sopenharmony_ciextern void kasan_init(void); 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci#else 308c2ecf20Sopenharmony_cistatic inline void kasan_init(void) { } 318c2ecf20Sopenharmony_ci#endif 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci#endif 34