Exception vectors: Rearrange to use absolute offets instead of .align hacks

This commit is contained in:
Angus Gratton 2015-09-10 21:35:18 +10:00
parent a5a179beef
commit 45d4e0da2d

View file

@ -12,7 +12,7 @@
Part of esp-open-rtos
Original vector contents Copyright (C) 2014-2015 Espressif Systems
Additions Copyright (C) Superhouse Automation Pty Ltd
Additions Copyright (C) Superhouse Automation Pty Ltd and Angus Gratton
BSD Licensed as described in the file LICENSE
*/
@ -23,9 +23,9 @@
.text
.section .vecbase.text, "x"
.align 256
.global VecBase
.type VecBase, @function /* it's not really a function, but treat it like one */
.org 0
VecBase:
/* IMPORTANT: exception vector literals will go here, but we
can't have more than 4 otherwise we push DebugExceptionVector past
@ -33,40 +33,43 @@ VecBase:
and also keep the VecBase offsets easy to read, but this works for now.
*/
.literal_position
.align 16
.org 0x10
DebugExceptionVector:
wsr.excsave2 a0
call0 sdk_user_fatal_exception_handler
rfi 2
.align 16
.org 0x20
NMIExceptionVector:
wsr.excsave3 a0
call0 CallNMIExceptionHandler
rfi 3 /* CallNMIExceptionHandler should call rfi itself */
.align 16
.org 0x30
KernelExceptionVector:
break 1, 0
call0 sdk_user_fatal_exception_handler
rfe
.align 16
.L_EmptyVectorEntry:
nop
.align 16
.org 0x50
UserExceptionVector:
wsr.excsave1 a0
rsr.exccause a0
beqi a0, CAUSE_SYSCALL, UserSyscallHandler
beqi a0, CAUSE_LOADSTORE, UserExceptionLoadStoreHandler
j UserExceptionHandler
/* Empty exception slot goes here, but previous slot is large enough we can skip it */
.align 16
.org 0x70
DoubleExceptionVector:
break 1, 4
j DoubleExceptionHandler
.align 16
.L_UnusedResetVector:
/* reset vector slot doesn't get used, as vecbase goes back to mask ROM on reset */
nop
rsr.exccause a0
beqi a0, CAUSE_LOADSTORE, DoubleExceptionLoadStoreHandler
call0 sdk_user_fatal_exception_handler
/* Reset vector would go here at offset 0x80 but should be unused,
as vecbase goes back to mask ROM vectors on reset */
/***** end of exception vectors *****/
.section .bss
NMIHandlerStack: /* stack space for NMI handler */
@ -242,15 +245,6 @@ UserSyscallHandler:
rsr.excsave1 a0
rfe
.text
.section .vecbase.text
.literal_position
.align 4
DoubleExceptionHandler:
rsr.exccause a0
beqi a0, CAUSE_LOADSTORE, DoubleExceptionLoadStoreHandler
call0 sdk_user_fatal_exception_handler
.text
.section .vecbase.text
.literal_position