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 #ifndef CONFIG_TCG 12*b73f5849SRichard Henderson #error Can only include this header with TCG 13*b73f5849SRichard Henderson #endif 14*b73f5849SRichard Henderson 15*b73f5849SRichard Henderson /* GETPC is the true target of the return instruction that we'll execute. */ 16*b73f5849SRichard Henderson #ifdef CONFIG_TCG_INTERPRETER 17*b73f5849SRichard Henderson extern __thread uintptr_t tci_tb_ptr; 18*b73f5849SRichard Henderson # define GETPC() tci_tb_ptr 19*b73f5849SRichard Henderson #else 20*b73f5849SRichard Henderson # define GETPC() \ 21*b73f5849SRichard Henderson ((uintptr_t)__builtin_extract_return_addr(__builtin_return_address(0))) 22*b73f5849SRichard Henderson #endif 23*b73f5849SRichard Henderson 24*b73f5849SRichard Henderson #endif /* ACCEL_TCG_GETPC_H */ 25