1 static void outb(unsigned char value, unsigned short port)
3 __builtin_outb(value, port);
6 static void outw(unsigned short value, unsigned short port)
8 __builtin_outw(value, port);
11 static void outl(unsigned int value, unsigned short port)
13 __builtin_outl(value, port);
17 static unsigned char inb(unsigned short port)
19 return __builtin_inb(port);
23 static unsigned char inw(unsigned short port)
25 return __builtin_inw(port);
28 static unsigned char inl(unsigned short port)
30 return __builtin_inl(port);
38 typedef __builtin_msr_t msr_t;
40 static msr_t rdmsr(unsigned long index)
42 return __builtin_rdmsr(index);
45 static void wrmsr(unsigned long index, msr_t msr)
47 __builtin_wrmsr(index, msr.lo, msr.hi);
50 #define PCI_ADDR(BUS, DEV, FN, WHERE) ( \
51 (((BUS) & 0xFF) << 16) | \
52 (((DEV) & 0x1f) << 11) | \
53 (((FN) & 0x07) << 8) | \
56 static unsigned char pci_read_config8(unsigned addr)
58 outl(0x80000000 | (addr & ~3), 0xCF8);
59 return inb(0xCFC + (addr & 3));
62 static unsigned short pci_read_config16(unsigned addr)
64 outl(0x80000000 | (addr & ~3), 0xCF8);
65 return inw(0xCFC + (addr & 2));
68 static unsigned int pci_read_config32(unsigned addr)
70 outl(0x80000000 | (addr & ~3), 0xCF8);
74 static void pci_write_config8(unsigned addr, unsigned char value)
76 outl(0x80000000 | (addr & ~3), 0xCF8);
77 outb(value, 0xCFC + (addr & 3));
80 static void pci_write_config16(unsigned addr, unsigned short value)
82 outl(0x80000000 | (addr & ~3), 0xCF8);
83 outw(value, 0xCFC + (addr & 2));
86 static void pci_write_config32(unsigned addr, unsigned int value)
88 outl(0x80000000 | (addr & ~3), 0xCF8);