aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2013-09-09 10:24:21 +0200
committerJan Beulich <jbeulich@suse.com>2013-09-09 10:24:21 +0200
commit110b2d6e8aa2a35d8f9d8efc3f3bfda3c49a3855 (patch)
tree1ddecd4b87385a0abc1979df173f545b9bab2462 /xen/include/asm-x86
parentcfd54835e6e8a28c743dc7d67c662d151ab4923a (diff)
downloadxen-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.h10
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; \