Когда вызывается прерывание моего обработчика сбоя страницы (предполагается, что оно зависает в системе), в стек перед его вызовом помещаются некоторые переменные. У меня включена виртуальная память, и когда я устанавливаю недопустимый указатель стека (esp) и вызывается обработчик int14, это немедленно вызывает еще одну ошибку страницы и так далее и тому подобное. Как мне разрешить эту ситуацию?
Мой код int14:
isr14:
; interrupt handler for isr14
jmp $
iretd
Код, из-за которого он ломается:
mov esp, 0x1000 ; 0x1000 is not mapped in the VM directory
push dword 'A'
jmp $
Раздел моей таблицы IDT:
irq14:
dw isr14
dw 0x0008
db 0x00
db 10101110b
dw 0x0000
irq15:
........