blob: 63f42c71b628473ac00e908c29e99cada967ccd0 [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright (c) 2021, Linaro Limited
*/
#include <elf_common.h>
/*
* This macro emits a program property note section identifying
* architecture features which require special handling, mainly for
* use in assembly files in the libraries linked with TA's.
*/
.macro emit_aarch64_feature_1_and, feat
.pushsection .note.gnu.property, "a"
.align 3
.long 2f - 1f /* n_namesz */
.long 6f - 3f /* n_desc_sz */
.long NT_GNU_PROPERTY_TYPE_0 /* n_type */
1: .string "GNU" /* name */
2:
.align 3
3: .long GNU_PROPERTY_AARCH64_FEATURE_1_AND /* pr_type */
.long 5f - 4f /* pr_datasz */
4:
/*
* This is described with an array of char in the Linux API
* spec but the text and all other usage (including binutils,
* clang and GCC) treat this as a 32 bit value so no swizzling
* is required for big endian.
*/
.long \feat /* property */
5:
.align 3
6:
.popsection
.endm