mirror of https://github.com/ipxe/ipxe.git
[build] Fix use of inline assembly on GCC 4.8 ARM64 builds
The inline assembly used in include/errno.h to generate the einfo blocks requires the ability to generate an immediate constant with no immediate-value prefix (such as the dollar sign for x86 assembly). We currently achieve this via the undocumented "%c0" form of operand. This causes an "invalid operand prefix" error on GCC 4.8 for ARM64 builds. Fix by switching to the equally undocumented "%a0" form of operand, which appears to work correctly on all tested versions of GCC. Reported-by: Benjamin S. Allen <bsallen@alcf.anl.gov> Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/65/merge
parent
b6fc8be2c4
commit
1a7746603b
|
@ -262,10 +262,10 @@ static inline void eplatform_discard ( int dummy __unused, ... ) {}
|
||||||
".align 8\n\t" \
|
".align 8\n\t" \
|
||||||
"\n1:\n\t" \
|
"\n1:\n\t" \
|
||||||
".long ( 4f - 1b )\n\t" \
|
".long ( 4f - 1b )\n\t" \
|
||||||
".long %c0\n\t" \
|
".long %a0\n\t" \
|
||||||
".long ( 2f - 1b )\n\t" \
|
".long ( 2f - 1b )\n\t" \
|
||||||
".long ( 3f - 1b )\n\t" \
|
".long ( 3f - 1b )\n\t" \
|
||||||
".long %c1\n\t" \
|
".long %a1\n\t" \
|
||||||
"\n2:\t.asciz \"" __einfo_desc ( einfo ) "\"\n\t" \
|
"\n2:\t.asciz \"" __einfo_desc ( einfo ) "\"\n\t" \
|
||||||
"\n3:\t.asciz \"" __FILE__ "\"\n\t" \
|
"\n3:\t.asciz \"" __FILE__ "\"\n\t" \
|
||||||
".align 8\n\t" \
|
".align 8\n\t" \
|
||||||
|
|
Loading…
Reference in New Issue