From ff838b7e1a789719e49dd12e082733dd62095ed1 Mon Sep 17 00:00:00 2001 From: mrgian Date: Wed, 29 Mar 2023 14:34:11 +0200 Subject: [PATCH] Fix isr return --- kernel/src/idt.rs | 4 ++-- kernel/src/main.rs | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/kernel/src/idt.rs b/kernel/src/idt.rs index bacfd4d..041ee32 100644 --- a/kernel/src/idt.rs +++ b/kernel/src/idt.rs @@ -129,14 +129,14 @@ pub extern "C" fn exception_handler(int: u32) { #[naked] pub extern "C" fn div_error() { unsafe { - asm!("iret", options(noreturn)); + asm!("push 0x00", "call exception_handler","add esp, 4","iretd", options(noreturn)); } } #[naked] pub extern "C" fn invalid_opcode() { unsafe { - asm!("push 0x06", "call exception_handler", "iret", options(noreturn)); + asm!("push 0x06", "call exception_handler", "add esp, 4","iretd", options(noreturn)); } } diff --git a/kernel/src/main.rs b/kernel/src/main.rs index dd02354..c3a6b53 100644 --- a/kernel/src/main.rs +++ b/kernel/src/main.rs @@ -46,14 +46,14 @@ pub extern "C" fn _start() -> ! { IDT.load(); //generates invalid opcode exception - /*unsafe { - asm!("ud2"); - }*/ + unsafe { + asm!("int 0x0"); + } //generates division error exception - unsafe { + /*unsafe { asm!("div bl", in("al") 0x00 as u8, in("bl") 0x00 as u8); - } + }*/ println!("Not crashed!");