aboutsummaryrefslogtreecommitdiffstats
path: root/os/common/ports/ARMCMx/compilers/IAR
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2014-01-29 11:22:07 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2014-01-29 11:22:07 +0000
commit0ae68612204c3d474b26cfee94122b5a3139d9bb (patch)
treeec531b2c95c24f6bf5d525885bb0a57099d1893b /os/common/ports/ARMCMx/compilers/IAR
parent6cb1afbda0359bc1d15f398b862b522ccf9c4307 (diff)
downloadChibiOS-0ae68612204c3d474b26cfee94122b5a3139d9bb.tar.gz
ChibiOS-0ae68612204c3d474b26cfee94122b5a3139d9bb.tar.bz2
ChibiOS-0ae68612204c3d474b26cfee94122b5a3139d9bb.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/kernel_3_dev@6655 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/common/ports/ARMCMx/compilers/IAR')
-rw-r--r--os/common/ports/ARMCMx/compilers/IAR/cstartup.s68
1 files changed, 68 insertions, 0 deletions
diff --git a/os/common/ports/ARMCMx/compilers/IAR/cstartup.s b/os/common/ports/ARMCMx/compilers/IAR/cstartup.s
new file mode 100644
index 000000000..3ee52d0a1
--- /dev/null
+++ b/os/common/ports/ARMCMx/compilers/IAR/cstartup.s
@@ -0,0 +1,68 @@
+/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
+ 2011,2012,2013 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT 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. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+ MODULE ?cstartup
+
+CONTROL_MODE_PRIVILEGED SET 0
+CONTROL_MODE_UNPRIVILEGED SET 1
+CONTROL_USE_MSP SET 0
+CONTROL_USE_PSP SET 2
+
+ AAPCS INTERWORK, VFP_COMPATIBLE, ROPI
+ PRESERVE8
+
+ SECTION .intvec:CODE:NOROOT(3)
+
+ SECTION CSTACK:DATA:NOROOT(3)
+ PUBLIC __main_thread_stack_base__
+__main_thread_stack_base__:
+ PUBLIC __heap_end__
+__heap_end__:
+
+ SECTION SYSHEAP:DATA:NOROOT(3)
+ PUBLIC __heap_base__
+__heap_base__:
+
+ PUBLIC __iar_program_start
+ EXTERN __vector_table
+ EXTWEAK __iar_init_core
+ EXTWEAK __iar_init_vfp
+ EXTERN __cmain
+
+ SECTION .text:CODE:REORDER(2)
+ REQUIRE __vector_table
+ THUMB
+__iar_program_start:
+ cpsid i
+ ldr r0, =SFE(CSTACK)
+ msr PSP, r0
+ movs r0, #CONTROL_MODE_PRIVILEGED | CONTROL_USE_PSP
+ msr CONTROL, r0
+ isb
+ bl __early_init
+ bl __iar_init_core
+ bl __iar_init_vfp
+ b __cmain
+
+ PUBWEAK __early_init
+__early_init:
+ bx lr
+
+ END