Index: libcfa/src/device/cpu.cfa
===================================================================
--- libcfa/src/device/cpu.cfa	(revision 33608cb54b8ea1ec847090d2cae1dd35145c0f9b)
+++ libcfa/src/device/cpu.cfa	(revision 9d6db206e54738fa1f9c920006e8d04bf7221a30)
@@ -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 33608cb54b8ea1ec847090d2cae1dd35145c0f9b)
+++ libcfa/src/device/cpu.hfa	(revision 9d6db206e54738fa1f9c920006e8d04bf7221a30)
@@ -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;
 };
 
