mirror of https://github.com/ipxe/ipxe.git
[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 commitpull/888/head1a77466
("[build] Fix use of inline assembly on GCC 4.8 ARM64 builds") and back to "%c0" in commit3fb3ffc
("[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>
parent
a2bed43939
commit
c6901792f0
|
@ -8,6 +8,9 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||
|
||||
#ifndef ASSEMBLY
|
||||
|
||||
/** Unprefixed constant operand modifier */
|
||||
#define ASM_NO_PREFIX "c"
|
||||
|
||||
#define __asmcall
|
||||
#define __libgcc
|
||||
|
||||
|
|
|
@ -8,6 +8,9 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||
|
||||
#ifndef ASSEMBLY
|
||||
|
||||
/** Unprefixed constant operand modifier */
|
||||
#define ASM_NO_PREFIX "c"
|
||||
|
||||
#define __asmcall
|
||||
#define __libgcc
|
||||
|
||||
|
|
|
@ -8,6 +8,9 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||
|
||||
#ifndef ASSEMBLY
|
||||
|
||||
/** Unprefixed constant operand modifier */
|
||||
#define ASM_NO_PREFIX "c"
|
||||
|
||||
/** Declare a function with standard calling conventions */
|
||||
#define __asmcall __attribute__ (( cdecl, regparm(0) ))
|
||||
|
||||
|
|
|
@ -8,6 +8,9 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||
|
||||
#ifndef ASSEMBLY
|
||||
|
||||
/** Unprefixed constant operand modifier */
|
||||
#define ASM_NO_PREFIX "c"
|
||||
|
||||
/** Declare a function with standard calling conventions */
|
||||
#define __asmcall __attribute__ (( regparm(0) ))
|
||||
|
||||
|
|
|
@ -262,10 +262,10 @@ static inline void eplatform_discard ( int dummy __unused, ... ) {}
|
|||
".balign 8\n\t" \
|
||||
"\n1:\n\t" \
|
||||
".long ( 4f - 1b )\n\t" \
|
||||
".long %c0\n\t" \
|
||||
".long %" ASM_NO_PREFIX "0\n\t" \
|
||||
".long ( 2f - 1b )\n\t" \
|
||||
".long ( 3f - 1b )\n\t" \
|
||||
".long %c1\n\t" \
|
||||
".long %" ASM_NO_PREFIX "1\n\t" \
|
||||
"\n2:\t.asciz \"" __einfo_desc ( einfo ) "\"\n\t" \
|
||||
"\n3:\t.asciz \"" __FILE__ "\"\n\t" \
|
||||
".balign 8\n\t" \
|
||||
|
|
Loading…
Reference in New Issue