mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-06-13 06:00:13 -04:00
While the GCC and Clang compilers already define __ASSEMBLER__ automatically when compiling assembly code, __ASSEMBLY__ is a macro that only gets defined by the Makefiles in the kernel. This can be very confusing when switching between userspace and kernelspace coding, or when dealing with uapi headers that rather should use __ASSEMBLER__ instead. So let's standardize on the __ASSEMBLER__ macro that is provided by the compilers now. This originally was a completely mechanical patch (done with a simple "sed -i" statement), with some manual fixups during rebasing of the patch later. Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Albert Ou <aou@eecs.berkeley.edu> Cc: Alexandre Ghiti <alex@ghiti.fr> Cc: linux-riscv@lists.infradead.org Signed-off-by: Thomas Huth <thuth@redhat.com> Link: https://lore.kernel.org/r/20250606070952.498274-3-thuth@redhat.com Signed-off-by: Paul Walmsley <pjw@kernel.org>
46 lines
1.6 KiB
C
46 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/* Copyright (C) 2019 Andes Technology Corporation */
|
|
|
|
#ifndef __ASM_KASAN_H
|
|
#define __ASM_KASAN_H
|
|
|
|
#ifndef __ASSEMBLER__
|
|
|
|
/*
|
|
* The following comment was copied from arm64:
|
|
* KASAN_SHADOW_START: beginning of the kernel virtual addresses.
|
|
* KASAN_SHADOW_END: KASAN_SHADOW_START + 1/N of kernel virtual addresses,
|
|
* where N = (1 << KASAN_SHADOW_SCALE_SHIFT).
|
|
*
|
|
* KASAN_SHADOW_OFFSET:
|
|
* This value is used to map an address to the corresponding shadow
|
|
* address by the following formula:
|
|
* shadow_addr = (address >> KASAN_SHADOW_SCALE_SHIFT) + KASAN_SHADOW_OFFSET
|
|
*
|
|
* (1 << (64 - KASAN_SHADOW_SCALE_SHIFT)) shadow addresses that lie in range
|
|
* [KASAN_SHADOW_OFFSET, KASAN_SHADOW_END) cover all 64-bits of virtual
|
|
* addresses. So KASAN_SHADOW_OFFSET should satisfy the following equation:
|
|
* KASAN_SHADOW_OFFSET = KASAN_SHADOW_END -
|
|
* (1ULL << (64 - KASAN_SHADOW_SCALE_SHIFT))
|
|
*/
|
|
#define KASAN_SHADOW_SCALE_SHIFT 3
|
|
|
|
#define KASAN_SHADOW_SIZE (UL(1) << ((VA_BITS - 1) - KASAN_SHADOW_SCALE_SHIFT))
|
|
/*
|
|
* Depending on the size of the virtual address space, the region may not be
|
|
* aligned on PGDIR_SIZE, so force its alignment to ease its population.
|
|
*/
|
|
#define KASAN_SHADOW_START ((KASAN_SHADOW_END - KASAN_SHADOW_SIZE) & PGDIR_MASK)
|
|
#define KASAN_SHADOW_END MODULES_LOWEST_VADDR
|
|
|
|
#ifdef CONFIG_KASAN
|
|
#define KASAN_SHADOW_OFFSET _AC(CONFIG_KASAN_SHADOW_OFFSET, UL)
|
|
|
|
void kasan_init(void);
|
|
asmlinkage void kasan_early_init(void);
|
|
void kasan_swapper_init(void);
|
|
|
|
#endif
|
|
#endif
|
|
#endif /* __ASM_KASAN_H */
|