#ifndef ACCEL_TCG_USER_RETADDR_H #define ACCEL_TCG_USER_RETADDR_H #include "qemu/atomic.h" extern __thread uintptr_t helper_retaddr; static inline void set_helper_retaddr(uintptr_t ra) { helper_retaddr = ra; /* * Ensure that this write is visible to the SIGSEGV handler that * may be invoked due to a subsequent invalid memory operation. */ signal_barrier(); } static inline void clear_helper_retaddr(void) { /* * Ensure that previous memory operations have succeeded before * removing the data visible to the signal handler. */ signal_barrier(); helper_retaddr = 0; } #endif