rustubs/arch/x86_64/
io_port.rs1use super::misc::delay;
2use core::arch::asm;
3
4#[inline(always)]
5pub fn inw(p: u16) -> u16 {
6 let result: u16;
7 unsafe {
8 asm!("in ax, dx",
9 in("dx") p,
10 out("ax") result
11 )
12 }
13 delay();
14 result
15}
16
17#[inline(always)]
18pub fn inb(p: u16) -> u8 {
19 let result: u8;
20 unsafe {
21 asm!("in al, dx",
22 in("dx") p,
23 out("al") result
24 )
25 }
26 delay();
27 result
28}
29
30#[inline(always)]
31pub fn outb(p: u16, val: u8) {
32 unsafe {
33 asm!("out dx, al",
34 in("dx") p,
35 in("al") val,
36 )
37 }
38 delay();
39}
40
41#[inline(always)]
42pub fn outw(p: u16, val: u16) {
43 unsafe {
44 asm!("out dx, ax",
45 in("dx") p,
46 in("ax") val,
47 )
48 }
49 delay();
50}