diff options
Diffstat (limited to 'src/usr/targeting/common')
-rwxr-xr-x | src/usr/targeting/common/processMrw.pl | 32 | ||||
-rw-r--r-- | src/usr/targeting/common/xmltohb/target_types.xml | 9 |
2 files changed, 41 insertions, 0 deletions
diff --git a/src/usr/targeting/common/processMrw.pl b/src/usr/targeting/common/processMrw.pl index fc8c74b18..f0aaf4518 100755 --- a/src/usr/targeting/common/processMrw.pl +++ b/src/usr/targeting/common/processMrw.pl @@ -1764,6 +1764,38 @@ sub processOmi my $num = $fapi_pos % $numberOfOmiPerProc; $value = "physical:sys-0/node-0/proc-$proc_num/" . $omi_map{$num}; $targetObj->setAttribute($target, "OMIC_PARENT", $value); + + my $omi = Math::BigInt->new($targetObj->getAttribute($target,"FAPI_POS")); + # Base omi bar offset + # We use this base address in simics_AXONE.system.xml and want our + # addresses to match the ones in that xml + my $base = 0x30400000000; + my $gigabyte = 0x40000000; + my $value = 0; + + # This algorithm is explained in src/usr/mmio/mmio.C + if ($omi % 2 eq 0) + { + $value = $base + $omi * 4 * $gigabyte; + } + else + { + $value = $base + (($omi - 1) * 4 + 2) * $gigabyte; + } + + $value = sprintf("0x%016s", substr(($value)->as_hex(),2)); + $targetObj->setAttribute($target, "OMI_INBAND_BAR_BASE_ADDR_OFFSET", + $value); + + # Set the parent MC BAR value to value of first OMI unit + if ($omi % 8 eq 0) + { + my $parent_mcc = $targetObj->getTargetParent($target); + my $parent_mi = $targetObj->getTargetParent($parent_mcc); + my $parent_mc = $targetObj->getTargetParent($parent_mi); + $targetObj->setAttribute($parent_mc, "OMI_INBAND_BAR_BASE_ADDR_OFFSET", + $value); + } } #-------------------------------------------------- diff --git a/src/usr/targeting/common/xmltohb/target_types.xml b/src/usr/targeting/common/xmltohb/target_types.xml index 99519fd94..97927aecc 100644 --- a/src/usr/targeting/common/xmltohb/target_types.xml +++ b/src/usr/targeting/common/xmltohb/target_types.xml @@ -2636,6 +2636,9 @@ <id>MODEL</id> <default>AXONE</default> </attribute> + <attribute> + <id>OMI_INBAND_BAR_BASE_ADDR_OFFSET</id> + </attribute> </targetType> <targetType> @@ -3518,6 +3521,12 @@ <default>AXONE</default> <id>MODEL</id> </attribute> + <attribute> + <id>OMI_INBAND_BAR_BASE_ADDR_OFFSET</id> + </attribute> + <attribute> + <id>ORDINAL_ID</id> + </attribute> </targetType> <!-- OMI (Special has two parents) |