mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 14:23:09 +00:00
sys/param.h was manually adjusted to not define __NetBSD_Version__ since it will be defined by the compiler.
52 lines
1.1 KiB
C
Vendored
52 lines
1.1 KiB
C
Vendored
/* $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 <arm/asm.h>
|
|
|
|
#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_ */ |