at master 1.2 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Copyright (C) 2019 Arm Limited 4 * Original author: Dave Martin <Dave.Martin@arm.com> 5 */ 6 7#ifndef ASSEMBLER_H 8#define ASSEMBLER_H 9 10#define NT_GNU_PROPERTY_TYPE_0 5 11#define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000 12 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.macro startfn name:req 18 .globl \name 19\name: 20 .macro endfn 21 .size \name, . - \name 22 .type \name, @function 23 .purgem endfn 24 .endm 25.endm 26 27.macro emit_aarch64_feature_1_and 28 .pushsection .note.gnu.property, "a" 29 .align 3 30 .long 2f - 1f 31 .long 6f - 3f 32 .long NT_GNU_PROPERTY_TYPE_0 331: .string "GNU" 342: 35 .align 3 363: .long GNU_PROPERTY_AARCH64_FEATURE_1_AND 37 .long 5f - 4f 384: 39#if BTI 40 .long GNU_PROPERTY_AARCH64_FEATURE_1_PAC | \ 41 GNU_PROPERTY_AARCH64_FEATURE_1_BTI 42#else 43 .long 0 44#endif 455: 46 .align 3 476: 48 .popsection 49.endm 50 51.macro paciasp 52 hint 0x19 53.endm 54 55.macro autiasp 56 hint 0x1d 57.endm 58 59.macro __bti_ 60 hint 0x20 61.endm 62 63.macro __bti_c 64 hint 0x22 65.endm 66 67.macro __bti_j 68 hint 0x24 69.endm 70 71.macro __bti_jc 72 hint 0x26 73.endm 74 75.macro bti what= 76 __bti_\what 77.endm 78 79#endif /* ! ASSEMBLER_H */