Files
gk-sdk/source/bootloader/u-boot-2020.01/lotus/machine/xmorca/compressed/exceptions.S
T

114 lines
2.1 KiB
ArmAsm
Executable File

/* SPDX-License-Identifier: GPL-2.0 */
/* exception handlers */
#include <config.h>
.align 2
_irq_stack_start:
.word CONFIG_SYS_INIT_SP_ADDR
.align 2
.global irq_undefined_instruction
.type irq_undefined_instruction, %function
irq_undefined_instruction:
ldr sp, _irq_stack_start
mov r10, lr
add r0, pc, #20
bl uart_early_puts
mov r0, r10
bl uart_early_put_hex
mov r0, #2000
bl udelay
bl reset_cpu
.ascii "\r\n*** irq: undefined instruction\r\nLR: \0"
.align 2
.global irq_software_interrupt
.type irq_software_interrupt, %function
irq_software_interrupt:
ldr sp, _irq_stack_start
mov r10, lr
add r0, pc, #20
bl uart_early_puts
mov r0, r10
bl uart_early_put_hex
mov r0, #2000
bl udelay
bl reset_cpu
.ascii "\r\n*** irq: software interrupt\r\nLR: \0"
.align 2
.global irq_prefetch_abort
.type irq_prefetch_abort, %function
irq_prefetch_abort:
ldr sp, _irq_stack_start
mov r10, lr
add r0, pc, #20
bl uart_early_puts
mov r0, r10
bl uart_early_put_hex
mov r0, #2000
bl udelay
bl reset_cpu
.ascii "\r\n*** irq: prefetch abort\r\nLR: \0"
.align 2
.global irq_data_abort
.type irq_data_abort, %function
irq_data_abort:
ldr sp, _irq_stack_start
mov r10, lr
add r0, pc, #20
bl uart_early_puts
mov r0, r10
bl uart_early_put_hex
mov r0, #2000
bl udelay
bl reset_cpu
.ascii "\r\n*** irq: data abort\r\nLR: \0"
.align 2
.global irq_not_used
.type irq_not_used, %function
irq_not_used:
ldr sp, _irq_stack_start
mov r10, lr
add r0, pc, #20
bl uart_early_puts
mov r0, r10
bl uart_early_put_hex
mov r0, #2000
bl udelay
bl reset_cpu
.ascii "\r\n*** irq: not used\r\nLR: \0"
.align 2
.global irq_irq
.type irq_irq, %function
irq_irq:
ldr sp, _irq_stack_start
mov r10, lr
add r0, pc, #20
bl uart_early_puts
mov r0, r10
bl uart_early_put_hex
mov r0, #2000
bl udelay
bl reset_cpu
.ascii "\r\n*** irq: interrupt\r\nLR: \0"
.align 2
.global irq_firq
.type irq_firq, %function
irq_firq:
ldr sp, _irq_stack_start
mov r10, lr
add r0, pc, #20
bl uart_early_puts
mov r0, r10
bl uart_early_put_hex
mov r0, #2000
bl udelay
bl reset_cpu
.ascii "\r\n*** irq: fast interrupt\r\nLR: \0"