Modularize PIC-rust stuff

This commit is contained in:
greg
2015-11-18 22:06:01 -08:00
parent eaefb7b799
commit 9f3c1f8f29

View File

@@ -16,19 +16,35 @@ extern {
#[no_mangle] #[no_mangle]
pub extern fn rust_setup_PIC() { pub extern fn rust_setup_PIC() {
PIC::setup_PIC();
}
let interrupt_mask1: u8 = 0xfc; mod PIC {
let interrupt_mask2: u8 = 0xff; use x86_asm::out;
unsafe { const PIC1_COMMAND: u16 = 0x20;
out(0x21, interrupt_mask1); const PIC2_COMMAND: u16 = 0xa0;
out(0xa1, interrupt_mask2); const PIC1_DATA: u16 = 0x21;
asm!("sti"); const PIC2_DATA: u16 = 0xa1;
pub fn setup_PIC() {
let interrupt_mask1: u8 = 0xfc;
let interrupt_mask2: u8 = 0xff;
unsafe {
out(PIC1_DATA, interrupt_mask1);
out(PIC2_DATA, interrupt_mask2);
asm!("sti");
}
} }
} }
unsafe fn out(port: u16, value: u8) { mod x86_asm {
asm!("outb %%dx, %%al" : : "dx" (port), "al"(value));
pub unsafe fn out(port: u16, value: u8) {
asm!("outb %%dx, %%al" : : "dx" (port), "al"(value));
}
} }
#[no_mangle] #[no_mangle]