/* $NetBSD: asm.h,v 1.9 2020/08/02 06:58:16 maxv Exp $ */ #ifndef _AARCH64_ASM_H_ #define _AARCH64_ASM_H_ #if defined(_KERNEL_OPT) #include "opt_cpuoptions.h" #endif #include #ifdef __aarch64__ #ifdef __ASSEMBLER__ .macro adrl reg, addr adrp \reg, \addr add \reg, \reg, #:lo12:\addr .endm #endif #define fp x29 #define lr x30 /* * Add a speculation barrier after the 'eret'. * Some aarch64 cpus speculatively execute instructions after 'eret', * and this potentiates side-channel attacks. */ #define ERET \ eret; dsb sy; isb /* * ARMv8 options to be made available for the compiler to use. Should be * inserted at the beginning of the ASM files that need them. * * The options are: * - PAN, needed for the compiler to recognize the PAN register. * - PAC, needed for the compiler to recognize the key registers. */ #ifdef ARMV83_PAC #define ARMV8_DEFINE_OPTIONS \ .arch armv8.3-a #elif defined(ARMV81_PAN) #define ARMV8_DEFINE_OPTIONS \ .arch armv8.1-a #else #define ARMV8_DEFINE_OPTIONS /* nothing */ #endif #endif #endif /* !_AARCH64_ASM_H_ */