summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorMichael Brown2017-07-28 14:50:35 +0200
committerMichael Brown2017-07-28 14:50:35 +0200
commit1a7746603bca1022b63c406c9459525312a2b2b6 (patch)
tree7cffc520efda73bb1b1e1fd20ce6cac03fbe11d7 /src/include
parent[build] Conditionalise use of -mabi=lp64 for ARM64 builds (diff)
downloadipxe-1a7746603bca1022b63c406c9459525312a2b2b6.tar.gz
ipxe-1a7746603bca1022b63c406c9459525312a2b2b6.tar.xz
ipxe-1a7746603bca1022b63c406c9459525312a2b2b6.zip
[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>
Diffstat (limited to 'src/include')
-rw-r--r--src/include/errno.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/include/errno.h b/src/include/errno.h
index 342384fa..e80bf9ca 100644
--- a/src/include/errno.h
+++ b/src/include/errno.h
@@ -262,10 +262,10 @@ static inline void eplatform_discard ( int dummy __unused, ... ) {}
".align 8\n\t" \
"\n1:\n\t" \
".long ( 4f - 1b )\n\t" \
- ".long %c0\n\t" \
+ ".long %a0\n\t" \
".long ( 2f - 1b )\n\t" \
".long ( 3f - 1b )\n\t" \
- ".long %c1\n\t" \
+ ".long %a1\n\t" \
"\n2:\t.asciz \"" __einfo_desc ( einfo ) "\"\n\t" \
"\n3:\t.asciz \"" __FILE__ "\"\n\t" \
".align 8\n\t" \