Link EL2 code as a relocatable object
Result in arch/arm64/kvm/hyp/nvhe/el2.o
Signed-off-by: David Brazdil <dbrazdil@google.com>
diff --git a/arch/arm64/kvm/hyp/nvhe/Makefile b/arch/arm64/kvm/hyp/nvhe/Makefile
index e2e8df7..1006d23 100644
--- a/arch/arm64/kvm/hyp/nvhe/Makefile
+++ b/arch/arm64/kvm/hyp/nvhe/Makefile
@@ -11,15 +11,17 @@
lib-objs := clear_page.o copy_page.o memcpy.o memset.o
lib-objs := $(addprefix ../../../lib/, $(lib-objs))
-obj-y := ../vgic-v3-sr.o ../timer-sr.o timer-sr.o ../aarch32.o \
+obj-y := el2.o
+
+hyp-y := ../vgic-v3-sr.o ../timer-sr.o timer-sr.o ../aarch32.o \
../vgic-v2-cpuif-proxy.o sysreg-sr.o debug-sr.o ../entry.o switch.o \
../fpsimd.o tlb.o hyp-init.o hyp-start.o hyp-main.o ../hyp-entry.o \
$(lib-objs) early_alloc.o page_alloc.o mm_init.o mmu.o setup.o
obj-$(CONFIG_DEBUG_PREEMPT) += percpu.o
-obj-y := $(patsubst %.o,%.hyp.o,$(obj-y))
-extra-y := $(patsubst %.hyp.o,%.hyp.tmp.o,$(obj-y))
+hyp-y := $(patsubst %.o,%.hyp.o,$(hyp-y))
+extra-y := $(patsubst %.hyp.o,%.hyp.tmp.o,$(hyp-y))
$(obj)/%.hyp.tmp.o: $(src)/%.c FORCE
$(call if_changed_rule,cc_o_c)
@@ -27,6 +29,9 @@
$(call if_changed_rule,as_o_S)
$(obj)/%.hyp.o: $(obj)/%.hyp.tmp.o FORCE
$(call if_changed,hypcopy)
+LDFLAGS_el2.o := --relocatable
+$(obj)/el2.o: $(addprefix $(obj)/,$(hyp-y)) FORCE
+ $(call if_changed,ld)
# Generate hyp object to be used in nVHE EL2.
# All symbols are prefixed to avoid clashes with corresponding VHE symbols.