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