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 + #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