aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2007-02-12 03:54:33 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-02-12 12:48:40 -0500
commit96958231cea5985e32db2ae1125ec20483e3556b (patch)
treef8a6a89db6ecd5af726e3e65c55cb122cf29841d
parent54fb996ac15c4014fa4d6b0ec8e42da134204897 (diff)
[PATCH] kvm: optimize inline assembly
Forms like "0(%rsp)" generate an instruction with an unnecessary one byte displacement under certain circumstances. replace with the equivalent "(%rsp)". Signed-off-by: Avi Kivity <avi@qumranet.com> Cc: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/kvm/vmx.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c
index 27e05a77e21a..5cc1a6ec0174 100644
--- a/drivers/kvm/vmx.c
+++ b/drivers/kvm/vmx.c
@@ -1786,10 +1786,10 @@ again:
1786 "kvm_vmx_return: " 1786 "kvm_vmx_return: "
1787 /* Save guest registers, load host registers, keep flags */ 1787 /* Save guest registers, load host registers, keep flags */
1788#ifdef CONFIG_X86_64 1788#ifdef CONFIG_X86_64
1789 "xchg %3, 0(%%rsp) \n\t" 1789 "xchg %3, (%%rsp) \n\t"
1790 "mov %%rax, %c[rax](%3) \n\t" 1790 "mov %%rax, %c[rax](%3) \n\t"
1791 "mov %%rbx, %c[rbx](%3) \n\t" 1791 "mov %%rbx, %c[rbx](%3) \n\t"
1792 "pushq 0(%%rsp); popq %c[rcx](%3) \n\t" 1792 "pushq (%%rsp); popq %c[rcx](%3) \n\t"
1793 "mov %%rdx, %c[rdx](%3) \n\t" 1793 "mov %%rdx, %c[rdx](%3) \n\t"
1794 "mov %%rsi, %c[rsi](%3) \n\t" 1794 "mov %%rsi, %c[rsi](%3) \n\t"
1795 "mov %%rdi, %c[rdi](%3) \n\t" 1795 "mov %%rdi, %c[rdi](%3) \n\t"
@@ -1804,24 +1804,24 @@ again:
1804 "mov %%r15, %c[r15](%3) \n\t" 1804 "mov %%r15, %c[r15](%3) \n\t"
1805 "mov %%cr2, %%rax \n\t" 1805 "mov %%cr2, %%rax \n\t"
1806 "mov %%rax, %c[cr2](%3) \n\t" 1806 "mov %%rax, %c[cr2](%3) \n\t"
1807 "mov 0(%%rsp), %3 \n\t" 1807 "mov (%%rsp), %3 \n\t"
1808 1808
1809 "pop %%rcx; pop %%r15; pop %%r14; pop %%r13; pop %%r12;" 1809 "pop %%rcx; pop %%r15; pop %%r14; pop %%r13; pop %%r12;"
1810 "pop %%r11; pop %%r10; pop %%r9; pop %%r8;" 1810 "pop %%r11; pop %%r10; pop %%r9; pop %%r8;"
1811 "pop %%rbp; pop %%rdi; pop %%rsi;" 1811 "pop %%rbp; pop %%rdi; pop %%rsi;"
1812 "pop %%rdx; pop %%rbx; pop %%rax \n\t" 1812 "pop %%rdx; pop %%rbx; pop %%rax \n\t"
1813#else 1813#else
1814 "xchg %3, 0(%%esp) \n\t" 1814 "xchg %3, (%%esp) \n\t"
1815 "mov %%eax, %c[rax](%3) \n\t" 1815 "mov %%eax, %c[rax](%3) \n\t"
1816 "mov %%ebx, %c[rbx](%3) \n\t" 1816 "mov %%ebx, %c[rbx](%3) \n\t"
1817 "pushl 0(%%esp); popl %c[rcx](%3) \n\t" 1817 "pushl (%%esp); popl %c[rcx](%3) \n\t"
1818 "mov %%edx, %c[rdx](%3) \n\t" 1818 "mov %%edx, %c[rdx](%3) \n\t"
1819 "mov %%esi, %c[rsi](%3) \n\t" 1819 "mov %%esi, %c[rsi](%3) \n\t"
1820 "mov %%edi, %c[rdi](%3) \n\t" 1820 "mov %%edi, %c[rdi](%3) \n\t"
1821 "mov %%ebp, %c[rbp](%3) \n\t" 1821 "mov %%ebp, %c[rbp](%3) \n\t"
1822 "mov %%cr2, %%eax \n\t" 1822 "mov %%cr2, %%eax \n\t"
1823 "mov %%eax, %c[cr2](%3) \n\t" 1823 "mov %%eax, %c[cr2](%3) \n\t"
1824 "mov 0(%%esp), %3 \n\t" 1824 "mov (%%esp), %3 \n\t"
1825 1825
1826 "pop %%ecx; popa \n\t" 1826 "pop %%ecx; popa \n\t"
1827#endif 1827#endif