// Bus Number, Device Number and Function Number to PCI Device Address
#define PciBusDevFunc(Bus, Dev, Func) ((Bus&0xFF)<<8) | ((Dev&0x1F)<<3) | (Func&7)
// PCI Device Address to Bus Number
#define PciGetBus(address) ((address>>8) & 0xFF)
// PCI Device Address to Device Number
#define PciGetDev(address) ((address>>3) & 0x1F)
// PCI Device Address to Function Number
#define PciGetFunc(address) (address&7)
// Bus Number, Device Number and Function Number to PCI Device Address
public uint PciBusDevFunc(uint bus, uint dev, uint func)
{
return ((bus&0xFF)<<8) | ((dev&0x1F)<<3) | (func&7);
}
// PCI Device Address to Bus Number
public uint PciGetBus(uint address)
{
return ((address>>8) & 0xFF);
}
// PCI Device Address to Device Number
public uint PciGetDev(uint address)
{
return ((address>>3) & 0x1F);
}
// PCI Device Address to Function Number
public uint PciGetFunc(uint address)
{
return (address&7);
}
| bit | 説明 |
|---|---|
0- 2 |
ファンクション番号 |
3- 7 |
デバイス番号 |
8-15 |
PCI バス番号 |
16-31 |
未使用 |