OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [lib/] [libbsp/] [sh/] [gensh2/] [start/] [start.rom] - Rev 30

Go to most recent revision | Compare with Previous | Blame | View Log

/*
 *  Authors: Ralf Corsepius (corsepiu@faw.uni-ulm.de) and
 *           Bernd Becker (becker@faw.uni-ulm.de)
 *
 *  COPYRIGHT (c) 1997-1998, FAW Ulm, Germany
 *
 *  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.
 *
 *
 *  COPYRIGHT (c) 1998.
 *  On-Line Applications Research Corporation (OAR).
 *  Copyright assigned to U.S. Government, 1994.
 *
 *  The license and distribution terms for this file may be
 *  found in the file LICENSE in this distribution or at
 *  http://www.OARcorp.com/rtems/license.html.
 *
 *  $Id: start.rom,v 1.2 2001-09-27 12:01:12 chris Exp $
 */

#include "asm.h"

        BEGIN_CODE
        PUBLIC(start)
SYM (start):
        ! install the stack pointer
        mov.l   stack_k,r15

        ! zero out bss
        mov.l   edata_k,r0
        mov.l   end_k,r1
        mov     #0,r2
0:
        mov.l   r2,@r0
        add     #4,r0
        cmp/ge  r0,r1
        bt      0b

        ! copy the vector table from rom to ram
        mov.l   vects_k,r0      ! vectab
        mov     #0,r1           ! address of boot vector table
        mov     #0,r2           | number of bytes copied
        mov.w   vects_size,r3   ! size of entries in vectab
1:
        mov.l   @r1+,r4
        mov.l   r4,@r0
        add     #4,r0
        add     #1,r2
        cmp/hi  r3,r2
        bf      1b

        mov.l   vects_k,r0      ! update vbr to point to vectab
        ldc     r0,vbr

        ! call the mainline     
        mov #0,r4               ! argc
        mov.l main_k,r0
        jsr @r0
        mov #0,r5               ! argv

        ! call exit
        mov     r0,r4
        mov.l   exit_k,r0
        jsr     @r0
        or      r0,r0

        END_CODE

        .align 2
stack_k:
        .long   SYM(stack)      
edata_k:
        .long   SYM(edata)
end_k:
        .long   SYM(end)
main_k:
        .long   SYM(boot_card)
exit_k:
        .long   SYM(exit)

vects_k:
        .long   SYM(vectab)
vects_size:
        .word   255

#ifdef __ELF__
        .section .stack,"aw"
#else
        .section .stack
#endif
SYM(stack):
        .long   0xdeaddead

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.