cache_map
if (!sparc_pmu->cache_map)
pmap = &((*sparc_pmu->cache_map)[cache_type][cache_op][cache_result]);
const cache_map_t *cache_map;
.cache_map = &ultra3_cache_map,
.cache_map = &niagara1_cache_map,
.cache_map = &niagara2_cache_map,
.cache_map = &niagara4_cache_map,
.cache_map = &niagara4_cache_map,
memmove(cache_map + idx, cache_map + idx + 1,
sizeof(*cache_map) * (cache_map_n - idx));
struct cache_map *prev = cache_map + idx - 1;
struct cache_map *next = cache_map + idx;
cache_map[idx - 1].end = cache_map[idx].end;
cache_map[idx - 1].end = end;
cache_map[idx].start = start;
memmove(cache_map + idx + 1, cache_map + idx,
sizeof(*cache_map) * (cache_map_n - idx));
cache_map[idx].start = start;
cache_map[idx].end = end;
cache_map[idx].type = type;
cache_map[idx].fixed = 0;
int ret = start != cache_map[idx].start;
if (start == cache_map[idx].start && end == cache_map[idx].end) {
} else if (start == cache_map[idx].start) {
cache_map[idx].start = end;
} else if (end == cache_map[idx].end) {
cache_map[idx].end = start;
tmp = cache_map[idx].end;
cache_map[idx].end = start;
add_map_entry_at(end, tmp, cache_map[idx].type, idx + 1);
if (start >= cache_map[i].end)
if (start < cache_map[i].start) {
tmp = min(end, cache_map[i].start);
new_type = get_effective_type(type, cache_map[i].type);
old_type = cache_map[i].type;
if (cache_map[i].fixed || new_type == old_type) {
start = cache_map[i].end;
tmp = min(end, cache_map[i].end);
cache_map[cache_map_n - 1].fixed = 1;
cache_map[i].fixed = 1;
cache_map[i].start, cache_map[i].end - 1,
mtrr_attrib_to_str(cache_map[i].type));
cache_map = NULL;
cache_map = kzalloc_objs(*cache_map, new_size);
if (cache_map) {
memmove(cache_map, init_cache_map,
cache_map_n * sizeof(*cache_map));
if (start >= cache_map[i].end)
if (start < cache_map[i].start) {
if (end <= cache_map[i].start)
type = type_merge(type, cache_map[i].type, uniform);
start = cache_map[i].end;
static struct cache_map init_cache_map[CACHE_MAP_MAX] __initdata;
static struct cache_map *cache_map __refdata = init_cache_map;
.map = cache_map,
armpmu_map_cache_event(const unsigned (*cache_map)
if (!cache_map)
ret = (int)(*cache_map)[cache_type][cache_op][cache_result];
const unsigned (*cache_map)
return armpmu_map_cache_event(cache_map, config);
const unsigned (*cache_map)[PERF_COUNT_HW_CACHE_MAX]