UINT32 RefCount;\r
CM_ARM_PCI_ADDRESS_MAP_INFO *AddrMapInfo;\r
AML_OBJECT_NODE_HANDLE CrsNode;\r
+ BOOLEAN IsPosDecode;\r
\r
ASSERT (Generator != NULL);\r
ASSERT (CfgMgrProtocol != NULL);\r
}\r
\r
Translation = (AddrMapInfo->CpuAddress != AddrMapInfo->PciAddress);\r
+ if (AddrMapInfo->CpuAddress >= AddrMapInfo->PciAddress) {\r
+ IsPosDecode = TRUE;\r
+ } else {\r
+ IsPosDecode = FALSE;\r
+ }\r
\r
switch (AddrMapInfo->SpaceCode) {\r
case PCI_SS_IO:\r
FALSE,\r
TRUE,\r
TRUE,\r
- TRUE,\r
+ IsPosDecode,\r
3,\r
0,\r
AddrMapInfo->PciAddress,\r
AddrMapInfo->PciAddress + AddrMapInfo->AddressSize - 1,\r
- Translation ? AddrMapInfo->CpuAddress : 0,\r
+ Translation ? AddrMapInfo->CpuAddress - AddrMapInfo->PciAddress : 0,\r
AddrMapInfo->AddressSize,\r
0,\r
NULL,\r
case PCI_SS_M32:\r
Status = AmlCodeGenRdDWordMemory (\r
FALSE,\r
- TRUE,\r
+ IsPosDecode,\r
TRUE,\r
TRUE,\r
TRUE,\r
0,\r
AddrMapInfo->PciAddress,\r
AddrMapInfo->PciAddress + AddrMapInfo->AddressSize - 1,\r
- Translation ? AddrMapInfo->CpuAddress : 0,\r
+ Translation ? AddrMapInfo->CpuAddress - AddrMapInfo->PciAddress : 0,\r
AddrMapInfo->AddressSize,\r
0,\r
NULL,\r
case PCI_SS_M64:\r
Status = AmlCodeGenRdQWordMemory (\r
FALSE,\r
- TRUE,\r
+ IsPosDecode,\r
TRUE,\r
TRUE,\r
TRUE,\r
0,\r
AddrMapInfo->PciAddress,\r
AddrMapInfo->PciAddress + AddrMapInfo->AddressSize - 1,\r
- Translation ? AddrMapInfo->CpuAddress : 0,\r
+ Translation ? AddrMapInfo->CpuAddress - AddrMapInfo->PciAddress : 0,\r
AddrMapInfo->AddressSize,\r
0,\r
NULL,\r