Perhaps this is because the interrupt vector table is indeed an ARM instruction, and it needs to be in ARM mode to process it. This reduces the work of programmers, since you do not need to write two handlers, one for hand mode and one for thumb mode. How would you even know that there is one entry point for an exception, and you can only have one type of instruction to handle it. You can switch to thumb mode after entering a value other than switching to thumb mode after a reset exception.
Cortex-m3 redefined the interrupt vector table as more traditional (address instead of instruction). If necessary, I would suggest that cortex-m3 is just a processor with a thumb (2), so either they redefine the vector table to store finger points, or redefine the table with addresses, or they have enough kernel to handle loading or transition that you usually see in a vector table entry.
Basically, you will need either two entries for exclusion, one for the handler-based handler and one for the thumb-based handler, or you need the user to write their own handler with an entry point, which is one of the modes.
Even with the entry point to one mode in the handler, you still need to know about the mode the processor was in when the exception occurred, in order to find out which address to return to and how to check the corresponding instruction that caused the exception.
source share