mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-09-04 13:23:50 -04:00
Create starting point for GNURX RX62N HEW project.
This commit is contained in:
parent
8c5b77635e
commit
1ee62d835d
17 changed files with 2657 additions and 0 deletions
94
Demo/RX600_RX62N-MDK_GNURX/RTOSDemo/GNU-Files/start.asm
Normal file
94
Demo/RX600_RX62N-MDK_GNURX/RTOSDemo/GNU-Files/start.asm
Normal file
|
@ -0,0 +1,94 @@
|
|||
/*------------------------------------------------------------------------
|
||||
|
|
||||
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
|
Loading…
Add table
Add a link
Reference in a new issue