aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2011-08-19 09:54:53 +0100
committerJan Beulich <jbeulich@novell.com>2011-08-19 09:54:53 +0100
commit2bd22d3c9919029034d51322e301ca158137994a (patch)
tree3c93c240e1ed379578798688a3302da3fcff0485
parentbc4a68f21f43c2e37346cf5a1f37c19a53b540c2 (diff)
downloadxen-2bd22d3c9919029034d51322e301ca158137994a.tar.gz
xen-2bd22d3c9919029034d51322e301ca158137994a.tar.bz2
xen-2bd22d3c9919029034d51322e301ca158137994a.zip
x86: trampoline cleanup
To make future changes less error prone, and to slightly simplify a possible future conversion to a relocatable trampoline even for the multiboot path (pretty desirable given that we had to change the trampoline base a number of times to escape collisions with firmware placed data), - remove final uses of bootsym_phys() from trampoline.S, allowing the symbol to be undefined before including this file (to make sure no new references get added) - replace two easy to deal with uses of bootsym_phys() in head.S - remove an easy to replace reference to BOOT_TRAMPOLINE Signed-off-by: Jan Beulich <jbeulich@novell.com>
-rw-r--r--xen/arch/x86/boot/head.S6
-rw-r--r--xen/arch/x86/boot/trampoline.S6
2 files changed, 7 insertions, 5 deletions
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index d092579462..d92ce64b44 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -202,11 +202,11 @@ __start:
/* Copy bootstrap trampoline to low memory, below 1MB. */
mov $sym_phys(trampoline_start),%esi
- mov $bootsym_phys(trampoline_start),%edi
+ mov %edx,%edi
mov $trampoline_end - trampoline_start,%ecx
rep movsb
- mov $bootsym_phys(early_stack),%esp
+ lea early_stack-trampoline_start(%edx),%esp
call cmdline_parse_early
/* Jump into the relocated trampoline. */
@@ -214,6 +214,8 @@ __start:
#include "cmdline.S"
+#undef bootsym_phys
+
reloc:
#include "reloc.S"
diff --git a/xen/arch/x86/boot/trampoline.S b/xen/arch/x86/boot/trampoline.S
index 37f64cf54f..dc4fd0603a 100644
--- a/xen/arch/x86/boot/trampoline.S
+++ b/xen/arch/x86/boot/trampoline.S
@@ -132,7 +132,7 @@ high_start:
.code32
trampoline_boot_cpu_entry:
- cmpb $0,bootsym_phys(skip_realmode)
+ cmpb $0,bootsym_rel(skip_realmode,5)
jnz .Lskip_realmode
/* Load pseudo-real-mode segments. */
@@ -152,7 +152,7 @@ trampoline_boot_cpu_entry:
/* Load proper real-mode values into %cs, %ds, %es and %ss. */
ljmp $(BOOT_TRAMPOLINE>>4),$bootsym(1f)
-1: mov $(BOOT_TRAMPOLINE>>4),%ax
+1: mov %cs,%ax
mov %ax,%ds
mov %ax,%es
mov %ax,%ss
@@ -195,7 +195,7 @@ trampoline_boot_cpu_entry:
lmsw %ax # CR0.PE = 1 (enter protected mode)
/* Load proper protected-mode values into all segment registers. */
- ljmpl $BOOT_CS32,$bootsym_phys(1f)
+ ljmpl $BOOT_CS32,$bootsym_rel(1f,6)
.code32
1: mov $BOOT_DS,%eax
mov %eax,%ds