]> git.ipfire.org Git - thirdparty/ipxe.git/commit
[build] Allow for per-architecture unprefixed constant operand modifier
authorMichael Brown <mcb30@ipxe.org>
Sun, 5 Feb 2023 23:55:14 +0000 (23:55 +0000)
committerMichael Brown <mcb30@ipxe.org>
Sun, 5 Feb 2023 23:55:14 +0000 (23:55 +0000)
commitc6901792f009cfd824707724b687e99edd4c8ecd
tree8d58b90398ad5a2ffff18becc2a1025a90585916
parenta2bed43939b40ec843fd99bc9fd0d0e58124e082
[build] Allow for per-architecture unprefixed constant operand modifier

Over the years, the undocumented operand modifier used to produce the
unprefixed constant values in __einfo_error() has varied from "%c0" to
"%a0" in commit 1a77466 ("[build] Fix use of inline assembly on GCC
4.8 ARM64 builds") and back to "%c0" in commit 3fb3ffc ("[build] Fix
use of inline assembly on GCC 8 ARM64 builds"), according to the
evolving demands of the toolchain.

LoongArch64 suffers from a similar issue: GCC 13 will allow either,
but the currently released GCC 12 allows only the "%a0" form.

Introduce a macro ASM_NO_PREFIX, defined in bits/compiler.h, to
abstract away this difference and allow different architectures to use
different operand modifiers.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/arch/arm32/include/bits/compiler.h
src/arch/arm64/include/bits/compiler.h
src/arch/i386/include/bits/compiler.h
src/arch/x86_64/include/bits/compiler.h
src/include/errno.h