summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGreg Watson <jarrah@users.sourceforge.net>2003-07-14 18:03:07 +0000
committerGreg Watson <jarrah@users.sourceforge.net>2003-07-14 18:03:07 +0000
commit8052f4d5da886cf2a66d6ad999eaaa6050b3e032 (patch)
tree532cad8d0fad32df4089b15c54494c8eb0f8d331 /src
parent109959d6b125ec404bd83413548ec58e659d693b (diff)
new init format
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@961 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src')
-rw-r--r--src/arch/ppc/init/Config.lb2
-rw-r--r--src/arch/ppc/init/crt0.S.lb66
2 files changed, 68 insertions, 0 deletions
diff --git a/src/arch/ppc/init/Config.lb b/src/arch/ppc/init/Config.lb
new file mode 100644
index 0000000000..fcda384bb6
--- /dev/null
+++ b/src/arch/ppc/init/Config.lb
@@ -0,0 +1,2 @@
+init crt0.S.lb
+#initobject stuff.o
diff --git a/src/arch/ppc/init/crt0.S.lb b/src/arch/ppc/init/crt0.S.lb
new file mode 100644
index 0000000000..2f26f0ea34
--- /dev/null
+++ b/src/arch/ppc/init/crt0.S.lb
@@ -0,0 +1,66 @@
+/* $Id$ */
+/* Copyright 2000 AG Electronics Ltd. */
+/* This code is distributed without warranty under the GPL v2 (see COPYING) */
+
+#define ASM
+#include "ppcreg.h"
+#include <ppc_asm.tmpl>
+
+.section ".rom.data", "a", @progbits
+.section ".rom.text", "ax", @progbits
+
+.globl _start
+.type _start, @function
+.globl __bss_end
+.globl __start_address_check
+
+ /*
+ * Locate at hreset vector
+ */
+ .space (0x100)
+
+_start:
+ b system_reset
+
+ /*
+ * Space for exception table
+ */
+ .space (0x3000)
+
+system_reset:
+
+%%EARLY_INIT%%
+
+start_payload:
+ /*
+ * Relocate payload (text & data) to ram
+ */
+ lis r3, _liseg@ha
+ addi r3, r3, _liseg@l
+ lis r4, _iseg@ha
+ addi r4, r4, _iseg@l
+
+ /*
+ * Skip if they're the same
+ */
+ cmp 0, 0, r3, r4
+ beq 1f
+
+ lis r7, _eliseg@ha
+ addi r7, r7, _eliseg@l
+
+2:
+ lwzx r5, 0, r3
+ stwx r5, 0, r4
+ addi r3, r3, 4
+ addi r4, r4, 4
+ cmp 0, 0, r3, r7
+ ble 2b
+
+1:
+ /*
+ * Start payload
+ */
+ b _iseg
+
+%%NORTHBRIDGE_INIT%%