// ********************************************************************** // * SEGGER Microcontroller GmbH * // * The Embedded Experts * // ********************************************************************** // * * // * (c) 2014 - 2020 SEGGER Microcontroller GmbH * // * (c) 2001 - 2020 Rowley Associates Limited * // * * // * www.segger.com Support: support@segger.com * // * * // ********************************************************************** // * * // * All rights reserved. * // * * // * Redistribution and use in source and binary forms, with or * // * without modification, are permitted provided that the following * // * conditions are met: * // * * // * - Redistributions of source code must retain the above copyright * // * notice, this list of conditions and the following disclaimer. * // * * // * - Neither the name of SEGGER Microcontroller GmbH * // * nor the names of its contributors may be used to endorse or * // * promote products derived from this software without specific * // * prior written permission. * // * * // * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * // * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * // * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * // * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * // * DISCLAIMED. * // * IN NO EVENT SHALL SEGGER Microcontroller GmbH BE LIABLE FOR * // * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * // * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * // * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * // * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * // * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * // * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * // * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * // * DAMAGE. * // * * // ********************************************************************** .macro ISR_HANDLER name= .section .vectors, "ax" .word \name .section .init, "ax" .thumb_func .weak \name \name: 1: b 1b /* endless loop */ .endm .macro ISR_RESERVED .section .vectors, "ax" .word 0 .endm .syntax unified .global reset_handler .global Reset_Handler .equ Reset_Handler, reset_handler .section .vectors, "ax" .code 16 .balign 2 .global _vectors .macro DEFAULT_ISR_HANDLER name= .thumb_func .weak \name \name: 1: b 1b /* endless loop */ .endm _vectors: .word __stack_end__ .word reset_handler ISR_HANDLER NMI_Handler ISR_HANDLER HardFault_Handler ISR_HANDLER MemManage_Handler ISR_HANDLER BusFault_Handler ISR_HANDLER UsageFault_Handler ISR_RESERVED ISR_RESERVED ISR_RESERVED ISR_RESERVED ISR_HANDLER SVC_Handler ISR_HANDLER DebugMon_Handler ISR_RESERVED ISR_HANDLER PendSV_Handler ISR_HANDLER SysTick_Handler #ifdef __VECTORS #include __VECTORS #else ISR_HANDLER ExternalISR0 ISR_HANDLER ExternalISR1 ISR_HANDLER ExternalISR2 ISR_HANDLER ExternalISR3 ISR_HANDLER ExternalISR4 ISR_HANDLER ExternalISR5 ISR_HANDLER ExternalISR6 ISR_HANDLER ExternalISR7 ISR_HANDLER ExternalISR8 ISR_HANDLER ExternalISR9 ISR_HANDLER ExternalISR10 ISR_HANDLER ExternalISR11 ISR_HANDLER ExternalISR12 ISR_HANDLER ExternalISR13 ISR_HANDLER ExternalISR14 ISR_HANDLER ExternalISR15 ISR_HANDLER ExternalISR16 ISR_HANDLER ExternalISR17 ISR_HANDLER ExternalISR18 ISR_HANDLER ExternalISR19 ISR_HANDLER ExternalISR20 ISR_HANDLER ExternalISR21 ISR_HANDLER ExternalISR22 ISR_HANDLER ExternalISR23 ISR_HANDLER ExternalISR24 ISR_HANDLER ExternalISR25 ISR_HANDLER ExternalISR26 ISR_HANDLER ExternalISR27 ISR_HANDLER ExternalISR28 ISR_HANDLER ExternalISR29 ISR_HANDLER ExternalISR30 ISR_HANDLER ExternalISR31 #endif .section .vectors, "ax" _vectors_end: .section .init, "ax" .balign 2 .thumb_func reset_handler: #ifndef __NO_SYSTEM_INIT ldr r0, =__stack_end__ mov sp, r0 bl SystemInit #endif #if !defined(__SOFTFP__) // Enable CP11 and CP10 with CPACR |= (0xf<<20) movw r0, 0xED88 movt r0, 0xE000 ldr r1, [r0] orrs r1, r1, #(0xf << 20) str r1, [r0] #endif b _start #ifndef __NO_SYSTEM_INIT .thumb_func .weak SystemInit SystemInit: bx lr #endif