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