OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Demo/] [RX600_RX62N-RSK_GNURX/] [RTOSDemo/] [GNU-Files/] [start.asm] - Rev 597

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

/*------------------------------------------------------------------------
                                                                       |
   FILE        : start.asm                                             |
   DATE        :  Wed, Aug 25, 2010                                    |
   DESCRIPTION :   Reset Program                                       |
   CPU TYPE    :    Other                                              |
                                                                       |
   This file is generated by KPIT GNU Project Generator (Ver.4.5).     |
                                                                       |
------------------------------------------------------------------------*/
                        


        /*Start.asm*/

        .list
        .section .text
        .global _start   /*global Start routine */
        
#ifdef CPPAPP   
___dso_handle:
        .global ___dso_handle
#endif  

        .extern _hw_initialise  /*external Sub-routine to initialise Hardware*/
        .extern _data
        .extern _mdata
        .extern _ebss
        .extern _bss
        .extern _edata
        .extern _main 
        .extern _ustack
        .extern _istack
        .extern _rvectors
#if DEBUG
        .extern _exit
#endif

        
_start:
/* initialise user stack pointer */
        mvtc    #_ustack,USP

/* initialise interrupt stack pointer */
        mvtc    #_istack,ISP

/* setup intb */
        mvtc    #_rvectors_start, intb  /* INTERRUPT VECTOR ADDRESS  definition */

/* setup FPSW */
        mvtc    #100h, fpsw     

/* load data section from ROM to RAM */

        mov     #_mdata,r2      /* src ROM address of data section in R2 */
        mov     #_data,r1       /* dest start RAM address of data section in R1 */
        mov     #_edata,r3      /* end RAM address of data section in R3 */
        sub    r1,r3            /* size of data section in R3 (R3=R3-R1) */
        smovf                   /* block copy R3 bytes from R2 to R1 */

/* bss initialisation : zero out bss */

        mov     #00h,r2         /* load R2 reg with zero */
        mov     #_ebss, r3  /* store the end address of bss in R3 */
        mov     #_bss, r1       /* store the start address of bss in R1 */
        sub   r1,r3             /* size of bss section in R3 (R3=R3-R1) */
        sstr.b

/* call the hardware initialiser */
        bsr.a   _hw_initialise  
        nop

/* setup PSW */
//      mvtc    #10000h, psw                    /* Set Ubit & Ibit for PSW */

/* change PSW PM to user-mode */
//      MVFC   PSW,R1
//      OR     #00100000h,R1
//      PUSH.L R1
//      MVFC   PC,R1
//      ADD    #10,R1
//      PUSH.L R1
//      RTE
//      NOP
//      NOP

/* start user program */
        bsr.a   _main           
        
/* call to exit*/
_exit:
        bsr.a   _exit
        
        .end

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.