From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C3EF244C66A for ; Tue, 11 Aug 2026 14:02:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786456934; cv=none; b=NWo6VzuwfJ6g9mB6PHHpYx0U8jH+UzFlZ/oRy9iAR7AZBOSY9SKau0rXWuschvN+2F9lCAzfgH+TJAg2ntt/CkY/if91SBepAFKUXuLhcxxmTKT1vJjbmzfXD9MgoD6uOU+v5IZ0Q+x/fXHeLR0uXKjQwo7a9cJKpGkI05Q7ZtI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786456934; c=relaxed/simple; bh=ioJZhY+NaJRpOeBuUiLo6CQB1ZHthFPG9fV3xk8bFeE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GjWzxFkz7DrARmr/wh/rVV4cD8Ap0F0z+h4pd1NYKPgfMqX+LIgsVgk/U/GJJMKORaRwRdcwA8fwBYBw24NLCDPV9UXQbsgHG4KI80u6Rgg3ewO3x5V7E5+QKyFrdOcwbe2fsTV5r4VhAXEEEtlNcJ0UbWMxc75RSyLWTLRbYrc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=C8e9PWNP; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="C8e9PWNP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D38A11F00A3E; Tue, 11 Aug 2026 14:02:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786456932; bh=onpTqTBmXiqGXmTMVV6/RDQ2iBB2lu9k9fuTRvKjlDY=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=C8e9PWNP5oKxdZ7Ic5tSUjOzX+rUytL1bm3B3sbQQlna2jgz3u4gsXb/ImrXY9jxj kM/NziwVbrf9tJ9qQaV61ttVe6YLr/jS8sqY8h4yydG3xhSgppdk6/EW6wxKKtmrIa uEpgnn+Y7IWzsz/Iiq4L8sVL41xOUbTz+3uIqcMJ7k/i3zTKumb4TMa42J1uRLyi5P aCCXT20tVvHeJ4Ma3I4xJUaNNVlI0vSb6jd6q/dxVbaJlHLUIHOlKk5mQCeyiqFTnV qyq8m92jAkitQPUIE/MoupvpPkdso4xM0e7ltndjsPv5KUAOJN9yJsCkcux6pyLkDP fvybetvm8932A== From: Will Deacon To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Will Deacon , Arnd Bergmann , Ard Biesheuvel , Eric Biggers , Daniel Borkmann , Catalin Marinas , Alexei Starovoitov , Oliver Upton , Herbert Xu , Marc Zyngier Subject: [PATCH 11/12] arm64: image: Remove endianness handling for generating image header Date: Tue, 11 Aug 2026 15:01:30 +0100 Message-ID: <20260811140132.22778-12-will@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260811140132.22778-1-will@kernel.org> References: <20260811140132.22778-1-will@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Since big-endian support for arm64 depends on BROKEN, we don't need to bother jumping through hoops to generate a little-endian kernel image header for a big-endian target. We can just ignore the possibility instead. Signed-off-by: Will Deacon --- arch/arm64/include/asm/assembler.h | 11 ----------- arch/arm64/kernel/head.S | 4 ++-- arch/arm64/kernel/image.h | 24 ++---------------------- 3 files changed, 4 insertions(+), 35 deletions(-) diff --git a/arch/arm64/include/asm/assembler.h b/arch/arm64/include/asm/assembler.h index 45279e577ff5..d3ce96c7b8ec 100644 --- a/arch/arm64/include/asm/assembler.h +++ b/arch/arm64/include/asm/assembler.h @@ -525,17 +525,6 @@ alternative_else_nop_endif #define EXPORT_SYMBOL_NOKASAN(name) EXPORT_SYMBOL(name) #endif - /* - * Emit a 64-bit absolute little endian symbol reference in a way that - * ensures that it will be resolved at build time, even when building a - * PIE binary. This requires cooperation from the linker script, which - * must emit the lo32/hi32 halves individually. - */ - .macro le64sym, sym - .long \sym\()_lo32 - .long \sym\()_hi32 - .endm - /* * mov_q - move an immediate constant into a 64-bit register using * between 2 and 4 movz/movk instructions (depending on the diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S index 8951ce693552..684896390258 100644 --- a/arch/arm64/kernel/head.S +++ b/arch/arm64/kernel/head.S @@ -61,8 +61,8 @@ efi_signature_nop // special NOP to identity as PE/COFF executable b primary_entry // branch to kernel start, magic .quad 0 // Image load offset from start of RAM, little-endian - le64sym _kernel_size_le // Effective size of kernel image, little-endian - le64sym _kernel_flags_le // Informative flags, little-endian + .quad _kernel_size_le // Effective size of kernel image, little-endian + .quad _kernel_flags_le // Informative flags, little-endian .quad 0 // reserved .quad 0 // reserved .quad 0 // reserved diff --git a/arch/arm64/kernel/image.h b/arch/arm64/kernel/image.h index 5c10ca773363..208843f96b4d 100644 --- a/arch/arm64/kernel/image.h +++ b/arch/arm64/kernel/image.h @@ -13,21 +13,6 @@ #include -/* - * There aren't any ELF relocations we can use to endian-swap values known only - * at link time (e.g. the subtraction of two symbol addresses), so we must get - * the linker to endian-swap certain values before emitting them. - * - * Note that, in order for this to work when building the ELF64 PIE executable - * (for KASLR), these values should not be referenced via R_AARCH64_ABS64 - * relocations, since these are fixed up at runtime rather than at build time - * when PIE is in effect. So we need to split them up in 32-bit high and low - * words. - */ -#define DEFINE_IMAGE_LE64(sym, data) \ - sym##_lo32 = (data) & 0xffffffff; \ - sym##_hi32 = (data) >> 32 - #define __HEAD_FLAG(field) (__HEAD_FLAG_##field << \ ARM64_IMAGE_FLAG_##field##_SHIFT) @@ -41,13 +26,8 @@ __HEAD_FLAG(PAGE_SIZE) | \ __HEAD_FLAG(PHYS_BASE)) -/* - * These will output as part of the Image header, which should be little-endian - * regardless of the endianness of the kernel. While constant values could be - * endian swapped in head.S, all are done here for consistency. - */ #define HEAD_SYMBOLS \ - DEFINE_IMAGE_LE64(_kernel_size_le, _end - _text); \ - DEFINE_IMAGE_LE64(_kernel_flags_le, __HEAD_FLAGS); + _kernel_size_le = _end - _text; \ + _kernel_flags_le = __HEAD_FLAGS; #endif /* __ARM64_KERNEL_IMAGE_H */ -- 2.55.0.679.g6767b8d81c-goog