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

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Demo/] [H8S/] [RTOSDemo/] [start.asm] - Rev 637

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

;/****************************************************************
;KPIT Cummins Infosystems Ltd, Pune, India. - 4th September 2003.
;
;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
;
;*****************************************************************/


;*********************************************************************
; File: start.asm
;
;
; desc:
; 
;  System initialisation routine - entry point for the application.
;  The stack pointer is initialised, then the hardware initialisation
;  routine called.  The static data areas are then initialised, before
;  the main function is executed.  A simple exit funtion is also
;  supplied
;
;*********************************************************************

#ifdef __H8300H__  

#ifdef __NORMAL_MODE__
        .h8300hn
#else
        .h8300h
#endif

#endif  /*_H8300H_ */

#ifdef __H8300S__

#ifdef __NORMAL_MODE__
        .h8300sn
#else
        .h8300s
#endif

#endif /* __H8300S__ */
        
        .section .text
        .global _start
#if DEBUG       
        .extern _exit
#endif

        .extern _hw_initialise
        .extern _main

        .extern _data
        .extern _mdata
        .extern _edata
        .extern _bss
        .extern _ebss
        .extern _stack

_start:
        ; initialise the SP for non-vectored code
    mov.l   #_stack,er7
        ; call the hardware initialiser
        jsr     @_hw_initialise
#ifdef ROMSTART 
        ; get the boundaries for the .data section initialisation
    mov.l   #_data,er0
    mov.l   #_edata,er1
    mov.l   #_mdata,er2
    cmp.l   er0,er1
        beq     start_1
start_l:
    mov.b   @er2,r3l  ;get from src
    mov.b   r3l,@er0  ;place in dest
    inc.l   #1,er2    ;inc src
    inc.l   #1,er0    ;inc dest
    cmp.l   er0,er1   ;dest == edata?
        bne     start_l
start_1:
#endif          //ROMSTART
        ; zero out bss
    mov.l   #_bss,er0
    mov.l   #_ebss,er1
    cmp.l   er0,er1         
        beq     start_3
        sub.b   r2l,r2l
start_2:
    mov.b   r2l,@er0
    inc.l   #1,er0
    cmp.l   er0,er1
        bne     start_2
start_3:
#ifdef CPPAPP   
        ;Initialize global constructor  
        jsr     @___main
#endif
        
        ; call the mainline     
        jsr     @_main

        
    mov.l   er0,er4
    
    ;call to exit
#if DEBUG
    jsr     @_exit
#endif
#if RELEASE
 exit:
        bra     exit
#endif

        

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.