| /* | |
| * QEMU TCG CPU loop API | |
| * | |
| * SPDX-License-Identifier: GPL-2.0-or-later | |
| */ | |
| #ifndef ACCEL_TCG_CPU_LOOP_COMMON_H | |
| #define ACCEL_TCG_CPU_LOOP_COMMON_H | |
| #ifndef CONFIG_TCG | |
| #error Can only include this header with TCG | |
| #endif | |
| /** | |
| * cpu_exec: | |
| * @cpu: the cpu context | |
| * | |
| * Returns one of the EXCP_* definitions (see "exec/cpu-common.h"). | |
| */ | |
| int cpu_exec(CPUState *cpu); | |
| void cpu_exec_step_atomic(CPUState *cpu); | |
| /** | |
| * cpu_unwind_state_data: | |
| * @cpu: the cpu context | |
| * @host_pc: the host pc within the translation | |
| * @data: output data | |
| * | |
| * Attempt to load the unwind state for a host pc occurring in | |
| * translated code. If @host_pc is not in translated code, the | |
| * function returns false; otherwise @data is loaded. | |
| * This is the same unwind info as given to restore_state_to_opc. | |
| */ | |
| bool cpu_unwind_state_data(CPUState *cpu, uintptr_t host_pc, uint64_t *data); | |
| /** | |
| * cpu_restore_state: | |
| * @cpu: the cpu context | |
| * @host_pc: the host pc within the translation | |
| * @return: true if state was restored, false otherwise | |
| * | |
| * Attempt to restore the state for a fault occurring in translated | |
| * code. If @host_pc is not in translated code no state is | |
| * restored and the function returns false. | |
| */ | |
| bool cpu_restore_state(CPUState *cpu, uintptr_t host_pc); | |
| /** | |
| * cpu_loop_exit_noexc: | |
| * @cpu: the cpu context | |
| * | |
| * Exit the current TB, but without causing any exception to be raised. | |
| */ | |
| G_NORETURN void cpu_loop_exit_noexc(CPUState *cpu); | |
| /** | |
| * cpu_loop_exit_restore: | |
| * @cpu: the cpu context | |
| * @host_pc: the host pc within the translation | |
| * | |
| * Attempt to restore the state for a fault occurring in translated | |
| * code. If @host_pc is not in translated code no state is | |
| * restored. Finally, exit the current TB. | |
| */ | |
| G_NORETURN void cpu_loop_exit_restore(CPUState *cpu, uintptr_t host_pc); | |
| G_NORETURN void cpu_loop_exit_atomic(CPUState *cpu, uintptr_t host_pc); | |
| /** | |
| * cpu_loop_exit: | |
| * @cpu: the cpu context | |
| * | |
| * Exit the current TB. | |
| */ | |
| G_NORETURN void cpu_loop_exit(CPUState *cpu); | |
| #endif |