diff options
| author | Richard Henderson <richard.henderson@linaro.org> | 2017-11-14 10:34:20 +0100 |
|---|---|---|
| committer | Richard Henderson <richard.henderson@linaro.org> | 2017-11-15 10:33:27 +0100 |
| commit | ec603b5584fa71213ef8f324fe89e4b27cc9d2bc (patch) | |
| tree | c7f47f8089dfc90c0920a3aa42bd6af9cc972bf2 /include/exec/cpu_ldst.h | |
| parent | 1fa0f627d03cd0d0755924247cafeb42969016bf (diff) | |
| download | focaccia-qemu-ec603b5584fa71213ef8f324fe89e4b27cc9d2bc.tar.gz focaccia-qemu-ec603b5584fa71213ef8f324fe89e4b27cc9d2bc.zip | |
tcg: Record code_gen_buffer address for user-only memory helpers
When we handle a signal from a fault within a user-only memory helper, we cannot cpu_restore_state with the PC found within the signal frame. Use a TLS variable, helper_retaddr, to record the unwind start point to find the faulting guest insn. Tested-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reported-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'include/exec/cpu_ldst.h')
| -rw-r--r-- | include/exec/cpu_ldst.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h index 6eb5fe80dc..191f2e962a 100644 --- a/include/exec/cpu_ldst.h +++ b/include/exec/cpu_ldst.h @@ -76,6 +76,8 @@ #if defined(CONFIG_USER_ONLY) +extern __thread uintptr_t helper_retaddr; + /* In user-only mode we provide only the _code and _data accessors. */ #define MEMSUFFIX _data |