diff options
author | Edward O'Callaghan <funfunctor@folklore1984.net> | 2017-01-08 19:57:45 +1100 |
---|---|---|
committer | Martin Roth <martinroth@google.com> | 2017-09-02 15:21:21 +0000 |
commit | 1104c278e396860567c4d20ff2b0868fa6b02696 (patch) | |
tree | 5fb2b38409feb02aef4041db3732e970b2164b9c /src/include | |
parent | 2ad1ddb3903b1057d16c72631f10b4a1f1934bb8 (diff) | |
download | coreboot-1104c278e396860567c4d20ff2b0868fa6b02696.tar.xz |
cpu/x86/smm: Fix explicit 'addr32' usage in clang builds
The addr32 prefix is required by binutils, because even when
given an explicit address which is greater than 64KiB, it will
throw a warning about truncation, and stupidly emit the opcode
with a 16-bit addressing mode and the wrong address.
However, in the case of LLVM, this doesn't happen, and is happy
to just use 32-bit addressing whenever it may require it. This
means that LLVM never really needs an explicit addr32 prefix to
use 32-bit addressing in 16-bit mode.
Change-Id: Ia160d3f7da6653ea24c8229dc26f265e5f15aabb
Also-by: Damien Zammit <damien@zamaudio.com>
Signed-off-by: Damien Zammit <damien@zamaudio.com>
Reviewed-on: https://review.coreboot.org/21219
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/compiler.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/include/compiler.h b/src/include/compiler.h index a830239009..268064d0c2 100644 --- a/src/include/compiler.h +++ b/src/include/compiler.h @@ -26,4 +26,10 @@ #define __always_unused __attribute__((unused)) #define __must_check __attribute__((warn_unused_result)) +#if IS_ENABLED(CONFIG_COMPILER_LLVM_CLANG) +#define ADDR32(opcode) opcode +#else +#define ADDR32(opcode) addr32 opcode +#endif + #endif |