x86, paravirt: Replace GET_CR2_INTO_RCX with GET_CR2_INTO_RAX
authorH. Peter Anvin <hpa@zytor.com>
Thu, 19 Apr 2012 00:16:48 +0000 (17:16 -0700)
committerH. Peter Anvin <hpa@linux.intel.com>
Thu, 19 Apr 2012 22:07:56 +0000 (15:07 -0700)
commitffc4bc9c6fa4eaf935d96d139bfa7443cac0b88e
tree61296184c680a012f7d4a10deedec2caba87dc53
parent84f4fc524eed040660bd4ebc8cba259d8afe8461
x86, paravirt: Replace GET_CR2_INTO_RCX with GET_CR2_INTO_RAX

GET_CR2_INTO_RCX is asinine: it is only used in one place, the actual
paravirt call returns the value in %rax, not %rcx; and the one place
that wants it wants the result in %r9.  We actually generate as a
result of this call:

       call ...
       movq %rax, %rcx
       xorq %rax, %rax /* this value isn't even used... */
       movq %rcx, %r9

At least make the macro do what the paravirt call does, which is put
the value into %rax.

Nevermind the fact that the macro clobbers all the volatile registers.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Link: http://lkml.kernel.org/r/1334794610-5546-4-git-send-email-hpa@zytor.com
Cc: Glauber de Oliveira Costa <glommer@parallels.com>
arch/x86/include/asm/paravirt.h
arch/x86/kernel/head_64.S