char dc_l1_l2tlb_miss_str[sizeof(" DcL1TlbMiss _ DcL2TlbMiss _")] = "";
char dc_l1tlb_hit_str[sizeof(" DcL1TlbHit2M _ DcL1TlbHit1G _")] = "";
char op_mem_width_str[sizeof(" OpMemWidth _____ bytes")] = "";
+ char tlb_refill_lat_str[sizeof(" TlbRefillLat _____")] = "";
char dc_l2tlb_hit_2m_str[sizeof(" DcL2TlbHit2M _")] = "";
char dc_l2tlb_hit_1g_str[sizeof(" DcL2TlbHit1G _")] = "";
char dc_page_size_str[sizeof(" DcPageSize ____")] = "";
" DcL2TlbHit1G %d", reg.dc_l2_tlb_hit_1g);
}
+ /* Use !zen4_ibs_extensions as a proxy for Zen3 and earlier */
+ if (!zen4_ibs_extensions || reg.dc_phy_addr_valid) {
+ snprintf(tlb_refill_lat_str, sizeof(tlb_refill_lat_str),
+ " TlbRefillLat %5d", reg.tlb_refill_lat);
+ }
+
printf("ibs_op_data3:\t%016llx LdOp %d StOp %d%s%s%s DcMiss %d DcMisAcc %d "
"DcWcMemAcc %d DcUcMemAcc %d DcLockedOp %d DcMissNoMabAlloc %d "
"DcLinAddrValid %d DcPhyAddrValid %d%s%s SwPf %d%s%s "
- "DcMissLat %5d TlbRefillLat %5d\n",
+ "DcMissLat %5d%s\n",
reg.val, reg.ld_op, reg.st_op, dc_l1_l2tlb_miss_str,
dtlb_pgsize_cap ? dc_page_size_str : dc_l1tlb_hit_str,
dc_l2tlb_hit_2m_str, reg.dc_miss, reg.dc_mis_acc, reg.dc_wc_mem_acc,
reg.dc_uc_mem_acc, reg.dc_locked_op, reg.dc_miss_no_mab_alloc,
reg.dc_lin_addr_valid, reg.dc_phy_addr_valid, dc_l2tlb_hit_1g_str,
l2_miss_str, reg.sw_pf, op_mem_width_str, op_dc_miss_open_mem_reqs_str,
- reg.dc_miss_lat, reg.tlb_refill_lat);
+ reg.dc_miss_lat, tlb_refill_lat_str);
}
/*
pr_ibs_op_data3(*op_data3);
if (op_data3->dc_lin_addr_valid)
printf("IbsDCLinAd:\t%016llx\n", *(rip + 4));
- if (op_data3->dc_phy_addr_valid)
+
+ /* Use !zen4_ibs_extensions as a proxy for Zen3 and earlier */
+ if (op_data3->dc_phy_addr_valid && *(rip + 5) &&
+ (!zen4_ibs_extensions || op_data3->dc_lin_addr_valid)) {
printf("IbsDCPhysAd:\t%016llx\n", *(rip + 5));
+ }
if (op_data->op_brn_ret && *(rip + 6))
printf("IbsBrTarget:\t%016llx\n", *(rip + 6));
}