Interrupt handling!

This commit is contained in:
Jeremy Soller 2016-08-13 19:08:40 -06:00
parent dea137be73
commit 799b77d11a

View file

@ -7,13 +7,13 @@ use super::idt::{IDTR, IDT};
#[naked] #[naked]
#[no_mangle] #[no_mangle]
pub unsafe extern fn kmain() { pub unsafe extern "C" fn kmain() {
asm!("xchg bx, bx" : : : : "intel", "volatile"); asm!("xchg bx, bx" : : : : "intel", "volatile");
for entry in IDT.iter_mut() { for entry in IDT.iter_mut() {
entry.attribute = 1 << 7 | 0xE; entry.attribute = 1 << 7 | 0xE;
entry.selector = 8; entry.selector = 8;
entry.set_offset(&blank as *const _ as usize); entry.set_offset(blank as usize);
entry.zero = 0; entry.zero = 0;
entry.zero2 = 0; entry.zero2 = 0;
} }
@ -30,7 +30,7 @@ pub unsafe extern fn kmain() {
} }
#[naked] #[naked]
pub unsafe extern fn blank() { pub unsafe extern "C" fn blank() {
asm!("xchg bx, bx" : : : : "intel", "volatile"); asm!("xchg bx, bx" : : : : "intel", "volatile");
asm!("iretq" : : : : "intel", "volatile"); asm!("iretq" : : : : "intel", "volatile");
} }