uv-k5-firmware/start.S
2023-09-01 19:20:08 +01:00

252 lines
3.2 KiB
ArmAsm

# Copyright 2023 Dual Tachyon
# https://github.com/DualTachyon
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
.cpu cortex-m0
.fpu softvfp
.thumb
.global Stack
.global HandlerReset
.global Main
.global OVERLAY_Install
.global BOARD_FLASH_Init
.global BSS_Init
.global SystickHandler
.weak SystickHandler
.section .text.isr
Stack:
.long 0x20003FF0
Reset:
.long HandlerReset + 1
NMI:
.long HandlerNMI + 1
HardFault:
.long HandlerHardFault + 1
Reserved_10:
.long 0
Reserved_14:
.long 0
Reserved_18:
.long 0
Reserved_1C:
.long 0
Reserved_20:
.long 0
Reserved_24:
.long 0
Reserved_28:
.long 0
SVCall:
.long HandlerSVCall + 1
Reserved_30:
.long 0
Reserved_34:
.long 0
PendSV:
.long HandlerPendSV + 1
SysTick:
.long SystickHandler + 1
WWDT:
.long HandlerWWDT + 1
IWDT:
.long HandlerIWDT + 1
RTC:
.long HandlerRTC + 1
DMA:
.long HandlerDMA + 1
SARADC:
.long HandlerSARADC + 1
TIMER_BASE0:
.long HandlerTIMER_BASE0 + 1
TIMER_BASE1:
.long HandlerTIMER_BASE1 + 1
TIMER_PLUS0:
.long HandlerTIMER_PLUS0 + 1
TIMER_PLUS1:
.long HandlerTIMER_PLUS1 + 1
PWM_BASE0:
.long HandlerPWM_BASE0 + 1
PWM_BASE1:
.long HandlerPWM_BASE1 + 1
PWM_PLUS0:
.long HandlerPWM_PLUS0 + 1
PWM_PLUS1:
.long HandlerPWM_PLUS1 + 1
UART0:
.long HandlerUART0 + 1
UART1:
.long HandlerUART1 + 1
UART2:
.long HandlerUART2 + 1
SPI0:
.long HandlerSPI0 + 1
SPI1:
.long HandlerSPI1 + 1
IIC0:
.long HandlerIIC0 + 1
IIC1:
.long HandlerIIC1 + 1
CMP:
.long HandlerCMP + 1
TIMER_BASE2:
.long HandlerTIMER_BASE2 + 1
GPIOA5:
.long HandlerGPIOA5 + 1
GPIOA6:
.long HandlerGPIOA6 + 1
GPIOA7:
.long HandlerGPIOA7 + 1
GPIOB0:
.long HandlerGPIOB0 + 1
GPIOB1:
.long HandlerGPIOB1 + 1
GPIOC0:
.long HandlerGPIOC0 + 1
GPIOC1:
.long HandlerGPIOC1 + 1
GPIOA:
.long HandlerGPIOA + 1
GPIOB:
.long HandlerGPIOB + 1
GPIOC:
.long HandlerGPIOC + 1
.section .text
HandlerNMI:
b .
HandlerHardFault:
b .
HandlerSVCall:
b .
HandlerPendSV:
b .
SystickHandler:
bx lr
HandlerWWDT:
b .
HandlerIWDT:
b .
HandlerRTC:
b .
HandlerDMA:
b .
HandlerSARADC:
b .
HandlerTIMER_BASE0:
b .
HandlerTIMER_BASE1:
b .
HandlerTIMER_PLUS0:
b .
HandlerTIMER_PLUS1:
b .
HandlerPWM_BASE0:
b .
HandlerPWM_BASE1:
b .
HandlerPWM_PLUS0:
b .
HandlerPWM_PLUS1:
b .
HandlerUART0:
b .
HandlerUART1:
b .
HandlerUART2:
b .
HandlerSPI0:
b .
HandlerSPI1:
b .
HandlerIIC0:
b .
HandlerIIC1:
b .
HandlerCMP:
b .
HandlerTIMER_BASE2:
b .
HandlerGPIOA5:
b .
HandlerGPIOA6:
b .
HandlerGPIOA7:
b .
HandlerGPIOB0:
b .
HandlerGPIOB1:
b .
HandlerGPIOC0:
b .
HandlerGPIOC1:
b .
HandlerGPIOA:
b .
HandlerGPIOB:
b .
HandlerGPIOC:
b .
HandlerReset:
ldr r0, =0x20003FF0
mov sp, r0
bl DATA_Init
bl BSS_Init
bl BOARD_FLASH_Init
bl Main
b .