aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlauber de Oliveira Costa <gcosta@redhat.com>2008-01-30 07:32:09 -0500
committerIngo Molnar <mingo@elte.hu>2008-01-30 07:32:09 -0500
commit21438f7c138f0b893a32df3cc77434e39a2145f8 (patch)
tree06725e4b0562f93cb00252949ae67577dad2f489
parent1954448fb0c03dd5e301d7bef2dda71cd9b2fcf2 (diff)
x86: add CLBR_ defines for 64-bit
x86_64 needs a potentially larger clobber list than i386, due to its calling convention. So we add more CLBR_ defines for it. Note that CLBR_ANY is different for each of the architectures, since it comprises the notion of "All call clobbers in this architecture" Signed-off-by: Glauber de Oliveira Costa <gcosta@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r--include/asm-x86/paravirt.h23
1 files changed, 18 insertions, 5 deletions
diff --git a/include/asm-x86/paravirt.h b/include/asm-x86/paravirt.h
index e8fbf742d425..5935c273af1f 100644
--- a/include/asm-x86/paravirt.h
+++ b/include/asm-x86/paravirt.h
@@ -8,11 +8,24 @@
8#include <asm/asm.h> 8#include <asm/asm.h>
9 9
10/* Bitmask of what can be clobbered: usually at least eax. */ 10/* Bitmask of what can be clobbered: usually at least eax. */
11#define CLBR_NONE 0x0 11#define CLBR_NONE 0
12#define CLBR_EAX 0x1 12#define CLBR_EAX (1 << 0)
13#define CLBR_ECX 0x2 13#define CLBR_ECX (1 << 1)
14#define CLBR_EDX 0x4 14#define CLBR_EDX (1 << 2)
15#define CLBR_ANY 0x7 15
16#ifdef CONFIG_X86_64
17#define CLBR_RSI (1 << 3)
18#define CLBR_RDI (1 << 4)
19#define CLBR_R8 (1 << 5)
20#define CLBR_R9 (1 << 6)
21#define CLBR_R10 (1 << 7)
22#define CLBR_R11 (1 << 8)
23#define CLBR_ANY ((1 << 9) - 1)
24#include <asm/desc_defs.h>
25#else
26/* CLBR_ANY should match all regs platform has. For i386, that's just it */
27#define CLBR_ANY ((1 << 3) - 1)
28#endif /* X86_64 */
16 29
17#ifndef __ASSEMBLY__ 30#ifndef __ASSEMBLY__
18#include <linux/types.h> 31#include <linux/types.h>