123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- ;;/*********************************************************************************************************************
- ;;* DISCLAIMER
- ;;* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.
- ;;* No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
- ;;* applicable laws, including copyright laws.
- ;;* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED
- ;;* OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- ;;* NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY
- ;;* LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,
- ;;* INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR
- ;;* ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- ;;* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability
- ;;* of this software. By using this software, you agree to the additional terms and conditions found by accessing the
- ;;* following link:
- ;;* http://www.renesas.com/disclaimer
- ;;*
- ;;* Copyright (C) 2015, 2017 Renesas Electronics Corporation. All rights reserved.
- ;;*********************************************************************************************************************/
- ;;/*
- ;;**********************************************************************************************************************
- ;;* File Name : reset_program.asm
- ;;* Version : 2.0 (2017-11-17)
- ;;* Device(s) : RX
- ;;* Tool-Chain : GCCRX
- ;;* Description : This is start up file for RX.
- ;;**********************************************************************************************************************
- ;;*/
- #ifdef __GNUC__
- ;;reset_program.asm
- .list
- .section .text
- .global _PowerON_Reset_PC ;;global Start routine
- .global _PowerON_Reset ;;for backward compatibility
- .extern _PowerON_Reset_PC_Prg ;;external Power ON Reset main function in RESETPRG.C
- .extern _data
- .extern _mdata
- .extern _ebss
- .extern _bss
- .extern _edata
- .extern _istack
- .extern _exit
- _PowerON_Reset_PC :
- _PowerON_Reset :
- ;;initialise interrupt stack pointer
- mvtc #_istack,ISP
- ;;jump to Power ON Reset main function in RESETPRG.C
- bra _PowerON_Reset_PC_Prg
- ;;init section
- .global __INITSCT
- .type __INITSCT,@function
- __INITSCT:
- ;;load data section from ROM to RAM
- pushm r1-r3
- 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
- popm r1-r3
- rts
- #ifdef CPPAPP
- ;;init global class object
- .global __CALL_INIT
- .type __CALL_INIT,@function
- __CALL_INIT:
- bra __rx_init
- .global _rx_run_preinit_array
- .type _rx_run_preinit_array,@function
- _rx_run_preinit_array:
- mov #__preinit_array_start,r1
- mov #__preinit_array_end,r2
- bra.a _rx_run_inilist
- .global _rx_run_init_array
- .type _rx_run_init_array,@function
- _rx_run_init_array:
- mov #__init_array_start,r1
- mov #__init_array_end,r2
- mov #4, r3
- bra.a _rx_run_inilist
- .global _rx_run_fini_array
- .type _rx_run_fini_array,@function
- _rx_run_fini_array:
- mov #__fini_array_start,r2
- mov #__fini_array_end,r1
- mov #-4, r3
- ;;fall through
- _rx_run_inilist:
- next_inilist:
- cmp r1,r2
- beq.b done_inilist
- mov.l [r1],r4
- cmp #-1, r4
- beq.b skip_inilist
- cmp #0, r4
- beq.b skip_inilist
- pushm r1-r3
- jsr r4
- popm r1-r3
- skip_inilist:
- add r3,r1
- bra.b next_inilist
- done_inilist:
- rts
- .section .init,"ax"
- .balign 4
- .global __rx_init
- __rx_init:
- .section .fini,"ax"
- .balign 4
- .global __rx_fini
- __rx_fini:
- bsr.a _rx_run_fini_array
- .section .sdata
- .balign 4
- .global __gp
- .weak __gp
- __gp:
- .section .data
- .global ___dso_handle
- .weak ___dso_handle
- ___dso_handle:
- .long 0
- .section .init,"ax"
- bsr.a _rx_run_preinit_array
- bsr.a _rx_run_init_array
- rts
- .global __rx_init_end
- __rx_init_end:
- .section .fini,"ax"
- rts
- .global __rx_fini_end
- __rx_fini_end:
- #endif
- ;;call to exit
- _exit:
- bra _loop_here
- _loop_here:
- bra _loop_here
- .text
- #endif
- .end
|