summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/rtl22xx/startup
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2007-11-06 22:50:42 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2007-11-06 22:50:42 +0000
commitac654234d69944a91ecf9f81ae97d6ee15507707 (patch)
treeb79e2bda3a1f0b4fc3ec8aa624e47399bf8d1414 /c/src/lib/libbsp/arm/rtl22xx/startup
parent2007-11-06 Till Straumann <strauman@slac.stanford.edu> (diff)
downloadrtems-ac654234d69944a91ecf9f81ae97d6ee15507707.tar.bz2
2007-11-03 Ray Xu <rayx.cn@gmail.com>
* start/start.S, startup/bspclean.c: Add veneer between ARM and Thumb instructions. also moved bss init after CPSR/stack init in start.S
Diffstat (limited to 'c/src/lib/libbsp/arm/rtl22xx/startup')
-rw-r--r--c/src/lib/libbsp/arm/rtl22xx/startup/bspclean.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/rtl22xx/startup/bspclean.c b/c/src/lib/libbsp/arm/rtl22xx/startup/bspclean.c
index 3e4986a4a1..2ea71522aa 100644
--- a/c/src/lib/libbsp/arm/rtl22xx/startup/bspclean.c
+++ b/c/src/lib/libbsp/arm/rtl22xx/startup/bspclean.c
@@ -19,7 +19,16 @@ int uart_poll_read(int);
void rtemsReboot (void)
{
+#ifdef __thumb__
+ int tmp;
+ asm volatile (" .code 16 \n" \
+ "ldr %[tmp], =_start \n" \
+ "bx %[tmp] \n" \
+ "nop \n" \
+ : [tmp]"=&r" (tmp) );
+#else
asm volatile ("b _start");
+#endif
}
void bsp_cleanup(void)