Если честно - я тоже его дрюкаю :-) Просто потому, что так делается
в китайских примерах. А еще я для запрета/разрешения прерываний пользую CSRW (запись) а не CSRS/CSRC (чтение/модификация/запись).
Только - при пользовании CSRW надо не забывать правильно заполнять остальные поля MSTATUS - MPP, MPOP, MPPOP. В типовом проекте эти поля константные, так что проблем нет.
В MPP записываем рабочий уровень привилегий (у меня Machine mode), а в MPOP и MPOP записываем состояние HPE (Hardware prologue/epilogue).
Рабочий способ, проверено на корках V3A, V4A, V4C