1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
uint16_t
//if (ioperm(MY_BASEPORT, 3, 1)) {
// /* handle error */
//}
//
//if (ioperm(MY_BASEPORT, 3, 0)) {
// /* handle error */
//}
//
//un pci_config_read(bus: u8, device: u8, func: u8, offset: u8) -> u32 {
// let bus = bus as u32;
// let device = device as u32;
// let func = func as u32;
// let offset = offset as u32;
// // construct address param
// let address = ((bus << 16) | (device << 11) | (func << 8) | (offset & 0xfc) | 0x80000000) as u32;
//
//if (ioperm(MY_BASEPORT, 3, 1)) {
// /* handle error */
//}
//
//if (ioperm(MY_BASEPORT, 3, 0)) {
// /* handle error */
//}
// // write address
// write_to_port(0xCF8, address);
//
// // read data
// read_from_port(0xCFC)
//}
//
//#[allow(dead_code)]
//unsafe fn pci_config_write(bus: u8, device: u8, func: u8, offset: u8, value: u32) {
// let bus = bus as u32;
// let device = device as u32;
// let func = func as u32;
// let offset = offset as u32;
// // construct address param
// let address = ((bus << 16) | (device << 11) | (func << 8) | (offset & 0xfc) | 0x80000000) as u32;
//
// // write address
// write_to_port(0xCF8, address);
//
// // write data
// write_to_port(0xCFC, value)
//}