[英]Qemu restarts if I add a while loop in my kernel
我寫了一個當鍵盤 controller 未准備好時掛起的 while 循環:
while(inb(0x64)!=0){
}
但是現在每次我嘗試啟動 kernel 時 qemu 都會重新啟動。 有時我可以在很短的時間內看到 vga output。 我試圖刪除 inb,它仍然會重新啟動,除非我刪除它
編輯:
這是完整的代碼:
int *resolution_ptr;
void init_vbe(){
regs16_t vberegister;
vberegister.bx=0x4107;
vberegister.ax=0x4f02;
int32(0x10,&vberegister);
*resolution_ptr=1280;
}
void kernel_main(void)
{
resolution_ptr=(int*)0x2ff0; /*define the address of the resolution, so that the printstring function can draw the letter correctly*/
init_vbe ();
printstring("Kernel sucessfully loaded.");
while(inb(0x64)!=0){ /*code that cause qemu to restart*/
}
}
當我嘗試在其中運行 kernel 時,bochs 引發了此錯誤:
00096454180e[CPU0 ] exception(): 3rd (13) exception with no resolution, shutdown status is 00h, resetting
INT32 也來自這里: https://gist.github.com/carlosascari/35dba95ee3118ebf61f4bd1625f4fa11
現在可以通過刪除 int32 中的 sti 來工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.