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 */
 |