accel/tcg: Split out getpc.h
Split out GETPC to a target-independent header. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-ID: <20250308072348.65723-3-philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
bf4a155b7a
commit
b73f58496d
24
include/accel/tcg/getpc.h
Normal file
24
include/accel/tcg/getpc.h
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Get host pc for helper unwinding.
|
||||
*
|
||||
* Copyright (c) 2003 Fabrice Bellard
|
||||
* SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
*/
|
||||
|
||||
#ifndef ACCEL_TCG_GETPC_H
|
||||
#define ACCEL_TCG_GETPC_H
|
||||
|
||||
#ifndef CONFIG_TCG
|
||||
#error Can only include this header with TCG
|
||||
#endif
|
||||
|
||||
/* GETPC is the true target of the return instruction that we'll execute. */
|
||||
#ifdef CONFIG_TCG_INTERPRETER
|
||||
extern __thread uintptr_t tci_tb_ptr;
|
||||
# define GETPC() tci_tb_ptr
|
||||
#else
|
||||
# define GETPC() \
|
||||
((uintptr_t)__builtin_extract_return_addr(__builtin_return_address(0)))
|
||||
#endif
|
||||
|
||||
#endif /* ACCEL_TCG_GETPC_H */
|
@ -28,6 +28,7 @@
|
||||
#include "exec/translation-block.h"
|
||||
|
||||
#if defined(CONFIG_TCG)
|
||||
#include "accel/tcg/getpc.h"
|
||||
|
||||
/**
|
||||
* probe_access:
|
||||
@ -177,15 +178,6 @@ void tb_phys_invalidate(TranslationBlock *tb, tb_page_addr_t page_addr);
|
||||
void tb_invalidate_phys_range(tb_page_addr_t start, tb_page_addr_t last);
|
||||
void tb_set_jmp_target(TranslationBlock *tb, int n, uintptr_t addr);
|
||||
|
||||
/* GETPC is the true target of the return instruction that we'll execute. */
|
||||
#if defined(CONFIG_TCG_INTERPRETER)
|
||||
extern __thread uintptr_t tci_tb_ptr;
|
||||
# define GETPC() tci_tb_ptr
|
||||
#else
|
||||
# define GETPC() \
|
||||
((uintptr_t)__builtin_extract_return_addr(__builtin_return_address(0)))
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user