mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 00:53:34 +02:00
KVM: VMX: Use named operands in inline asm
Convert the non-asm-goto version of the inline asm in __vmcs_readl() to use named operands, similar to its asm-goto version. Do this in preparation of changing the ASM_CALL_CONSTRAINT primitive. Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Sean Christopherson <seanjc@google.com> Cc: linux-kernel@vger.kernel.org
This commit is contained in:
parent
0c53ba0984
commit
e1c49eaee5
|
|
@ -118,7 +118,7 @@ static __always_inline unsigned long __vmcs_readl(unsigned long field)
|
|||
|
||||
#else /* !CONFIG_CC_HAS_ASM_GOTO_OUTPUT */
|
||||
|
||||
asm volatile("1: vmread %2, %1\n\t"
|
||||
asm volatile("1: vmread %[field], %[output]\n\t"
|
||||
".byte 0x3e\n\t" /* branch taken hint */
|
||||
"ja 3f\n\t"
|
||||
|
||||
|
|
@ -127,24 +127,26 @@ static __always_inline unsigned long __vmcs_readl(unsigned long field)
|
|||
* @field, and bounce through the trampoline to preserve
|
||||
* volatile registers.
|
||||
*/
|
||||
"xorl %k1, %k1\n\t"
|
||||
"xorl %k[output], %k[output]\n\t"
|
||||
"2:\n\t"
|
||||
"push %1\n\t"
|
||||
"push %2\n\t"
|
||||
"push %[output]\n\t"
|
||||
"push %[field]\n\t"
|
||||
"call vmread_error_trampoline\n\t"
|
||||
|
||||
/*
|
||||
* Unwind the stack. Note, the trampoline zeros out the
|
||||
* memory for @fault so that the result is '0' on error.
|
||||
*/
|
||||
"pop %2\n\t"
|
||||
"pop %1\n\t"
|
||||
"pop %[field]\n\t"
|
||||
"pop %[output]\n\t"
|
||||
"3:\n\t"
|
||||
|
||||
/* VMREAD faulted. As above, except push '1' for @fault. */
|
||||
_ASM_EXTABLE_TYPE_REG(1b, 2b, EX_TYPE_ONE_REG, %1)
|
||||
_ASM_EXTABLE_TYPE_REG(1b, 2b, EX_TYPE_ONE_REG, %[output])
|
||||
|
||||
: ASM_CALL_CONSTRAINT, "=&r"(value) : "r"(field) : "cc");
|
||||
: ASM_CALL_CONSTRAINT, [output] "=&r" (value)
|
||||
: [field] "r" (field)
|
||||
: "cc");
|
||||
return value;
|
||||
|
||||
#endif /* CONFIG_CC_HAS_ASM_GOTO_OUTPUT */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user