Я программирую систему SPARC v8 (32-битную), и мне нужно проверить реакцию на аппаратные ловушки.
SPARC предоставляет 256 ловушек, каждая из которых отличается типом ловушки, tt, из которых первые 128 являются аппаратными ловушками, а типы ловушек со 128 по 255 являются программными ловушками. . В документах набора инструкций SPARC говорится, что выполнение
ta N ; trap always, n = 0..127
вызывает ловушку типа tt=N+128. Ловушка вызывает переход на базовый адрес ловушки + tt * 16.
Есть ли способ программно вызвать аппаратную ловушку без написания кода, демонстрирующего каждое из условий аппаратной ловушки, таких как потеря значимости окна, невыровненный доступ и т. д.?
Я подумываю об установке программных обработчиков ловушек, которые просто переходят к обработчику ловушек (N-128) и держат пальцы скрещенными. Мне не нравится эта идея, потому что ловушки HW могут вызвать изменение состояния другого процессора, чего ловушка SW не изменила бы...