|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 2/2] x86/boot: Avoid relocations in trampoline code to virtual addresses
Add virt_addr macro to make more clear the address we want and making
symbol search easier.
We don't generate direct absolute symbols to virtual addresses to avoid
linker warnings.
Signed-off-by: Frediano Ziglio <frediano.ziglio@xxxxxxxxx>
---
xen/arch/x86/boot/trampoline.S | 3 ++-
xen/arch/x86/boot/wakeup.S | 2 +-
xen/arch/x86/xen.lds.S | 2 ++
3 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/xen/arch/x86/boot/trampoline.S b/xen/arch/x86/boot/trampoline.S
index 3a6eb942a7..02c713af91 100644
--- a/xen/arch/x86/boot/trampoline.S
+++ b/xen/arch/x86/boot/trampoline.S
@@ -40,6 +40,7 @@
.popsection
#define phys_addr(sym) sym ## _PA
+#define virt_addr(sym) (sym ## _PA + __XEN_VIRT_START)
/* Start of the permanent trampoline code. */
@@ -120,7 +121,7 @@ trampoline_protmode_entry:
.code64
start64:
/* Jump to high mappings. */
- movabs $__high_start, %rdi
+ movabs $virt_addr(__high_start), %rdi
jmpq *%rdi
#include "video.h"
diff --git a/xen/arch/x86/boot/wakeup.S b/xen/arch/x86/boot/wakeup.S
index ae4dd5eb40..5ac8ba1fb6 100644
--- a/xen/arch/x86/boot/wakeup.S
+++ b/xen/arch/x86/boot/wakeup.S
@@ -156,7 +156,7 @@ wakeup_32:
.code64
wakeup_64:
/* Jump to high mappings and the higher-level wakeup code. */
- movabs $s3_resume, %rbx
+ movabs $virt_addr(s3_resume), %rbx
jmp *%rbx
bogus_saved_magic:
diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S
index 5cfbd2524a..b200606278 100644
--- a/xen/arch/x86/xen.lds.S
+++ b/xen/arch/x86/xen.lds.S
@@ -77,6 +77,8 @@ SECTIONS
DEFINE_PA_ADDRESS(start);
DEFINE_PA_ADDRESS(saved_magic);
DEFINE_PA_ADDRESS(idle_pg_table);
+ DEFINE_PA_ADDRESS(__high_start);
+ DEFINE_PA_ADDRESS(s3_resume);
. = __XEN_VIRT_START + XEN_IMG_OFFSET;
_start = .;
--
2.46.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |