В CH32V303, как и в большинстве ему подобных контроллеров, реализовано только два уровня: M-mode, на котором он стартует и обрабатывает прерывания, и U-mode, на котором крутится обычный код.
Прерывание ведь могло возникнуть не только на U-mode, но и на M-mode, и на любом другом.
Биты 0 — 2 это как раз права доступа, обычные rwx , как и в десктопных системах.
Можно проверить, как он работает при доступе к обычной ОЗУ и как к области пустоты, не принадлежащей никакой реальной памяти.
Примерно так же, хотя и гораздо сложнее, делается и в десктопных системах: область кода можно читать и выполнять, а область памяти выполнять нельзя, зато можно писать.