1*b73f5849SRichard Henderson /* 2*b73f5849SRichard Henderson * Get host pc for helper unwinding. 3*b73f5849SRichard Henderson * 4*b73f5849SRichard Henderson * Copyright (c) 2003 Fabrice Bellard 5*b73f5849SRichard Henderson * SPDX-License-Identifier: LGPL-2.1-or-later 6*b73f5849SRichard Henderson */ 7*b73f5849SRichard Henderson 8*b73f5849SRichard Henderson #ifndef ACCEL_TCG_GETPC_H 9*b73f5849SRichard Henderson #define ACCEL_TCG_GETPC_H 10*b73f5849SRichard Henderson 11*b73f5849SRichard Henderson /* GETPC is the true target of the return instruction that we'll execute. */ 12*b73f5849SRichard Henderson #ifdef CONFIG_TCG_INTERPRETER 13*b73f5849SRichard Henderson extern __thread uintptr_t tci_tb_ptr; 14*b73f5849SRichard Henderson # define GETPC() tci_tb_ptr 15*b73f5849SRichard Henderson #else 16*b73f5849SRichard Henderson # define GETPC() \ 17*b73f5849SRichard Henderson ((uintptr_t)__builtin_extract_return_addr(__builtin_return_address(0))) 18*b73f5849SRichard Henderson #endif 19*b73f5849SRichard Henderson 20*b73f5849SRichard Henderson #endif /* ACCEL_TCG_GETPC_H */ 21