27 lines
542 B
Rust
27 lines
542 B
Rust
use core::arch::asm;
|
|
|
|
pub unsafe fn outb(port: u16, value: u8) {
|
|
asm!("out dx, al", in("dx") port, in("al") value, options(nostack, preserves_flags));
|
|
}
|
|
|
|
pub unsafe fn inb(port: u16) -> u8 {
|
|
let result: u8;
|
|
asm!("inb %dx, %al", in("dx") port, out("al") result, options(nostack, preserves_flags, att_syntax));
|
|
result
|
|
}
|
|
|
|
pub unsafe fn nop() {
|
|
asm!("nop", options(nostack, preserves_flags));
|
|
}
|
|
|
|
pub unsafe fn io_wait() {
|
|
outb(0x80, 0);
|
|
}
|
|
|
|
pub unsafe fn sti() {
|
|
asm!("sti");
|
|
}
|
|
|
|
pub unsafe fn cli() {
|
|
asm!("cli");
|
|
} |