mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-13 01:06:48 +07:00
ff593e5abe
This patch lets GCC to determine which registers to save when we switch to/from a VCPU in the case of intel i386. * Original code saves following registers: eax, ebx, ecx, edx, edi, esi, ebp (using popa) * Patched code: - informs GCC that we modify following registers using the clobber description: ebx, edi, rsi - doesn't save eax because it is an output operand (vmx->fail) - cannot put ecx in clobber description because it is an input operand, but as we modify it and we want to keep its value (vcpu), we must save it (pop/push) - ebp is saved (pop/push) because GCC seems to ignore its use the clobber description. - edx is saved (pop/push) because it is reserved by GCC (REGPARM) and cannot be put in the clobber description. - line "mov (%%esp), %3 \n\t" has been removed because %3 is ecx and ecx is restored just after. Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net> Signed-off-by: Avi Kivity <avi@qumranet.com> |
||
---|---|---|
.. | ||
i8259.c | ||
ioapic.c | ||
irq.c | ||
irq.h | ||
Kconfig | ||
kvm_main.c | ||
kvm_svm.h | ||
kvm.h | ||
lapic.c | ||
Makefile | ||
mmu.c | ||
paging_tmpl.h | ||
segment_descriptor.h | ||
svm.c | ||
svm.h | ||
vmx.c | ||
vmx.h | ||
x86_emulate.c | ||
x86_emulate.h | ||
x86.c | ||
x86.h |