app: fix volatile read for GCC >= 4.6
authorIvan Boule <ivan.boule@6wind.com>
Thu, 22 Sep 2011 16:01:35 +0000 (18:01 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 25 Jul 2013 14:07:51 +0000 (16:07 +0200)
When a memory address must be read, for instance a [mapped] PCI register,
the read value is assigned to a local variable that is not used after,
as for instance:
    x = *((uint8_t *) mem_addr);

Such instructions do not compile with gcc 4.6.
The fix consists in adding the "volatile" attribute to the accessed data type
and to not assign the read value:
    *((volatile uint8_t *) mem_addr);

Signed-off-by: Ivan Boule <ivan.boule@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
app/test/test_memory.c

index f9c7037..0dd09a6 100644 (file)
@@ -60,7 +60,6 @@ test_memory(void)
        uint64_t s;
        unsigned i, j;
        const struct rte_memseg *mem;
-       volatile uint8_t x;
 
        /*
         * dump the mapped memory: the python-expect script checks
@@ -82,8 +81,7 @@ test_memory(void)
 
                /* check memory */
                for (j = 0; j<mem[i].len; j++) {
-                       x = *((uint8_t *) mem[i].addr + j);
-                       RTE_SET_USED(x);
+                       *((volatile uint8_t *) mem[i].addr + j);
                }
        }