HalpPciAccessMmConfigSpace

INT8 __fastcall HalpPciAccessMmConfigSpace(
        INT64 SegmentNumber,
        UINT64 BusNumber,
        PCI_SLOT_NUMBER Slot,
        UINT8 *r9_0,
        UINT64 Offset,
        UINT64 Length,
        PCI_ACCESS_TYPE AccessType){
  UINT8 v8; 
  INT16 v9; 
  UINT8 v10; 
  INT64 v11; 
  INT64 v12; 
  __int64(__fastcall **v13)(); 
  int v15[8]; 
  INT64 v16; 

  v8 = BusNumber;
  v9 = SegmentNumber;
  if( (unsigned int)(Offset + Length) > 0x1000 )
    return 0;
  if( HalpPciCheckAmdK8(SegmentNumber, BusNumber, Slot.u.bits._bf_0) )
    return 0;
  LODWORD(v11) = HalpPciGetMmConfigPhysicalAddress(v9, v8, v10);
  if( !v11 )
    return 0;
  v12 = HalpPciMapMmConfigPhysicalAddress(v11);
  v13 = &HalpPciMmConfigReadHandlers;
  LODWORD(v16) = Length;
  if( AccessType )
    v13 = (__int64(__fastcall **)())&HalpPciMmConfigWriteHandlers;
  HalpPCIPerformConfigAccess((INT64)v13, v12, (INT64)r9_0, (unsigned int)Offset, v16);
  _InterlockedOr(v15, 0);
  return 1;
}

Referenced by:

HalpPCIConfig