1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /* SPDX-License-Identifier: GPL-2.0 */
- /*
- * Copyright (C) 2019 Arm Limited
- * Original author: Dave Martin <[email protected]>
- */
- #ifndef ASSEMBLER_H
- #define ASSEMBLER_H
- #define NT_GNU_PROPERTY_TYPE_0 5
- #define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000
- /* Bits for GNU_PROPERTY_AARCH64_FEATURE_1_BTI */
- #define GNU_PROPERTY_AARCH64_FEATURE_1_BTI (1U << 0)
- #define GNU_PROPERTY_AARCH64_FEATURE_1_PAC (1U << 1)
- .macro startfn name:req
- .globl \name
- \name:
- .macro endfn
- .size \name, . - \name
- .type \name, @function
- .purgem endfn
- .endm
- .endm
- .macro emit_aarch64_feature_1_and
- .pushsection .note.gnu.property, "a"
- .align 3
- .long 2f - 1f
- .long 6f - 3f
- .long NT_GNU_PROPERTY_TYPE_0
- 1: .string "GNU"
- 2:
- .align 3
- 3: .long GNU_PROPERTY_AARCH64_FEATURE_1_AND
- .long 5f - 4f
- 4:
- #if BTI
- .long GNU_PROPERTY_AARCH64_FEATURE_1_PAC | \
- GNU_PROPERTY_AARCH64_FEATURE_1_BTI
- #else
- .long 0
- #endif
- 5:
- .align 3
- 6:
- .popsection
- .endm
- .macro paciasp
- hint 0x19
- .endm
- .macro autiasp
- hint 0x1d
- .endm
- .macro __bti_
- hint 0x20
- .endm
- .macro __bti_c
- hint 0x22
- .endm
- .macro __bti_j
- hint 0x24
- .endm
- .macro __bti_jc
- hint 0x26
- .endm
- .macro bti what=
- __bti_\what
- .endm
- #endif /* ! ASSEMBLER_H */
|