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

[Minios-devel] [UNIKRAFT/PLAT_RASPI PATCH 03/13] plats/raspi: Adding linker script file



Adding the linker script file for the Raspberry Pi 3B+ platform.

Signed-off-by: Santiago Pagani <santiagopagani@xxxxxxxxx>
---
 link.lds.S | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 130 insertions(+)
 create mode 100644 link.lds.S

diff --git a/link.lds.S b/link.lds.S
new file mode 100644
index 0000000..5544a1b
--- /dev/null
+++ b/link.lds.S
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2018, bzt (bztsrc@github), 
https://github.com/bztsrc/raspi3-tutorial
+ * Copyright (C) 2020, Santiago Pagani <santiagopagani@xxxxxxxxx>
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+#include <uk/arch/limits.h>
+#include <uk/plat/common/common.lds.h>
+
+#define RAM_BASE_ADDR  0x80000
+
+OUTPUT_FORMAT("elf64-littleaarch64")
+OUTPUT_ARCH(aarch64)
+ENTRY(_libraspiplat_entry)
+
+SECTIONS
+{
+    . = RAM_BASE_ADDR;
+
+       /* Place DTB binary at the beginning of the RAM */
+       _dtb = .;
+       //. = . + DTB_RESERVED_SIZE;
+
+       /* Code */
+       _text = .;
+       .text :
+       {
+               KEEP(*(.text.boot))
+               *(.text)
+               *(.text.*)
+               *(.gnu.linkonce.t*)
+       }
+       _etext = .;
+
+       . = ALIGN(__PAGE_SIZE);
+       EXCEPTION_SECTIONS
+
+       CTORTAB_SECTION
+
+       INITTAB_SECTION
+
+       /* Read-only data */
+       . = ALIGN(__PAGE_SIZE);
+       _rodata = .;
+       .rodata :
+       {
+               *(.rodata)
+               *(.rodata.*)
+               *(.gnu.linkonce.r*)
+       }
+       _erodata = .;
+
+       /* Constructor tables (read-only) */
+       . = ALIGN(0x8);
+       _ctors = .;
+       .preinit_array : {
+               PROVIDE_HIDDEN (__preinit_array_start = .);
+               KEEP (*(.preinit_array))
+               PROVIDE_HIDDEN (__preinit_array_end = .);
+       }
+
+       . = ALIGN(0x8);
+       .init_array : {
+               PROVIDE_HIDDEN (__init_array_start = .);
+               KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) 
SORT_BY_INIT_PRIORITY(.ctors.*)))
+               KEEP (*(.init_array .ctors))
+               PROVIDE_HIDDEN (__init_array_end = .);
+       }
+       _ectors = .;
+
+       . = ALIGN(__PAGE_SIZE);
+       TLS_SECTIONS
+
+       /* Read-write data that is initialized explicitly in code */
+       _data = .;
+       .data :
+       {
+               *(.data)
+               *(.data.*)
+               *(.gnu.linkonce.d*)
+       }
+       _edata = .;
+
+       /* Read-write data that is not initialized explicitly in code */
+       . = ALIGN(__PAGE_SIZE);
+       __bss_start = .;
+    .bss (NOLOAD) :
+       {
+               *(.bss)
+               *(.bss.*)
+        *(COMMON)
+    }
+       __bss_end = .;
+
+       . = ALIGN(__PAGE_SIZE);
+       _pagetables = .;
+       .pagetables (NOLOAD) :
+       {
+               . += 3 * __PAGE_SIZE;
+       }
+
+       _end = .;
+       
+
+       . = ALIGN(__PAGE_SIZE);
+       .comment       0 : { *(.comment) }
+       DEBUG_SYMBOLS
+
+   /DISCARD/ : { *(.gnu*) *(.note*) }
+}
+__bss_size = (__bss_end - __bss_start)>>3;
-- 
2.17.1


_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

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