Я работал над кодом для проверки скорости APIC с помощью PIT. Есть несколько проблем, которые я не могу понять. Во-первых, при тестировании ISR для двух таймеров я получаю общие ошибки защиты в инструкциях iretq. Во-вторых, ни один из таймеров фактически не запускает никаких прерываний. Любая помощь в этом будет высоко оценена.
#GP на некоторых ISR, APIC и PIT не отправляют IRQ
Ответы (1)
Общие сбои защиты были вызваны наличием недопустимого регистра CS из-за того, что регистр CS не перезагружался после загрузки GDT. Этого нет в коде, на который я ссылался вообще.
person
Jenifer De Jager
schedule
21.02.2019
pop rdx
pop rax
mov rax, ckpoint
call print
iretq
. Кажется, вы восстанавливаете RAX и RDX, но затем вы забиваете RAX с помощьюckpoint
, а затем вызываетеprintf
. Похоже, вы как минимум выкинули RAX, не зная, чтоprintf
выбрасывает, прежде чем вернуться сiretq
. Это то, что вы намеревались? - person Michael Petch   schedule 19.02.2019