summaryrefslogtreecommitdiffstats
path: root/qemu/roms/openbios/arch/ppc64
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/roms/openbios/arch/ppc64')
-rw-r--r--qemu/roms/openbios/arch/ppc64/qemu/ldscript85
1 files changed, 85 insertions, 0 deletions
diff --git a/qemu/roms/openbios/arch/ppc64/qemu/ldscript b/qemu/roms/openbios/arch/ppc64/qemu/ldscript
new file mode 100644
index 000000000..fbbcc546f
--- /dev/null
+++ b/qemu/roms/openbios/arch/ppc64/qemu/ldscript
@@ -0,0 +1,85 @@
+OUTPUT_FORMAT(elf64-powerpc)
+OUTPUT_ARCH(powerpc:common64)
+
+/* Initial load address
+ */
+BASE_ADDR = 0xfff00000;
+
+/* As NVRAM is at 0xfff04000, the .text needs to be after that
+ * The value in arch/ppc/qemu/kernel.c must match this value!
+ */
+TEXT_ADDR = 0xfff08000;
+
+/* Hard reset vector address
+ */
+HRESET_ADDR = 0xfffffffc;
+
+CSTACK_SIZE = 32768; /* client stack size */
+
+SECTIONS
+{
+ . = BASE_ADDR;
+
+ _start = BASE_ADDR + 0x0100;
+ .text.vectors ALIGN(4096): {
+ *(.text.vectors)
+ }
+
+ . = TEXT_ADDR;
+ /* Normal sections */
+ .data.dict ALIGN(4096): {
+ _dict_start = .;
+ *(.data.dict)
+ _dict_end = .;
+ }
+
+ .text ALIGN(4096): {
+ *(.text)
+ *(.text.*)
+ }
+
+ .rodata ALIGN(4096): {
+ _rodata = .;
+ *(.rodata)
+ *(.rodata.*)
+ *(.note.ELFBoot)
+ }
+ .data ALIGN(4096): {
+ _data = .;
+ *(.data)
+ *(.data.*)
+ *(.toc1)
+ *(.branch_lt)
+ _edata = .;
+ }
+ .opd : {
+ *(.opd)
+ }
+ .got : {
+ __toc_start = .;
+ *(.got)
+ *(.toc)
+ }
+
+ .bss ALIGN(4096): {
+ _bss = .;
+ *(.sbss)
+ *(.sbss.*)
+ *(.bss)
+ *(.bss.*)
+ *(COMMON)
+ _ebss = .;
+ }
+
+ . = HRESET_ADDR;
+
+ .romentry : { *(.romentry) }
+
+ . = ALIGN(4096);
+ _end = .;
+
+ /* We discard .note sections other than .note.ELFBoot,
+ * because some versions of GCC generates useless ones. */
+
+ /DISCARD/ : { *(.comment*) *(.note.*) }
+}