diff options
author | Blue Swirl <blauwirbel@gmail.com> | 2011-09-21 18:13:16 +0000 |
---|---|---|
committer | Blue Swirl <blauwirbel@gmail.com> | 2011-10-01 09:31:43 +0000 |
commit | 3917149d96cfa5f619de770af6059f37b6e1df77 (patch) | |
tree | 5ab453462b2547211575129d051bd14ddc422396 | |
parent | bccd9ec5f098668576342c83d90d6d6833d61d33 (diff) |
Move GETPC from dyngen-exec.h to exec-all.h
GETPC() can be used even from outside of helper code. Move the macro to
a more accessible location. Avoid a compile warning from redefining it in exec.c.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
-rw-r--r-- | dyngen-exec.h | 12 | ||||
-rw-r--r-- | exec-all.h | 12 | ||||
-rw-r--r-- | exec.c | 1 |
3 files changed, 13 insertions, 12 deletions
diff --git a/dyngen-exec.h b/dyngen-exec.h index 8beb7f3344..fbde29ea01 100644 --- a/dyngen-exec.h +++ b/dyngen-exec.h @@ -57,16 +57,4 @@ register CPUState *env asm(AREG0); -/* The return address may point to the start of the next instruction. - Subtracting one gets us the call instruction itself. */ -#if defined(__s390__) && !defined(__s390x__) -# define GETPC() ((void*)(((unsigned long)__builtin_return_address(0) & 0x7fffffffUL) - 1)) -#elif defined(__arm__) -/* Thumb return addresses have the low bit set, so we need to subtract two. - This is still safe in ARM mode because instructions are 4 bytes. */ -# define GETPC() ((void *)((unsigned long)__builtin_return_address(0) - 2)) -#else -# define GETPC() ((void *)((unsigned long)__builtin_return_address(0) - 1)) -#endif - #endif /* !defined(__DYNGEN_EXEC_H__) */ diff --git a/exec-all.h b/exec-all.h index b1dfe109d2..1120f84661 100644 --- a/exec-all.h +++ b/exec-all.h @@ -267,6 +267,18 @@ extern spinlock_t tb_lock; extern int tb_invalidated_flag; +/* The return address may point to the start of the next instruction. + Subtracting one gets us the call instruction itself. */ +#if defined(__s390__) && !defined(__s390x__) +# define GETPC() ((void*)(((unsigned long)__builtin_return_address(0) & 0x7fffffffUL) - 1)) +#elif defined(__arm__) +/* Thumb return addresses have the low bit set, so we need to subtract two. + This is still safe in ARM mode because instructions are 4 bytes. */ +# define GETPC() ((void *)((unsigned long)__builtin_return_address(0) - 2)) +#else +# define GETPC() ((void *)((unsigned long)__builtin_return_address(0) - 1)) +#endif + #if !defined(CONFIG_USER_ONLY) extern CPUWriteMemoryFunc *io_mem_write[IO_MEM_NB_ENTRIES][4]; @@ -4763,6 +4763,7 @@ void dump_exec_info(FILE *f, fprintf_function cpu_fprintf) } #define MMUSUFFIX _cmmu +#undef GETPC #define GETPC() NULL #define env cpu_single_env #define SOFTMMU_CODE_ACCESS |