diff options
author | Michael Brown <mcb30@ipxe.org> | 2017-07-28 13:50:35 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2017-07-28 13:50:35 +0100 |
commit | 1a7746603bca1022b63c406c9459525312a2b2b6 (patch) | |
tree | 7cffc520efda73bb1b1e1fd20ce6cac03fbe11d7 /src/include/errno.h | |
parent | b6fc8be2c43c4e1b068613abadc48c1d86caee2b (diff) | |
download | ipxe-1a7746603bca1022b63c406c9459525312a2b2b6.tar.gz |
[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/errno.h')
-rw-r--r-- | src/include/errno.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/include/errno.h b/src/include/errno.h index 342384fa4..e80bf9ca5 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" \ |