summaryrefslogtreecommitdiffstats
path: root/qemu/roms/u-boot/arch/powerpc/lib/reloc.S
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/roms/u-boot/arch/powerpc/lib/reloc.S')
-rw-r--r--qemu/roms/u-boot/arch/powerpc/lib/reloc.S33
1 files changed, 33 insertions, 0 deletions
diff --git a/qemu/roms/u-boot/arch/powerpc/lib/reloc.S b/qemu/roms/u-boot/arch/powerpc/lib/reloc.S
new file mode 100644
index 000000000..513141f22
--- /dev/null
+++ b/qemu/roms/u-boot/arch/powerpc/lib/reloc.S
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2009 Wolfgang Denk <wd@denx.de>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <ppc_asm.tmpl>
+
+ .file "reloc.S"
+
+ .text
+#ifndef CONFIG_NAND_SPL
+ /*
+ * Function: relocate entries for one exception vector
+ */
+ .globl trap_reloc
+ .type trap_reloc, @function
+trap_reloc:
+ lwz r0, 0(r7) /* hdlr ... */
+ add r0, r0, r3 /* ... += dest_addr */
+ stw r0, 0(r7)
+
+ lwz r0, 4(r7) /* int_return ... */
+ add r0, r0, r3 /* ... += dest_addr */
+ stw r0, 4(r7)
+
+ lwz r0, 8(r7) /* transfer_to_handler ...*/
+ add r0, r0, r3 /* ... += dest_addr */
+ stw r0, 8(r7)
+
+ blr
+ .size trap_reloc, .-trap_reloc
+#endif