summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/eth_comm/start/start.S
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/start/start.S153
1 files changed, 0 insertions, 153 deletions
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/start/start.S b/c/src/lib/libbsp/powerpc/eth_comm/start/start.S
deleted file mode 100644
index a0a894a7ba..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/start/start.S
+++ /dev/null
@@ -1,153 +0,0 @@
-/* dlentry.s
- *
- * $Id$
- *
- * This file contains the entry veneer for RTEMS programs
- * downloaded to the eth-comm board.
- *
- * This file was written by Jay Monkman (jmonkman@fracsa.com)
- * It was based on the dlentry.s file for the Papyrus BSP,
- * written by:
- *
- * Author: Andrew Bray <andy@i-cubed.co.uk>
- *
- * COPYRIGHT (c) 1995 by i-cubed ltd.
- *
- * To anyone who acknowledges that this file is provided "AS IS"
- * without any express or implied warranty:
- * permission to use, copy, modify, and distribute this file
- * for any purpose is hereby granted without fee, provided that
- * the above copyright notice and this notice appears in all
- * copies, and that the name of i-cubed limited not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * i-cubed limited makes no representations about the suitability
- * of this software for any purpose.
- *
- */
-
-#include <rtems/asm.h>
-
-/*
- * The initial stack is set to run BELOW the code base address.
- * (between the vectors and text sections)
- *
- * All the entry veneer has to do is to clear the BSS.
- */
-
-/*
- * GDB likes to have debugging information for the entry veneer.
- * Here is some DWARF information.
- */
-/*
- * There was some debugging info here, but I removed it because I
- * couldn't get it to work. It isn't really necessary as far as I
- * can tell. It should still be in the papyrus BSP. -Jay
- */
-
-/*
- * On entry to download_entry, R3 will hold a pointer to a Board Info
- * Block (boardinfo_t). This should be copied as soon as possible
- * to the global M860_binfo. (The block should be copied, _NOT_
- * the pointer)
- */
-
- .section ".entry" /* This might have to be the first thing in the
- * text section. At one time, it had to be
- * first, but I don't believe it is true
- * andy more. */
- PUBLIC_VAR (start)
-SYM(start):
- bl .startup
-base_addr:
-
-/*
- * Parameters from linker
- */
-toc_pointer:
- .long s.got
-bss_length:
- .long bss.size
-bss_addr:
- .long bss.start
-
-PUBLIC_VAR (text_addr)
-text_addr:
- .long text.start
-
-PUBLIC_VAR (text_length)
-text_length:
- .long text.size
-
-/*
- * Initialization code
- */
-.startup:
- /* Get start address */
- mflr r1
-
- /* clear the bss section */
- bl bssclr
-
-/*
- * Copy the Board Info Block
- */
- .extern SYM(M860_binfo)
- lis r6, SYM(M860_binfo)@ha
- addi r6, r6, SYM(M860_binfo)@l
-
- lhz r4, 0(r3) /* Load the size of the block */
- rlwinm. r4, r4, 30, 0x3fffffff /* get number of words */
-
- mtctr r4
-
-cpy_b: lwz r5, 0(r3) /* In with the old ... */
- stw r5, 0(r6) /* ... Out with the new */
- addi r6, r6, 0x4 /* Go to the next word */
- addi r3, r3, 0x4
- bdnz cpy_b /* decrement counter and loop */
-
-/*
- * C_setup.
- */
-
- /* set toc */
- lwz r2, toc_pointer-base_addr(r1)
-
- /* Set up stack pointer = beginning of text section - 56 */
- addi r1, r1, -56-4
-
- lis r9, 0xff00
- addi r10, 0, -16384
- sth r10, 0x950(r9)
-
- lis r9, 0x0000
- addi r9, r9, 0x0007
- mtspr 0x9e, r9
-
- lis r5,environ@ha
- la r5,environ@l(r5) /* environp */
- li r4, 0 /* argv */
- li r3, 0 /* argc */
- .extern SYM (boot_card)
- bl SYM (boot_card) /* call the first C routine */
-loopstop:
- b loopstop
-
-/*
- * bssclr - zero out bss
- */
-bssclr:
- lwz r4, bss_addr-base_addr(r1) /* Start of bss */
- lwz r5, bss_length-base_addr(r1) /* Length of bss */
-
- rlwinm. r5,r5,30,0x3FFFFFFF /* form length/4 */
- beqlr /* no bss */
- mtctr r5 /* set ctr reg */
- xor r6,r6,r6 /* r6 = 0 */
-clear_bss:
- stswi r6,r4,0x4 /* store r6 */
- addi r4,r4,0x4 /* update r2 */
-
- bdnz clear_bss /* dec counter and loop */
- blr /* return */