summaryrefslogtreecommitdiffstats
path: root/src/runtime/rt_start.S
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2013-07-16 15:29:15 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-09-17 16:45:31 -0500
commit5652d7c0c6a8db05699f2b4334e4615e1ba22127 (patch)
treea04321010213943bc44a908a0de0e88149a7e7de /src/runtime/rt_start.S
parent7c3226b7ef2b3e09bd40823732f05fbf0fe6778f (diff)
downloadtalos-hostboot-5652d7c0c6a8db05699f2b4334e4615e1ba22127.tar.gz
talos-hostboot-5652d7c0c6a8db05699f2b4334e4615e1ba22127.zip
Initial Hostboot Runtime image support.
RTC: 76675 Change-Id: Ibd21cf5b555e6dcee182a2f1a292b47d4f384ba0 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/6127 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/runtime/rt_start.S')
-rw-r--r--src/runtime/rt_start.S72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/runtime/rt_start.S b/src/runtime/rt_start.S
new file mode 100644
index 000000000..cea710b57
--- /dev/null
+++ b/src/runtime/rt_start.S
@@ -0,0 +1,72 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/runtime/rt_start.S $
+#
+# IBM CONFIDENTIAL
+#
+# COPYRIGHT International Business Machines Corp. 2013
+#
+# p1
+#
+# Object Code Only (OCO) source materials
+# Licensed Internal Code Source Materials
+# IBM HostBoot Licensed Internal Code
+#
+# The source code for this program is not published or otherwise
+# divested of its trade secrets, irrespective of what has been
+# deposited with the U.S. Copyright Office.
+#
+# Origin: 30
+#
+# IBM_PROLOG_END_TAG
+.include "kernel/ppcconsts.S"
+
+.section .text.intvects
+
+.org 0x100;
+_init:
+ mflr r10 # Save LR
+ bl 1f # Get current address by branch-with-link.
+1:
+ mflr r4 # Extract current address.
+ mtlr r10 # Restore LR.
+ clrrdi r4, r4, 12 # Align address to 4k.
+
+ addi r10, r4, 0x2000 # Find VFS_LAST_ADDRESS symbol.
+ ld r10, 0(r10) # Read start of relocation table.
+ add r10, r10, r4
+
+ ld r8, 0(r10) # Get count of relocations.
+
+ cmpi cr0, r8, 0 # Perform relocations (if any).
+ beq 2f
+ mtctr r8
+1:
+ ldu r8, 8(r10) # Get relocation destination
+ add r8, r8, r4
+ ld r7, 0(r8) # Get relocation address
+ add r7, r7, r4
+ std r7, 0(r8) # Update relocation address.
+ bdnz 1b # Decrement CTR and continue loop.
+2:
+ addi r10, r4, 0x2008 # Find pointer to main TOC.
+ ld r10, 0(r10) # Dereference pointer to get TOC entry.
+ ld r2, 8(r10)
+ ld r10, 0(r10)
+ mtctr r10
+ bctr
+
+.section .text.kernelasm # @2000
+.global VFS_LAST_ADDRESS
+VFS_LAST_ADDRESS:
+ .space 8
+main_toc_ptr:
+ .quad _main
+
+
+.section .data
+
+.global hbi_ImageId
+hbi_ImageId:
+ .space 128
OpenPOWER on IntegriCloud