81 lines
1.2 KiB
C
81 lines
1.2 KiB
C
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||
|
/*
|
||
|
* Copyright (C) 2019 Arm Limited
|
||
|
* Original author: Dave Martin <Dave.Martin@arm.com>
|
||
|
*/
|
||
|
|
||
|
#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 */
|