Ну так все порты FreeRTOS на RISC-V (да и на прочие схожие по
возможностям контроллера прерываний чипы/архитектуры), используют
для переключения контекста прерывание. Контекст прерывания (содержимое набора регистров, значение указателя стека) перед
возвратом из прерывания, заменяется на контекст задачи ОС (то же самое, плюс некоторые регистры, которые могут не
сохранятся при обычном прерывании). И HPE этому препятствует,
восстанавливая контекст прерывания аппаратно, принудительно при выходе из прерывания.
Планировщик - он запускается как обычный код на Си, который решает, какая задача достойна процессорного времени больше всего. И если переключение требуется, после вызова планировщика, на основе его запроса, вызывается прерывание переключателя контекста.
Переключатель контекста выполняет решение планировщика (переключать или ещё не переключать и если переключать, то на какую задачу) внутри прерывания. Переключение контекста внутри прерывания нужно для вытеснения задач. Смена текущей задачи - адреса следующей исполняемой инструкции и всего набора регистров, выполняется внутри прерывания и в самом конце, возврат из прерывания mret, выполняется уже на инструкцию кода новой задачи.
Так вот, аппаратное сохранение контекста прерывания, точнее, аппаратное восстановление по выходу из прерывания, будет ломать содержимое регистров контекста задачи ОС, которое заботливо подготовил переключатель контекста по заданию планировщика внутри прерывания.