Issue with __sync_synchronize() or asm volatile("": : :"memory")

William Tambe tambewilliam@gmail.com
Fri Oct 25 03:23:00 GMT 2019


I am using the following assembly where timer_intr is a function that
I am calling within the assembly.

__sync_synchronize();
asm volatile("": : :"memory")
asm volatile (
    "jl %%rp, %0\n"
    :: "r"(timer_intr)
    :  "memory");

The issue that I am having is that, despite the use of the "memory"
clobber or __sync_synchronize() or asm volatile("": : :"memory"),
registers holding local variables are not flushed to memory; which
causes them to have a different value after the assembly because the
function timer_intr() modified them.

Any idea ?



More information about the Gcc-help mailing list