Mark Wielaard f4ddfbd
--- valgrind-3.8.0/cachegrind/cg_sim.c.jj	2011-10-26 23:24:32.000000000 +0200
Mark Wielaard f4ddfbd
+++ valgrind-3.8.0/cachegrind/cg_sim.c	2011-12-09 17:31:19.256023683 +0100
7657d98
@@ -42,27 +42,30 @@ typedef struct {
8f5f0f5
    Int          size;                   /* bytes */
8f5f0f5
    Int          assoc;
8f5f0f5
    Int          line_size;              /* bytes */
8f5f0f5
-   Int          sets;
8f5f0f5
    Int          sets_min_1;
8f5f0f5
    Int          line_size_bits;
8f5f0f5
    Int          tag_shift;
8f5f0f5
-   Char         desc_line[128];
8f5f0f5
    UWord*       tags;
8f5f0f5
-} cache_t2;
8f5f0f5
+   Char         desc_line[128];
8f5f0f5
+} cache_t2
8f5f0f5
+#ifdef __GNUC__
8f5f0f5
+__attribute__ ((aligned (8 * sizeof (Int))))
8f5f0f5
+#endif
8f5f0f5
+;
8f5f0f5
 
8f5f0f5
 /* By this point, the size/assoc/line_size has been checked. */
8f5f0f5
 static void cachesim_initcache(cache_t config, cache_t2* c)
8f5f0f5
 {
8f5f0f5
-   Int i;
8f5f0f5
+   Int sets;
8f5f0f5
 
8f5f0f5
    c->size      = config.size;
8f5f0f5
    c->assoc     = config.assoc;
8f5f0f5
    c->line_size = config.line_size;
8f5f0f5
 
8f5f0f5
-   c->sets           = (c->size / c->line_size) / c->assoc;
8f5f0f5
-   c->sets_min_1     = c->sets - 1;
8f5f0f5
+   sets              = (c->size / c->line_size) / c->assoc;
8f5f0f5
+   c->sets_min_1     = sets - 1;
8f5f0f5
    c->line_size_bits = VG_(log2)(c->line_size);
8f5f0f5
-   c->tag_shift      = c->line_size_bits + VG_(log2)(c->sets);
8f5f0f5
+   c->tag_shift      = c->line_size_bits + VG_(log2)(sets);
8f5f0f5
 
8f5f0f5
    if (c->assoc == 1) {
8f5f0f5
       VG_(sprintf)(c->desc_line, "%d B, %d B, direct-mapped", 
7657d98
@@ -72,11 +75,8 @@ static void cachesim_initcache(cache_t c
8f5f0f5
                                  c->size, c->line_size, c->assoc);
8f5f0f5
    }
8f5f0f5
 
76c2bae
-   c->tags = VG_(malloc)("cg.sim.ci.1",
76c2bae
-                         sizeof(UWord) * c->sets * c->assoc);
8f5f0f5
-
8f5f0f5
-   for (i = 0; i < c->sets * c->assoc; i++)
8f5f0f5
-      c->tags[i] = 0;
76c2bae
+   c->tags = VG_(calloc)("cg.sim.ci.1",
0a98d28
+                         sizeof(UWord), sets * c->assoc);
8f5f0f5
 }
8f5f0f5
 
8f5f0f5
 /* This is done as a macro rather than by passing in the cache_t2 as an