[an error occurred while processing this directive]
|
Действительно, когда происходило прерывание, то в программный счетчик (PC)
грузился вектор не из той таблицы, которая определена битами VMAP=1 и
ENPIE=1 (ENPIE - это 0-бит в регистре PIECTRL(0х0000CE0)), а из таблицы,
которая соответствует комбинации битов VMAP=1 ENPIE=0.
И вообще, как выяснилось, от состояния бита ENPIE положение таблицы векторов
не зависит, а вектор в любом случае берется из таблицы по адресу
0x3FFFC0−0x3FFFFF (т.е. VMAP=1 ENPIE=0).
Как все это победить? Можно конечно продублировать таблицу векторов в обоих
адресных пространствах, но это как-то криво.
Надеюсь что это БАГ только симулятора, а в реальном процессоре все нормально.
E-mail: info@telesys.ru