Возможно, это потому, что таблица векторов прерываний на самом деле является инструкцией ARM, и для ее обработки требуется быть в режиме ARM. Это сокращает работу программистов, поскольку вам не нужно писать два обработчика, один для режима охраны и один для режима большого пальца. Откуда вы знаете, что для исключения есть одна точка входа, и у вас может быть только один тип инструкции для ее обработки. Разумеется, вы можете переключиться в режим большого пальца после ввода, не отличаясь от переключения в режим большого пальца после исключения сброса.
Cortex-m3 переопределил таблицу векторов прерываний, чтобы она была более традиционной (адрес вместо инструкции). По необходимости, я бы предположил, что cortex-m3 является процессором только для большого пальца (2), поэтому либо они переопределяют векторную таблицу для хранения инструкций большого пальца, либо они переопределяют таблицу с адресами, либо у них достаточно ядра ядра обработать загрузку или переход, которые вы обычно видите в записи таблицы векторов.
Как правило, вам потребуется либо две записи для исключения, одна для обработчика, основанного на руке, и одна для обработчика, основанного на большом пальце, или вам потребуется, чтобы пользователь написал свой обработчик с точкой входа, которая определенно относится к одному режиму.
Даже с точкой входа в один режим в обработчике вы все равно должны знать о режиме, в котором находился процессор, когда произошло исключение, чтобы знать, к какому адресу возвращаться и как проверять указанную инструкцию, которая вызвала исключение .