diff options
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/powerpc/eth_comm/start/start.S | 153 |
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 */ |