Около 72 часов убил на поиск баги, чтобы попасть в меню BIOS'а. Оказалось, что в некоторых случаях срабатывает прерывание в то время как инструкция находится в branch delay слоте, я этот вариант никак не обрабатывал и program counter восстанавливался неверно. Осталось разобраться как VRAM to CPU copy реализовать нормально, пока сделал через glReadPixels, что не будет работать, если уменьшу окно :)