Напишите несколько тестов на ассемблере.Первый, который должен работать в бесконечном цикле, должен установить все свои регистры на известные значения, затем проверить, что регистры имеют эти значения.Например:
top:
cmp rax_v(%rip), %rax
jne rax_error
cmp rbx_v(%rip), %rbx
jne rbx_error
....
jmp top
выполнение этого с низким приоритетом должно дать вам довольно хорошее покрытие, что обработчики прерываний и прерывания -> контекстный переключатель сохраняет и восстанавливает регистры должным образом.Не забудьте использовать большое количество значений в регистрах, чтобы минимизировать ложные совпадения.
Следуя этой схеме, создайте такую, которая вызывает системные вызовы.Конечно, он не может проверить все регистры, поскольку системный вызов может использовать ABI , но он может проверить и другие.Кроме того, если вы хотите, чтобы ваша система гарантировала утечку регистра, вы можете проверить это здесь.
Запустите набор процессов, возможно, несколько из них как потоки.
Далее,Вы захотите увеличить нагрузку прерывания, с целью достижения максимально возможной вложенности прерывания.Если у вас есть реальные последовательные порты, они могут быть их отличным источником - подключите источник шума (генератор функций или антенны) к выводу Carrier Detect UART и включите прерывания состояния модема.Большинство уартов не управляют этими выводами состояния на бодовых часах, поэтому вы можете получить максимальный шторм прерывания.Попробуйте установить уартс на самый низкий приоритет прерывания.
Удачи, впереди у вас будет много веселья!