|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [PATCH v2 40/47] arm64: add the link file
This patch adds the link file for arm64.
This patch is based on Chen Baozi's patch:
"arm64: Add the support for arm64"
Signed-off-by: Huang Shijie <shijie.huang@xxxxxxx>
---
Makefile | 14 ++++++-
arch/arm/arm64/minios-arm64.lds.S | 81 +++++++++++++++++++++++++++++++++++++++
2 files changed, 93 insertions(+), 2 deletions(-)
create mode 100644 arch/arm/arm64/minios-arm64.lds.S
diff --git a/Makefile b/Makefile
index 43075e1..ad320e3 100644
--- a/Makefile
+++ b/Makefile
@@ -24,7 +24,7 @@ include minios.mk
LDLIBS :=
APP_LDLIBS :=
LDARCHLIB := -L$(OBJ_DIR)/$(TARGET_ARCH_DIR) -l$(ARCH_LIB_NAME)
-LDFLAGS_FINAL := -T
$(OBJ_DIR)/$(TARGET_ARCH_DIR)/minios-$(MINIOS_TARGET_ARCH).lds
$(ARCH_LDFLAGS_FINAL)
+LDFLAGS_FINAL := -T $(ARCH_LDFLAGS_FINAL)
# Prefix for global API names. All other symbols are localised before
# linking with EXTRA_OBJS.
@@ -160,11 +160,21 @@ ifneq ($(APP_OBJS),)
APP_O=$(OBJ_DIR)/$(TARGET)_app.o
endif
+ifeq ($(MINIOS_TARGET_ARCH),arm64)
+LINK_FILE=$(OBJ_DIR)/$(TARGET_ARCH_DIR)/arm64/minios-$(MINIOS_TARGET_ARCH).lds
+else
+LINK_FILE=$(OBJ_DIR)/$(TARGET_ARCH_DIR)/minios-$(MINIOS_TARGET_ARCH).lds
+endif
+LDFLAGS_FINAL += $(LINK_FILE)
+
# Special rule for x86 for now
$(OBJ_DIR)/arch/x86/minios-x86%.lds: arch/x86/minios-x86.lds.S
$(CPP) $(ASFLAGS) -P $< -o $@
-$(OBJ_DIR)/$(TARGET): $(OBJS) $(APP_O) arch_lib
$(OBJ_DIR)/$(TARGET_ARCH_DIR)/minios-$(MINIOS_TARGET_ARCH).lds
+$(OBJ_DIR)/arch/arm/arm64/minios-$(MINIOS_TARGET_ARCH).lds:
arch/arm/arm64/minios-$(MINIOS_TARGET_ARCH).lds.S
+ $(CPP) $(ASFLAGS) -I $(OBJ_DIR)/include/arm/ -P $< -o $@
+
+$(OBJ_DIR)/$(TARGET): $(OBJS) $(APP_O) arch_lib $(LINK_FILE)
$(LD) -r $(LDFLAGS) $(HEAD_OBJ) $(APP_O) $(OBJS) $(LDARCHLIB) $(LDLIBS)
-o $@.o
$(OBJCOPY) -w -G $(GLOBAL_PREFIX)* -G _start $@.o $@.o
$(LD) $(LDFLAGS) $(LDFLAGS_FINAL) $@.o $(EXTRA_OBJS) -o $@
diff --git a/arch/arm/arm64/minios-arm64.lds.S
b/arch/arm/arm64/minios-arm64.lds.S
new file mode 100644
index 0000000..bcb4cb5
--- /dev/null
+++ b/arch/arm/arm64/minios-arm64.lds.S
@@ -0,0 +1,81 @@
+#include <page_def.h>
+#include <arm64/pagetable.h>
+
+OUTPUT_FORMAT("elf64-littleaarch64")
+OUTPUT_ARCH(aarch64)
+ENTRY(_start)
+SECTIONS
+{
+ /*
+ * Please see section D4.2.6, the following start address is equal to
+ * 2 ^ 64 - 2 ^ (64 - T1SZ)
+ */
+ . = (1 << VA_BITS) * ((1 << (64 - VA_BITS)) - 1);
+ _text = .; /* Text and read-only data */
+ .text : {
+ *(.text)
+ *(.gnu.warning)
+ }
+
+ _etext = .; /* End of text section */
+
+ .rodata : { *(.rodata) *(.rodata.*) }
+ . = ALIGN(PAGE_SIZE);
+ _erodata = .;
+
+ /* newlib initialization functions */
+ . = ALIGN(8);
+ PROVIDE (__preinit_array_start = .);
+ .preinit_array : { *(.preinit_array) }
+ PROVIDE (__preinit_array_end = .);
+ PROVIDE (__init_array_start = .);
+ .init_array : { *(.init_array) }
+ PROVIDE (__init_array_end = .);
+ PROVIDE (__fini_array_start = .);
+ .fini_array : { *(.fini_array) }
+ PROVIDE (__fini_array_end = .);
+
+ .ctors : {
+ __CTOR_LIST__ = .;
+ *(.ctors)
+ CONSTRUCTORS
+ QUAD(0)
+ __CTOR_END__ = .;
+ }
+
+ .dtors : {
+ __DTOR_LIST__ = .;
+ *(.dtors)
+ QUAD(0)
+ __DTOR_END__ = .;
+ }
+
+ .data : { /* Data */
+ *(.data)
+ }
+
+ _edata = .; /* End of data section */
+
+ __bss_start = .; /* BSS */
+ .bss : {
+ *(.bss)
+ *(.app.bss)
+ }
+ _end = . ;
+
+ /* Sections to be discarded */
+ /DISCARD/ : {
+ *(.text.exit)
+ *(.data.exit)
+ *(.exitcall.exit)
+ }
+
+ /* Stabs debugging sections. */
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+}
--
2.7.4
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |