diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2006-12-06 20:14:08 -0500 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-12-06 20:14:08 -0500 |
commit | 139ec7c416248b9ea227d21839235344edfee1e0 (patch) | |
tree | 54c396848b08367c0352c77f4633be6380a8eb16 /include/asm-i386/irqflags.h | |
parent | d3561b7fa0fb0fc583bab0eeda32bec9e4c4056d (diff) |
[PATCH] paravirt: Patch inline replacements for paravirt intercepts
It turns out that the most called ops, by several orders of magnitude,
are the interrupt manipulation ops. These are obvious candidates for
patching, so mark them up and create infrastructure for it.
The method used is that the ops structure has a patch function, which
is called for each place which needs to be patched: this returns a
number of instructions (the rest are NOP-padded).
Usually we can spare a register (%eax) for the binary patched code to
use, but in a couple of critical places in entry.S we can't: we make
the clobbers explicit at the call site, and manually clobber the
allowed registers in debug mode as an extra check.
And:
Don't abuse CONFIG_DEBUG_KERNEL, add CONFIG_DEBUG_PARAVIRT.
And:
AK: Fix warnings in x86-64 alternative.c build
And:
AK: Fix compilation with defconfig
And:
^From: Andrew Morton <akpm@osdl.org>
Some binutlises still like to emit references to __stop_parainstructions and
__start_parainstructions.
And:
AK: Fix warnings about unused variables when PARAVIRT is disabled.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Zachary Amsden <zach@vmware.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Diffstat (limited to 'include/asm-i386/irqflags.h')
-rw-r--r-- | include/asm-i386/irqflags.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/asm-i386/irqflags.h b/include/asm-i386/irqflags.h index 9ce01f3fb7bc..17b18cf4fe9d 100644 --- a/include/asm-i386/irqflags.h +++ b/include/asm-i386/irqflags.h | |||
@@ -79,8 +79,8 @@ static inline unsigned long __raw_local_irq_save(void) | |||
79 | } | 79 | } |
80 | 80 | ||
81 | #else | 81 | #else |
82 | #define DISABLE_INTERRUPTS cli | 82 | #define DISABLE_INTERRUPTS(clobbers) cli |
83 | #define ENABLE_INTERRUPTS sti | 83 | #define ENABLE_INTERRUPTS(clobbers) sti |
84 | #define ENABLE_INTERRUPTS_SYSEXIT sti; sysexit | 84 | #define ENABLE_INTERRUPTS_SYSEXIT sti; sysexit |
85 | #define INTERRUPT_RETURN iret | 85 | #define INTERRUPT_RETURN iret |
86 | #define GET_CR0_INTO_EAX movl %cr0, %eax | 86 | #define GET_CR0_INTO_EAX movl %cr0, %eax |