/* * Copyright (C) 2017-2024 Alibaba Group Holding Limited * * SPDX-License-Identifier: Apache-2.0 * * 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. */ #include #ifndef CONFIG_SUPPORT_NON_VECTOR_IRQ .section .vectors, "aw", @progbits .align 6 .globl __Vectors .type __Vectors, @object __Vectors: .long Default_Handler .long Default_Handler .long Default_Handler .long tspend_handler .long Default_Handler .long Default_Handler .long Default_Handler .long Default_IRQHandler .long Default_Handler .long Default_Handler .long Default_Handler .long Default_Handler .long Default_Handler .long Default_Handler .long Default_Handler .long Default_Handler /* External interrupts */ .long Default_IRQHandler #if CONFIG_IRQ_LATENCY .long IRQ_LATENCY_IRQHandler #else .long Default_IRQHandler #endif .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler .long Default_IRQHandler #else .section .vectors, "aw", @progbits .align 6 .globl __Vectors .type __Vectors, @object __Vectors: .long do_irq .long do_irq .long do_irq .long tspend_handler .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq /* External interrupts */ .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq .long do_irq #endif .text .align 2 j Reset_Handler .align 2 .long 0x594B5343 /* CSKY ASCII */ .long 0x594B5343 /* CSKY ASCII */ .align 2 _start: .text .globl Reset_Handler .align 2 .type Reset_Handler, %function Reset_Handler: .option push .option norelax la gp, __global_pointer$ la a0, __jvt_base$ csrw jvt, a0 .option pop la a0, Default_Handler ori a0, a0, 3 csrw mtvec, a0 la a0, __Vectors csrw mtvt, a0 la sp, g_top_irqstack csrw mscratch, sp #ifdef CONFIG_KERNEL_NONE la sp, g_top_mainstack #endif #ifndef __NO_SYSTEM_INIT jal SystemInit #endif jal rtthread_startup .size Reset_Handler, . - Reset_Handler __exit: j __exit .section .stack, "aw", @nobits .align 3 .global g_base_irqstack .global g_top_irqstack g_base_irqstack: .space CONFIG_ARCH_INTERRUPTSTACK g_top_irqstack: #ifdef CONFIG_KERNEL_NONE .align 3 .global g_base_mainstack .global g_top_mainstack g_base_mainstack: .space CONFIG_ARCH_MAINSTACK g_top_mainstack: #endif .section .data .weak __jvt_base$ .long 0