From 501dce6dc591f065acdf3e83b2de29e9bf7af4a4 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Thu, 29 Sep 2016 14:58:53 +0000 Subject: [PATCH] git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9822 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/XMC/RT-XMC1100-XMC_2GO/Makefile | 2 +- .../compilers/GCC/mk/startup_xmc1100.mk | 3 +- .../ARMCMx/devices/XMC1100/veneers_gcc.S | 95 ++++++++++++++++++- 3 files changed, 92 insertions(+), 8 deletions(-) diff --git a/demos/XMC/RT-XMC1100-XMC_2GO/Makefile b/demos/XMC/RT-XMC1100-XMC_2GO/Makefile index 50808b6d5..1484eabfb 100644 --- a/demos/XMC/RT-XMC1100-XMC_2GO/Makefile +++ b/demos/XMC/RT-XMC1100-XMC_2GO/Makefile @@ -27,7 +27,7 @@ endif # NOTE: On XMC1100 the following symbols are mapped on the words CLK_VAL1 and # CLK_VAL2. ifeq ($(USE_LDOPT),) - USE_LDOPT = --defsym=MemManage_Handler=0xFFFFFFFF,--defsym=BusFault_Handler=0xFFFFFFFF + USE_LDOPT = --defsym=__clk_val1=0xFFFFFFFF,--defsym=__clk_val2=0xFFFFFFFF endif # Enable this if you want link time optimizations (LTO) diff --git a/os/common/startup/ARMCMx/compilers/GCC/mk/startup_xmc1100.mk b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_xmc1100.mk index 7f4864d94..dcd1a3801 100644 --- a/os/common/startup/ARMCMx/compilers/GCC/mk/startup_xmc1100.mk +++ b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_xmc1100.mk @@ -1,6 +1,5 @@ # List of the ChibiOS generic XMC1100 startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/crt1.c \ - $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/vectors.c +STARTUPSRC = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/crt1.c STARTUPASM = $(CHIBIOS)/os/common/startup/ARMCMx/devices/XMC1100/veneers_gcc.S \ $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/crt0_v6m.S diff --git a/os/common/startup/ARMCMx/devices/XMC1100/veneers_gcc.S b/os/common/startup/ARMCMx/devices/XMC1100/veneers_gcc.S index ce1a718ee..9a30508fc 100644 --- a/os/common/startup/ARMCMx/devices/XMC1100/veneers_gcc.S +++ b/os/common/startup/ARMCMx/devices/XMC1100/veneers_gcc.S @@ -40,18 +40,103 @@ .cpu cortex-m0 .thumb - .section .ram0_init, "ax", %progbits + .section .vecttirs, "ax", %progbits + .align 4 + .globl _vectors +_vectors: + .long __main_stack_end__, __reset, __clk_val1, __clk_val2 + .long MemManage_Handler, BusFault_Handler, UsageFault_Handler, Vector1C + .long Vector20, Vector24, Vector28, SVC_Handler + .long DebugMon_Handler, Vector34, PendSV_Handler, SysTick_Handler + .long Vector40, Vector44, Vector48, Vector4C + .long Vector50, Vector54, Vector58, Vector5C + .long Vector60, Vector64, Vector68, Vector6C + .long Vector70, Vector74, Vector78, Vector7C + .long Vector80, Vector84, Vector88, Vector8C + .long Vector90, Vector94, Vector98, Vector9C + .long VectorA0, VectorA4, VectorA8, VectorAC + .long VectorB0, VectorB4, VectorB8, VectorBC + + .weak MemManage_Handler, BusFault_Handler, UsageFault_Handler, Vector1C + .weak Vector20, Vector24, Vector28, SVC_Handler + .weak DebugMon_Handler, Vector34, PendSV_Handler, SysTick_Handler + .weak Vector40, Vector44, Vector48, Vector4C + .weak Vector50, Vector54, Vector58, Vector5C + .weak Vector60, Vector64, Vector68, Vector6C + .weak Vector70, Vector74, Vector78, Vector7C + .weak Vector80, Vector84, Vector88, Vector8C + .weak Vector90, Vector94, Vector98, Vector9C + .weak VectorA0, VectorA4, VectorA8, VectorAC + .weak VectorB0, VectorB4, VectorB8, VectorBC +MemManage_Handler: +BusFault_Handler: +UsageFault_Handler: +Vector1C: +Vector20: +Vector24: +Vector28: +SVC_Handler: +DebugMon_Handler: +Vector34: +PendSV_Handler: +SysTick_Handler: +Vector40: +Vector44: +Vector48: +Vector4C: +Vector50: +Vector54: +Vector58: +Vector5C: +Vector60: +Vector64: +Vector68: +Vector6C: +Vector70: +Vector74: +Vector78: +Vector7C: +Vector80: +Vector84: +Vector88: +Vector8C: +Vector90: +Vector94: +Vector98: +Vector9C: +VectorA0: +VectorA4: +VectorA8: +VectorAC: +VectorB0: +VectorB4: +VectorB8: +VectorBC: + + b _unhandled_exception + + .align 2 + .thumb_func + .weak _unhandled_exception +_unhandled_exception: + b _unhandled_exception + + .text + .align 2 + .thumb_func + .global __reset +__reset: b Reset_Handler + + .section .ram0_init, "ax", %progbits .align 2 .thumb_func .global __veneers __veneers: .long 0 .long 0 - ldr r0, =NMI_Handler - mov pc, r0 - ldr r0, =HardFault_Handler - mov pc, r0 + .long 0 + .long 0 .long 0 .long 0 ldr r0, =UsageFault_Handler