81 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * Copyright (C) 2019 Arm Limited4 * Original author: Dave Martin <Dave.Martin@arm.com>5 */6 7#ifndef ASSEMBLER_H8#define ASSEMBLER_H9 10#define NT_GNU_PROPERTY_TYPE_0 511#define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc000000012 13/* Bits for GNU_PROPERTY_AARCH64_FEATURE_1_BTI */14#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI (1U << 0)15#define GNU_PROPERTY_AARCH64_FEATURE_1_PAC (1U << 1)16 17 18.macro startfn name:req19 .globl \name20\name:21 .macro endfn22 .size \name, . - \name23 .type \name, @function24 .purgem endfn25 .endm26.endm27 28.macro emit_aarch64_feature_1_and29 .pushsection .note.gnu.property, "a"30 .align 331 .long 2f - 1f32 .long 6f - 3f33 .long NT_GNU_PROPERTY_TYPE_0341: .string "GNU"352:36 .align 3373: .long GNU_PROPERTY_AARCH64_FEATURE_1_AND38 .long 5f - 4f394:40#if BTI41 .long GNU_PROPERTY_AARCH64_FEATURE_1_PAC | \42 GNU_PROPERTY_AARCH64_FEATURE_1_BTI43#else44 .long 045#endif465:47 .align 3486:49 .popsection50.endm51 52.macro paciasp53 hint 0x1954.endm55 56.macro autiasp57 hint 0x1d58.endm59 60.macro __bti_61 hint 0x2062.endm63 64.macro __bti_c65 hint 0x2266.endm67 68.macro __bti_j69 hint 0x2470.endm71 72.macro __bti_jc73 hint 0x2674.endm75 76.macro bti what=77 __bti_\what78.endm79 80#endif /* ! ASSEMBLER_H */81