Как процессор RISC-V определяет режимы при обработке исключений? - PullRequest
2 голосов
/ 10 октября 2019

Я прочитал руководство с привилегиями riscv и знаю, что если произойдет прерывание или исключение, текущий режим будет сохранен в xPP (x может быть, M или S).

Но мне было трудно понять этибиты xpp в xstatus. xPP записывает предыдущий режим, но где хранится режим текущий ?

Кроме того, я думаю, что это руководство краткое, но в нем отсутствуют примеры. https://riscv.org/specifications/privileged-isa/

Есть ли рекомендуемые дополнительные учебные пособия для изучения?

1 Ответ

0 голосов
/ 30 октября 2019

Я думаю, это будет зависеть от вашей конкретной реализации risc-v. Например, я работаю над RI5CY и, как вы можете видеть в riscv_defines.sv, держатель текущего режима определяется как:

// Privileged mode
typedef enum logic[1:0] {
PRIV_LVL_M = 2'b11,
PRIV_LVL_H = 2'b10,
PRIV_LVL_S = 2'b01,
PRIV_LVL_U = 2'b00
} PrivLvl_t;

И создается в riscv_core.sv

PrivLvl_t    current_priv_lvl;

К сожалению, я не знаю о дальнейшей документации от фонда. Надеюсь, это поможет

...