1/* SPDX-License-Identifier: BSD-2-Clause */
2/*
3 * Copyright (c) 2021, Linaro Limited
4 */
5
6#include <elf_common.h>
7
8/*
9 * This macro emits a program property note section identifying
10 * architecture features which require special handling, mainly for
11 * use in assembly files in the libraries linked with TA's.
12 */
13
14.macro emit_aarch64_feature_1_and, feat
15	.pushsection .note.gnu.property, "a"
16	.align  3
17	.long   2f - 1f				/* n_namesz */
18	.long   6f - 3f				/* n_desc_sz */
19	.long   NT_GNU_PROPERTY_TYPE_0		/* n_type */
201:      .string "GNU"				/* name */
212:
22	.align  3
233:      .long   GNU_PROPERTY_AARCH64_FEATURE_1_AND 	/* pr_type */
24	.long   5f - 4f					/* pr_datasz */
254:
26	/*
27	 * This is described with an array of char in the Linux API
28	 * spec but the text and all other usage (including binutils,
29	 * clang and GCC) treat this as a 32 bit value so no swizzling
30	 * is required for big endian.
31	 */
32	.long   \feat					/* property */
335:
34	.align  3
356:
36	.popsection
37.endm
38