Нет, вы не совсем верно понимаете. где swi_function судя по всему должен быть сам обработчик а в int a или int b передоваемый параметр (0x23) для идентификации прерывания.
Неверно. Если вы в вашем коде напишите swi_function(param1, param2), то компилятор вставит примерно такой код:
LDR R0, param1
LDR R1, param1
SWI 0x23
На векторе SWI то ли компилятор, то ли вы сами должны разместить код, корорый по сохраненному в LR_svc адресу находит инструкцию SWI, извлекает из ее опкода число 0x23, далее по этому номеру находит вашу функцию swi_function и передает ей управление.
Я думал использовать эту возможность, инструкцию swi в коде получил, поскольку обработчик у меня был только один, ветвление не делал - вешал обработчик сразу на вектор исключения (и поэтому про ветвление пересказываю сейчас доку по памяти).
Потом понял что мне нужно совсем другое и глубже не копал.