diff options
author | Jan Beulich <jbeulich@suse.com> | 2013-09-09 10:24:21 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2013-09-09 10:24:21 +0200 |
commit | 110b2d6e8aa2a35d8f9d8efc3f3bfda3c49a3855 (patch) | |
tree | 1ddecd4b87385a0abc1979df173f545b9bab2462 /xen/include/asm-x86 | |
parent | cfd54835e6e8a28c743dc7d67c662d151ab4923a (diff) | |
download | xen-110b2d6e8aa2a35d8f9d8efc3f3bfda3c49a3855.tar.gz xen-110b2d6e8aa2a35d8f9d8efc3f3bfda3c49a3855.tar.bz2 xen-110b2d6e8aa2a35d8f9d8efc3f3bfda3c49a3855.zip |
SVM: streamline entry.S code
- fix a bogus "test" with zero immediate
- move stuff easily/better done in C into C code
- re-arrange code paths so that no redundant GET_CURRENT() would remain
on the fast paths
- move long latency operations earlier
- slightly defer disabling global interrupts on the VM entry path
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Tim Deegan <tim@xen.org>
Diffstat (limited to 'xen/include/asm-x86')
-rw-r--r-- | xen/include/asm-x86/asm_defns.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/xen/include/asm-x86/asm_defns.h b/xen/include/asm-x86/asm_defns.h index 8fc1a2c4c5..25032d55eb 100644 --- a/xen/include/asm-x86/asm_defns.h +++ b/xen/include/asm-x86/asm_defns.h @@ -39,11 +39,17 @@ void ret_from_intr(void); .subsection 1; \ .Lunlikely.tag: -#define UNLIKELY_END(tag) \ - jmp .Llikely.tag; \ +#define UNLIKELY_DONE(cond, tag) \ + j##cond .Llikely.tag + +#define __UNLIKELY_END(tag) \ .subsection 0; \ .Llikely.tag: +#define UNLIKELY_END(tag) \ + UNLIKELY_DONE(mp, tag); \ + __UNLIKELY_END(tag) + #define STACK_CPUINFO_FIELD(field) (STACK_SIZE-CPUINFO_sizeof+CPUINFO_##field) #define GET_STACK_BASE(reg) \ movq $~(STACK_SIZE-1),reg; \ |