Is it safe to assume that assigning and accessing 32 bit integers on an ARM Cortex-A9 MPCore implementations are atomic operations and that the assigned value is synchronized with all cores? Will the C compiler guarantee that
uint32_t *p;
*p = 4711;
and
uint32_t *p;
return *p;
are translated to atomic operations in assembler?