Commit 6b0fe1af authored by Dmitry Safonov's avatar Dmitry Safonov Committed by Andrei Vagin

x86/pie: split parasite-head.S on {-32,-64} parts

Signed-off-by: 's avatarDmitry Safonov <dsafonov@virtuozzo.com>
Acked-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
parent bc5cca1a
...@@ -3,23 +3,9 @@ ...@@ -3,23 +3,9 @@
.section .head.text, "ax" .section .head.text, "ax"
#ifdef CONFIG_X86_64 #ifndef CONFIG_X86_32
# error 32-bit parasite should compile with CONFIG_X86_32
ENTRY(__export_parasite_head_start) #endif
subq $16, %rsp
andq $~15, %rsp
pushq $0
movq %rsp, %rbp
movl __export_parasite_cmd(%rip), %edi
leaq __export_parasite_args(%rip), %rsi
call parasite_service
int $0x03
.align 8
__export_parasite_cmd:
.long 0
END(__export_parasite_head_start)
#else /* CONFIG_X86_64 */
ENTRY(__export_parasite_head_start) ENTRY(__export_parasite_head_start)
subl $16, %esp subl $16, %esp
...@@ -36,5 +22,3 @@ ENTRY(__export_parasite_head_start) ...@@ -36,5 +22,3 @@ ENTRY(__export_parasite_head_start)
GLOBAL(__export_parasite_cmd) GLOBAL(__export_parasite_cmd)
.long 0 .long 0
END(__export_parasite_head_start) END(__export_parasite_head_start)
#endif /* CONFIG_X86_64 */
#include "asm/linkage.h"
#include "parasite.h"
.section .head.text, "ax"
#ifndef CONFIG_X86_64
# error 64-bit parasite should compile with CONFIG_X86_64
#endif
ENTRY(__export_parasite_head_start)
subq $16, %rsp
andq $~15, %rsp
pushq $0
movq %rsp, %rbp
movl __export_parasite_cmd(%rip), %edi
leaq __export_parasite_args(%rip), %rsi
call parasite_service
int $0x03
.align 8
__export_parasite_cmd:
.long 0
END(__export_parasite_head_start)
...@@ -2,16 +2,17 @@ target += parasite ...@@ -2,16 +2,17 @@ target += parasite
target += restorer target += restorer
parasite-obj-y += parasite.o parasite-obj-y += parasite.o
parasite-obj-y += ./$(ARCH_DIR)/parasite-head.o
restorer-obj-y += restorer.o restorer-obj-y += restorer.o
restorer-obj-y += ./$(ARCH_DIR)/restorer.o restorer-obj-y += ./$(ARCH_DIR)/restorer.o
ifeq ($(ARCH),x86) ifeq ($(ARCH),x86)
# FIXME: depend on 32/64 pie type # FIXME: depend on 32/64 pie type
parasite-obj-y += ./$(ARCH_DIR)/parasite-head-64.o
parasite-obj-e += ./$(ARCH_DIR)/syscalls-64.built-in.o parasite-obj-e += ./$(ARCH_DIR)/syscalls-64.built-in.o
restorer-obj-e += ./$(ARCH_DIR)/syscalls-64.built-in.o restorer-obj-e += ./$(ARCH_DIR)/syscalls-64.built-in.o
else else
parasite-obj-y += ./$(ARCH_DIR)/parasite-head.o
parasite-obj-e += ./$(ARCH_DIR)/syscalls.built-in.o parasite-obj-e += ./$(ARCH_DIR)/syscalls.built-in.o
restorer-obj-e += ./$(ARCH_DIR)/syscalls.built-in.o restorer-obj-e += ./$(ARCH_DIR)/syscalls.built-in.o
endif endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment