|
@@ -48,118 +48,31 @@ enum xscale_counters {
|
|
|
};
|
|
|
|
|
|
static const unsigned xscale_perf_map[PERF_COUNT_HW_MAX] = {
|
|
|
+ PERF_MAP_ALL_UNSUPPORTED,
|
|
|
[PERF_COUNT_HW_CPU_CYCLES] = XSCALE_PERFCTR_CCNT,
|
|
|
[PERF_COUNT_HW_INSTRUCTIONS] = XSCALE_PERFCTR_INSTRUCTION,
|
|
|
- [PERF_COUNT_HW_CACHE_REFERENCES] = HW_OP_UNSUPPORTED,
|
|
|
- [PERF_COUNT_HW_CACHE_MISSES] = HW_OP_UNSUPPORTED,
|
|
|
[PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = XSCALE_PERFCTR_BRANCH,
|
|
|
[PERF_COUNT_HW_BRANCH_MISSES] = XSCALE_PERFCTR_BRANCH_MISS,
|
|
|
- [PERF_COUNT_HW_BUS_CYCLES] = HW_OP_UNSUPPORTED,
|
|
|
[PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] = XSCALE_PERFCTR_ICACHE_NO_DELIVER,
|
|
|
- [PERF_COUNT_HW_STALLED_CYCLES_BACKEND] = HW_OP_UNSUPPORTED,
|
|
|
};
|
|
|
|
|
|
static const unsigned xscale_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
|
|
|
[PERF_COUNT_HW_CACHE_OP_MAX]
|
|
|
[PERF_COUNT_HW_CACHE_RESULT_MAX] = {
|
|
|
- [C(L1D)] = {
|
|
|
- [C(OP_READ)] = {
|
|
|
- [C(RESULT_ACCESS)] = XSCALE_PERFCTR_DCACHE_ACCESS,
|
|
|
- [C(RESULT_MISS)] = XSCALE_PERFCTR_DCACHE_MISS,
|
|
|
- },
|
|
|
- [C(OP_WRITE)] = {
|
|
|
- [C(RESULT_ACCESS)] = XSCALE_PERFCTR_DCACHE_ACCESS,
|
|
|
- [C(RESULT_MISS)] = XSCALE_PERFCTR_DCACHE_MISS,
|
|
|
- },
|
|
|
- [C(OP_PREFETCH)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- },
|
|
|
- },
|
|
|
- [C(L1I)] = {
|
|
|
- [C(OP_READ)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = XSCALE_PERFCTR_ICACHE_MISS,
|
|
|
- },
|
|
|
- [C(OP_WRITE)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- },
|
|
|
- [C(OP_PREFETCH)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- },
|
|
|
- },
|
|
|
- [C(LL)] = {
|
|
|
- [C(OP_READ)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- },
|
|
|
- [C(OP_WRITE)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- },
|
|
|
- [C(OP_PREFETCH)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- },
|
|
|
- },
|
|
|
- [C(DTLB)] = {
|
|
|
- [C(OP_READ)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = XSCALE_PERFCTR_DTLB_MISS,
|
|
|
- },
|
|
|
- [C(OP_WRITE)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = XSCALE_PERFCTR_DTLB_MISS,
|
|
|
- },
|
|
|
- [C(OP_PREFETCH)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- },
|
|
|
- },
|
|
|
- [C(ITLB)] = {
|
|
|
- [C(OP_READ)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = XSCALE_PERFCTR_ITLB_MISS,
|
|
|
- },
|
|
|
- [C(OP_WRITE)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = XSCALE_PERFCTR_ITLB_MISS,
|
|
|
- },
|
|
|
- [C(OP_PREFETCH)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- },
|
|
|
- },
|
|
|
- [C(BPU)] = {
|
|
|
- [C(OP_READ)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- },
|
|
|
- [C(OP_WRITE)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- },
|
|
|
- [C(OP_PREFETCH)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- },
|
|
|
- },
|
|
|
- [C(NODE)] = {
|
|
|
- [C(OP_READ)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- },
|
|
|
- [C(OP_WRITE)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- },
|
|
|
- [C(OP_PREFETCH)] = {
|
|
|
- [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
|
|
|
- },
|
|
|
- },
|
|
|
+ PERF_CACHE_MAP_ALL_UNSUPPORTED,
|
|
|
+
|
|
|
+ [C(L1D)][C(OP_READ)][C(RESULT_ACCESS)] = XSCALE_PERFCTR_DCACHE_ACCESS,
|
|
|
+ [C(L1D)][C(OP_READ)][C(RESULT_MISS)] = XSCALE_PERFCTR_DCACHE_MISS,
|
|
|
+ [C(L1D)][C(OP_WRITE)][C(RESULT_ACCESS)] = XSCALE_PERFCTR_DCACHE_ACCESS,
|
|
|
+ [C(L1D)][C(OP_WRITE)][C(RESULT_MISS)] = XSCALE_PERFCTR_DCACHE_MISS,
|
|
|
+
|
|
|
+ [C(L1I)][C(OP_READ)][C(RESULT_MISS)] = XSCALE_PERFCTR_ICACHE_MISS,
|
|
|
+
|
|
|
+ [C(DTLB)][C(OP_READ)][C(RESULT_MISS)] = XSCALE_PERFCTR_DTLB_MISS,
|
|
|
+ [C(DTLB)][C(OP_WRITE)][C(RESULT_MISS)] = XSCALE_PERFCTR_DTLB_MISS,
|
|
|
+
|
|
|
+ [C(ITLB)][C(OP_READ)][C(RESULT_MISS)] = XSCALE_PERFCTR_ITLB_MISS,
|
|
|
+ [C(ITLB)][C(OP_WRITE)][C(RESULT_MISS)] = XSCALE_PERFCTR_ITLB_MISS,
|
|
|
};
|
|
|
|
|
|
#define XSCALE_PMU_ENABLE 0x001
|