Use volatile asm + the 'memory' clobber