[OpenBIOS] [PATCH 2/2] ppc: Set up TOC base for ppc64
Andreas Färber
andreas.faerber at web.de
Tue Nov 23 22:40:33 CET 2010
r2 points to TOC base, __toc_start + 0x8000.
This value is stored as part of the function descriptor.
Include some related ELF sections in the linker script.
Cc: Alexander Graf <agraf at suse.de>
Cc: Segher Boessenkool <segher at kernel.crashing.org>
Signed-off-by: Andreas Färber <andreas.faerber at web.de>
---
arch/ppc/qemu/start.S | 7 +++++++
arch/ppc64/qemu/ldscript | 10 ++++++++++
2 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/arch/ppc/qemu/start.S b/arch/ppc/qemu/start.S
index f5c2f24..4b6df3f 100644
--- a/arch/ppc/qemu/start.S
+++ b/arch/ppc/qemu/start.S
@@ -445,6 +445,13 @@ GLOBL(_entry):
/* save memory size in stack */
+#ifdef __powerpc64__
+ /* set up TOC pointer */
+
+ LOAD_REG_IMMEDIATE(r2, setup_mmu)
+ ld r2, 8(r2)
+#endif
+
bl BRANCH_LABEL(setup_mmu)
bl BRANCH_LABEL(entry)
1: nop
diff --git a/arch/ppc64/qemu/ldscript b/arch/ppc64/qemu/ldscript
index 1d8aa8e..7a22903 100644
--- a/arch/ppc64/qemu/ldscript
+++ b/arch/ppc64/qemu/ldscript
@@ -41,8 +41,18 @@ SECTIONS
_data = .;
*(.data)
*(.data.*)
+ *(.toc1)
+ *(.branch_lt)
_edata = .;
}
+ .opd : {
+ *(.opd)
+ }
+ .got : {
+ __toc_start = .;
+ *(.got)
+ *(.toc)
+ }
.bss ALIGN(4096): {
_bss = .;
--
1.7.3
More information about the OpenBIOS
mailing list