$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
$(call cc-option-add,CFLAGS,CC,-Wnested-externs)
-$(call as-option-add,CFLAGS,CC,"vmcall",-DHAVE_GAS_VMX)
-$(call as-option-add,CFLAGS,CC,"crc32 %eax$$(comma)%eax",-DHAVE_GAS_SSE4_2)
-$(call as-option-add,CFLAGS,CC,"invept (%rax)$$(comma)%rax",-DHAVE_GAS_EPT)
-$(call as-option-add,CFLAGS,CC,"rdrand %eax",-DHAVE_GAS_RDRAND)
-$(call as-option-add,CFLAGS,CC,"rdfsbase %rax",-DHAVE_GAS_FSGSBASE)
-$(call as-option-add,CFLAGS,CC,"rdseed %eax",-DHAVE_GAS_RDSEED)
+$(call as-option-add,CFLAGS,CC,"vmcall",-DHAVE_AS_VMX)
+$(call as-option-add,CFLAGS,CC,"crc32 %eax$$(comma)%eax",-DHAVE_AS_SSE4_2)
+$(call as-option-add,CFLAGS,CC,"invept (%rax)$$(comma)%rax",-DHAVE_AS_EPT)
+$(call as-option-add,CFLAGS,CC,"rdrand %eax",-DHAVE_AS_RDRAND)
+$(call as-option-add,CFLAGS,CC,"rdfsbase %rax",-DHAVE_AS_FSGSBASE)
+$(call as-option-add,CFLAGS,CC,"rdseed %eax",-DHAVE_AS_RDSEED)
$(call as-option-add,CFLAGS,CC,".equ \"x\"$$(comma)1", \
- -U__OBJECT_LABEL__ -DHAVE_GAS_QUOTED_SYM \
+ -U__OBJECT_LABEL__ -DHAVE_AS_QUOTED_SYM \
'-D__OBJECT_LABEL__=$(subst $(BASEDIR)/,,$(CURDIR))/$$@')
$(call as-option-add,CFLAGS,CC,"invpcid (%rax)$$(comma)%rax",-DHAVE_AS_INVPCID)
goto unrecognized_insn;
case 6: /* rdrand */
-#ifdef HAVE_GAS_RDRAND
+#ifdef HAVE_AS_RDRAND
generate_exception_if(rep_prefix(), EXC_UD);
host_and_vcpu_must_have(rdrand);
dst = ea;
dst.bytes = 4;
break;
}
-#ifdef HAVE_GAS_RDSEED
+#ifdef HAVE_AS_RDSEED
generate_exception_if(rep_prefix(), EXC_UD);
host_and_vcpu_must_have(rdseed);
dst = ea;
ASSERT_UNREACHABLE();
}
break;
-#ifdef HAVE_GAS_SSE4_2
+#ifdef HAVE_AS_SSE4_2
case X86EMUL_OPC_F2(0x0f38, 0xf0): /* crc32 r/m8, r{32,64} */
case X86EMUL_OPC_F2(0x0f38, 0xf1): /* crc32 r/m{16,32,64}, r{32,64} */
host_and_vcpu_must_have(sse4_2);
#ifdef __ASSEMBLY__
-#ifdef HAVE_GAS_QUOTED_SYM
+#ifdef HAVE_AS_QUOTED_SYM
#define SUBSECTION_LBL(tag) \
.ifndef .L.tag; \
.equ .L.tag, 1; \
#else
-#ifdef HAVE_GAS_QUOTED_SYM
+#ifdef HAVE_AS_QUOTED_SYM
#define SUBSECTION_LBL(tag) \
".ifndef .L." #tag "\n\t" \
".equ .L." #tag ", 1\n\t" \
#define INVVPID_ALL_CONTEXT 2
#define INVVPID_SINGLE_CONTEXT_RETAINING_GLOBAL 3
-#ifdef HAVE_GAS_VMX
+#ifdef HAVE_AS_VMX
# define GAS_VMX_OP(yes, no) yes
#else
# define GAS_VMX_OP(yes, no) no
static always_inline void __vmptrld(u64 addr)
{
asm volatile (
-#ifdef HAVE_GAS_VMX
+#ifdef HAVE_AS_VMX
"vmptrld %0\n"
#else
VMPTRLD_OPCODE MODRM_EAX_06
_ASM_BUGFRAME_TEXT(0)
UNLIKELY_END_SECTION
:
-#ifdef HAVE_GAS_VMX
+#ifdef HAVE_AS_VMX
: "m" (addr),
#else
: "a" (&addr),
static always_inline void __vmpclear(u64 addr)
{
asm volatile (
-#ifdef HAVE_GAS_VMX
+#ifdef HAVE_AS_VMX
"vmclear %0\n"
#else
VMCLEAR_OPCODE MODRM_EAX_06
_ASM_BUGFRAME_TEXT(0)
UNLIKELY_END_SECTION
:
-#ifdef HAVE_GAS_VMX
+#ifdef HAVE_AS_VMX
: "m" (addr),
#else
: "a" (&addr),
static always_inline void __vmread(unsigned long field, unsigned long *value)
{
asm volatile (
-#ifdef HAVE_GAS_VMX
+#ifdef HAVE_AS_VMX
"vmread %1, %0\n\t"
#else
VMREAD_OPCODE MODRM_EAX_ECX
UNLIKELY_START(be, vmread)
_ASM_BUGFRAME_TEXT(0)
UNLIKELY_END_SECTION
-#ifdef HAVE_GAS_VMX
+#ifdef HAVE_AS_VMX
: "=rm" (*value)
: "r" (field),
#else
static always_inline void __vmwrite(unsigned long field, unsigned long value)
{
asm volatile (
-#ifdef HAVE_GAS_VMX
+#ifdef HAVE_AS_VMX
"vmwrite %1, %0\n"
#else
VMWRITE_OPCODE MODRM_EAX_ECX
_ASM_BUGFRAME_TEXT(0)
UNLIKELY_END_SECTION
:
-#ifdef HAVE_GAS_VMX
+#ifdef HAVE_AS_VMX
: "r" (field) , "rm" (value),
#else
: "a" (field) , "c" (value),
type = INVEPT_ALL_CONTEXT;
asm volatile (
-#ifdef HAVE_GAS_EPT
+#ifdef HAVE_AS_EPT
"invept %0, %1\n"
#else
INVEPT_OPCODE MODRM_EAX_08
_ASM_BUGFRAME_TEXT(0)
UNLIKELY_END_SECTION
:
-#ifdef HAVE_GAS_EPT
+#ifdef HAVE_AS_EPT
: "m" (operand), "r" (type),
#else
: "a" (&operand), "c" (type),
/* Fix up #UD exceptions which occur when TLBs are flushed before VMXON. */
asm volatile ( "1: "
-#ifdef HAVE_GAS_EPT
+#ifdef HAVE_AS_EPT
"invvpid %0, %1\n"
#else
INVVPID_OPCODE MODRM_EAX_08
"2:"
_ASM_EXTABLE(1b, 2b)
:
-#ifdef HAVE_GAS_EPT
+#ifdef HAVE_AS_EPT
: "m" (operand), "r" (type),
#else
: "a" (&operand), "c" (type),
{
unsigned long base;
-#ifdef HAVE_GAS_FSGSBASE
+#ifdef HAVE_AS_FSGSBASE
asm volatile ( "rdfsbase %0" : "=r" (base) );
#else
asm volatile ( ".byte 0xf3, 0x48, 0x0f, 0xae, 0xc0" : "=a" (base) );
{
unsigned long base;
-#ifdef HAVE_GAS_FSGSBASE
+#ifdef HAVE_AS_FSGSBASE
asm volatile ( "rdgsbase %0" : "=r" (base) );
#else
asm volatile ( ".byte 0xf3, 0x48, 0x0f, 0xae, 0xc8" : "=a" (base) );
static inline void wrfsbase(unsigned long base)
{
if ( cpu_has_fsgsbase )
-#ifdef HAVE_GAS_FSGSBASE
+#ifdef HAVE_AS_FSGSBASE
asm volatile ( "wrfsbase %0" :: "r" (base) );
#else
asm volatile ( ".byte 0xf3, 0x48, 0x0f, 0xae, 0xd0" :: "a" (base) );
static inline void wrgsbase(unsigned long base)
{
if ( cpu_has_fsgsbase )
-#ifdef HAVE_GAS_FSGSBASE
+#ifdef HAVE_AS_FSGSBASE
asm volatile ( "wrgsbase %0" :: "r" (base) );
#else
asm volatile ( ".byte 0xf3, 0x48, 0x0f, 0xae, 0xd8" :: "a" (base) );