Index: libcfa/src/device/cpu.cfa
===================================================================
--- libcfa/src/device/cpu.cfa	(revision 9b33337ddda00ac15b5ea41e8d984d0e584177d0)
+++ libcfa/src/device/cpu.cfa	(revision 07a1e7a2d8c4e4a397e8ce31103fb8388c36630d)
@@ -427,10 +427,9 @@
 			unsigned c = pairings[i].cpu;
 			unsigned llc_id = pairings[i].id;
-			unsigned width = maps[llc_id].raw->width;
 			unsigned start = maps[llc_id].start;
-			unsigned self  = start + (maps[llc_id].count++);
-			entries[c].count = width;
+			entries[c].count = maps[llc_id].raw->width;
 			entries[c].start = start;
-			entries[c].self  = self;
+			entries[c].self  = start + (maps[llc_id].count++);
+			entries[c].cache = llc_id;
 		}
 
Index: libcfa/src/device/cpu.hfa
===================================================================
--- libcfa/src/device/cpu.hfa	(revision 9b33337ddda00ac15b5ea41e8d984d0e584177d0)
+++ libcfa/src/device/cpu.hfa	(revision 07a1e7a2d8c4e4a397e8ce31103fb8388c36630d)
@@ -16,8 +16,19 @@
 #include <stddef.h>
 
+// Map from cpu entry to a structure detailling cpus with common topologies
+// Note that the cpu-groups are contiguous so the indexing is different from
+// the cpu indexing
 struct cpu_map_entry_t {
+	// Where this particular cpu is in the group
 	unsigned self;
+
+	// Starting index of the cpus with the same topology
 	unsigned start;
+
+	// Number of cpus with the same topology
 	unsigned count;
+
+	// Index of the cache this entry describes
+	unsigned cache;
 };
 
