aboutsummaryrefslogtreecommitdiff
path: root/src/arch/ppc/lib/c_start.S
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/ppc/lib/c_start.S')
-rw-r--r--src/arch/ppc/lib/c_start.S127
1 files changed, 0 insertions, 127 deletions
diff --git a/src/arch/ppc/lib/c_start.S b/src/arch/ppc/lib/c_start.S
deleted file mode 100644
index 3bae8da751..0000000000
--- a/src/arch/ppc/lib/c_start.S
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright (C) 2000 AG Electronics Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/*
- * The assumption is that we're located in ROM and we have a fake stack
- * located in cache. Our task is to turn on memory proper, the finish
- * configuring the machine.
- */
-
-#define ASM
-#include "ppcreg.h"
-#include <ppc_asm.tmpl>
-
-.section ".text"
-.globl _start
-
-_start:
- /*
- * init stack pointer to real ram now that memory is on
- * Note: We use the last 8 bytes on the stack to hold struct cpu_info,
- * Which are initialized to zero as we clear the stack.
- */
- li r0, 0
- lis r1, _estack@ha
- addi r1, r1, _estack@l
- stwu r0,-64(r1)
- stwu r1,-24(r1)
-
- /*
- * Clear stack
- */
- lis r4, _stack@ha
- addi r4, r4, _stack@l
- lis r7, _estack@ha
- addi r7, r7, _estack@l
- lis r5, 0
-1: stwx r5, 0, r4
- addi r4, r4, 4
- cmp 0, 0, r4, r7
- ble 1b
- sync
-
- /*
- * Clear bss
- */
- lis r4, _bss@ha
- addi r4, r4, _bss@l
- lis r7, _ebss@ha
- addi r7, r7, _ebss@l
- lis r5, 0
-1: stwx r5, 0, r4
- addi r4, r4, 4
- cmp 0, 0, r4, r7
- ble 1b
- sync
-
- /*
- * Set up the EABI pointers, before we enter any C code
- */
- lis r13, _SDA_BASE_@ha
- addi r13, r13, _SDA_BASE_@l
- lis r2, _SDA2_BASE_@ha
- addi r2, r2, _SDA2_BASE_@l
-
- /*
- * load start address into SRR0 for rfi
- */
- lis r3, hardwaremain@ha
- addi r3, r3, hardwaremain@l
- mtspr SRR0, r3
-
- /*
- * load the current MSR into SRR1 so that it will be copied
- * back into MSR on rfi
- */
- mfmsr r4
- mtspr SRR1, r4 // load SRR1 with r4
-
- /*
- * If something returns after rfi then die
- */
- lis r3, dead@ha
- addi r3, r3, dead@l
- mtlr r3
-
- /*
- * Complete rest of initialization in C (hardwaremain)
- */
- rfi
-
- /*
- * Stop here if something goes wrong
- */
-dead:
- b dead
- /*NOTREACHED*/
-
-/* Remove need for ecrti.o and ectrn.o */
-.globl __init
-__init:
-.globl __fini
-__fini:
-.globl __CTOR_LIST__
-__CTOR_LIST__:
-.globl __CTOR_END__
-__CTOR_END__:
-.globl __DTOR_LIST__
-__DTOR_LIST__:
-.globl __DTOR_END__
-__DTOR_END__:
- blr