[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [RFC 05/22] xen: Adapt assembly for PIE support



Change the assembly code to use the new _ASM_GET_PTR macro which get a
symbol reference while being PIE compatible. Modify the RELOC macro that
was using an assignment generating a non-relative reference.

Position Independent Executable (PIE) support will allow to extended the
KASLR randomization range below the -2G memory limit.

Signed-off-by: Thomas Garnier <thgarnie@xxxxxxxxxx>
---
 arch/x86/xen/xen-asm.h  | 3 ++-
 arch/x86/xen/xen-head.S | 9 +++++----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/arch/x86/xen/xen-asm.h b/arch/x86/xen/xen-asm.h
index 465276467a47..3b1c8a2e77d8 100644
--- a/arch/x86/xen/xen-asm.h
+++ b/arch/x86/xen/xen-asm.h
@@ -2,8 +2,9 @@
 #define _XEN_XEN_ASM_H
 
 #include <linux/linkage.h>
+#include <asm/asm.h>
 
-#define RELOC(x, v)    .globl x##_reloc; x##_reloc=v
+#define RELOC(x, v)    .globl x##_reloc; x##_reloc: _ASM_PTR v
 #define ENDPATCH(x)    .globl x##_end; x##_end=.
 
 /* Pseudo-flag used for virtual NMI, which we don't implement yet */
diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S
index 72a8e6adebe6..ab2462396bd8 100644
--- a/arch/x86/xen/xen-head.S
+++ b/arch/x86/xen/xen-head.S
@@ -23,14 +23,15 @@ ENTRY(startup_xen)
 
        /* Clear .bss */
        xor %eax,%eax
-       mov $__bss_start, %_ASM_DI
-       mov $__bss_stop, %_ASM_CX
+       _ASM_GET_PTR(__bss_start, %_ASM_DI)
+       _ASM_GET_PTR(__bss_stop, %_ASM_CX)
        sub %_ASM_DI, %_ASM_CX
        shr $__ASM_SEL(2, 3), %_ASM_CX
        rep __ASM_SIZE(stos)
 
-       mov %_ASM_SI, xen_start_info
-       mov $init_thread_union+THREAD_SIZE, %_ASM_SP
+       _ASM_GET_PTR(xen_start_info, %_ASM_AX)
+       mov %_ASM_SI, (%_ASM_AX)
+       _ASM_GET_PTR(init_thread_union+THREAD_SIZE, %_ASM_SP)
 
        jmp xen_start_kernel
 
-- 
2.13.2.932.g7449e964c-goog


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.