summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cpu/x86/smm/smmrelocate.S9
-rw-r--r--src/include/compiler.h6
2 files changed, 12 insertions, 3 deletions
diff --git a/src/cpu/x86/smm/smmrelocate.S b/src/cpu/x86/smm/smmrelocate.S
index 4d388a99eb..b3be51d9c1 100644
--- a/src/cpu/x86/smm/smmrelocate.S
+++ b/src/cpu/x86/smm/smmrelocate.S
@@ -36,6 +36,9 @@
#error "Southbridge needs SMM handler support."
#endif
+// ADDR32() macro
+#include <compiler.h>
+
#if IS_ENABLED(CONFIG_SMM_TSEG)
#error "Don't use this file with TSEG."
@@ -112,7 +115,7 @@ smm_relocation_start:
*/
mov $0x38000 + 0x7efc, %ebx
- addr32 mov (%ebx), %al
+ ADDR32(mov) (%ebx), %al
cmp $0x64, %al
je 1f
@@ -124,7 +127,7 @@ smm_relocation_start:
smm_relocate:
/* Get this CPU's LAPIC ID */
movl $LAPIC_ID, %esi
- addr32 movl (%esi), %ecx
+ ADDR32(movl) (%esi), %ecx
shr $24, %ecx
/* calculate offset by multiplying the
@@ -136,7 +139,7 @@ smm_relocate:
movl $0xa0000, %eax
subl %edx, %eax /* subtract offset, see above */
- addr32 movl %eax, (%ebx)
+ ADDR32(movl) %eax, (%ebx)
/* The next section of code is potentially southbridge specific */
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