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