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"
|
#include "exec/translation-block.h"
|
||||||
|
|
||||||
#if defined(CONFIG_TCG)
|
#if defined(CONFIG_TCG)
|
||||||
|
#include "accel/tcg/getpc.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* probe_access:
|
* 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_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);
|
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)
|
#if !defined(CONFIG_USER_ONLY)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user