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