kernel mailz <kernelmailz@xxxxxxxxxxxxxx> writes: > I tried a small example > > int *p = 0x1000; > int a = *p; > asm("sync":::"memory"); > a = *p; > > and > > volatile int *p = 0x1000; > int a = *p; > asm("sync"); > a = *p > > Got the same assembly. > Which is right. > > So does it mean, if proper use of volatile is done, there is no need > of "memory" ? You have to consider the effects of inlining, which may bring in other memory loads and stores through non-volatile pointers. Ian