Add and use hlt_loop function

This commit is contained in:
Philipp Oppermann
2019-01-25 14:16:29 +01:00
parent 599a643d97
commit c2e4e8c96f
3 changed files with 10 additions and 4 deletions

View File

@@ -3,7 +3,7 @@
// for a Windows system.
#![cfg(not(windows))]
use crate::{gdt, print, println};
use crate::{gdt, hlt_loop, print, println};
use lazy_static::lazy_static;
use pic8259_simple::ChainedPics;
use spin;
@@ -45,7 +45,7 @@ extern "x86-interrupt" fn double_fault_handler(
_error_code: u64,
) {
println!("EXCEPTION: DOUBLE FAULT\n{:#?}", stack_frame);
loop {}
hlt_loop();
}
extern "x86-interrupt" fn timer_interrupt_handler(_stack_frame: &mut ExceptionStackFrame) {

View File

@@ -12,3 +12,9 @@ pub unsafe fn exit_qemu() {
let mut port = Port::<u32>::new(0xf4);
port.write(0);
}
pub fn hlt_loop() -> ! {
loop {
x86_64::instructions::hlt();
}
}

View File

@@ -18,7 +18,7 @@ pub extern "C" fn _start() -> ! {
x86_64::instructions::interrupts::enable();
println!("It did not crash!");
loop {}
blog_os::hlt_loop();
}
/// This function is called on panic.
@@ -26,5 +26,5 @@ pub extern "C" fn _start() -> ! {
#[panic_handler]
fn panic(info: &PanicInfo) -> ! {
println!("{}", info);
loop {}
blog_os::hlt_loop();
}