162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * arch/arm/include/asm/kasan.h 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (c) 2015 Samsung Electronics Co., Ltd. 662306a36Sopenharmony_ci * Author: Andrey Ryabinin <ryabinin.a.a@gmail.com> 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#ifndef __ASM_KASAN_H 1162306a36Sopenharmony_ci#define __ASM_KASAN_H 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#ifdef CONFIG_KASAN 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#include <asm/kasan_def.h> 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#define KASAN_SHADOW_SCALE_SHIFT 3 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci/* 2062306a36Sopenharmony_ci * The compiler uses a shadow offset assuming that addresses start 2162306a36Sopenharmony_ci * from 0. Kernel addresses don't start from 0, so shadow 2262306a36Sopenharmony_ci * for kernel really starts from 'compiler's shadow offset' + 2362306a36Sopenharmony_ci * ('kernel address space start' >> KASAN_SHADOW_SCALE_SHIFT) 2462306a36Sopenharmony_ci */ 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ciasmlinkage void kasan_early_init(void); 2762306a36Sopenharmony_ciextern void kasan_init(void); 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci#else 3062306a36Sopenharmony_cistatic inline void kasan_init(void) { } 3162306a36Sopenharmony_ci#endif 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci#endif 34