Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/testing/selftests/arm64/bti/assembler.h
26299 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
/*
3
* Copyright (C) 2019 Arm Limited
4
* Original author: Dave Martin <[email protected]>
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
18
.macro startfn name:req
19
.globl \name
20
\name:
21
.macro endfn
22
.size \name, . - \name
23
.type \name, @function
24
.purgem endfn
25
.endm
26
.endm
27
28
.macro emit_aarch64_feature_1_and
29
.pushsection .note.gnu.property, "a"
30
.align 3
31
.long 2f - 1f
32
.long 6f - 3f
33
.long NT_GNU_PROPERTY_TYPE_0
34
1: .string "GNU"
35
2:
36
.align 3
37
3: .long GNU_PROPERTY_AARCH64_FEATURE_1_AND
38
.long 5f - 4f
39
4:
40
#if BTI
41
.long GNU_PROPERTY_AARCH64_FEATURE_1_PAC | \
42
GNU_PROPERTY_AARCH64_FEATURE_1_BTI
43
#else
44
.long 0
45
#endif
46
5:
47
.align 3
48
6:
49
.popsection
50
.endm
51
52
.macro paciasp
53
hint 0x19
54
.endm
55
56
.macro autiasp
57
hint 0x1d
58
.endm
59
60
.macro __bti_
61
hint 0x20
62
.endm
63
64
.macro __bti_c
65
hint 0x22
66
.endm
67
68
.macro __bti_j
69
hint 0x24
70
.endm
71
72
.macro __bti_jc
73
hint 0x26
74
.endm
75
76
.macro bti what=
77
__bti_\what
78
.endm
79
80
#endif /* ! ASSEMBLER_H */
81
82