(1)If CPU1 is an in-order execution CPU, is it necessary to add DMB before ldr r0, a ? I mean if there's no DMB, r0 = 0x1 in CPU1 still should be guaranteed, right?(2)So adding DMB before ldr r0, a is because CPU1 is an out-of-order execution CPU?
global int a = 0; global int b = 0; CPU0 : str #0x1, a DMB str #0x1, b CPU1 : WAIT(b==1) ; wait on flag DMB ldr r0, a