aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2019-10-14 10:42:35 +0100
committerPeter Maydell <peter.maydell@linaro.org>2019-10-14 10:42:35 +0100
commitcdfc44ac3c6d0deaae4f5152cda830598963630c (patch)
treecc8131f36407ce7f5e82caecb87604efa6ca1412 /include
parent98b2e3c9ab3abfe476a2b02f8f51813edb90e72d (diff)
parent1f6493be088da969efeeee0100ea4330fb804cdf (diff)
downloadqemu-cdfc44ac3c6d0deaae4f5152cda830598963630c.zip
qemu-cdfc44ac3c6d0deaae4f5152cda830598963630c.tar.gz
qemu-cdfc44ac3c6d0deaae4f5152cda830598963630c.tar.bz2
Merge remote-tracking branch 'remotes/davidhildenbrand/tags/s390x-tcg-2019-10-10' into staging
- MMU DAT translation rewrite and cleanup - Implement more TCG CPU features related to the MMU (e.g., IEP) - Add the current instruction length to unwind data and clean up - Resolve one TODO for the MVCL instruction # gpg: Signature made Thu 10 Oct 2019 12:25:06 BST # gpg: using RSA key 1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A # gpg: issuer "david@redhat.com" # gpg: Good signature from "David Hildenbrand <david@redhat.com>" [unknown] # gpg: aka "David Hildenbrand <davidhildenbrand@gmail.com>" [full] # Primary key fingerprint: 1BD9 CAAD 735C 4C3A 460D FCCA 4DDE 10F7 00FF 835A * remotes/davidhildenbrand/tags/s390x-tcg-2019-10-10: (31 commits) s390x/tcg: MVCL: Exit to main loop if requested target/s390x: Remove ILEN_UNWIND target/s390x: Remove ilen argument from trigger_pgm_exception target/s390x: Remove ilen argument from trigger_access_exception target/s390x: Remove ILEN_AUTO target/s390x: Rely on unwinding in s390_cpu_virt_mem_rw target/s390x: Rely on unwinding in s390_cpu_tlb_fill target/s390x: Simplify helper_lra target/s390x: Remove fail variable from s390_cpu_tlb_fill target/s390x: Return exception from translate_pages target/s390x: Return exception from mmu_translate target/s390x: Remove exc argument to mmu_translate_asce target/s390x: Return exception from mmu_translate_real target/s390x: Handle tec in s390_cpu_tlb_fill target/s390x: Push trigger_pgm_exception lower in s390_cpu_tlb_fill target/s390x: Use tcg_s390_program_interrupt in TCG helpers target/s390x: Remove ilen parameter from s390_program_interrupt target/s390x: Remove ilen parameter from tcg_s390_program_interrupt target/s390x: Add ilen to unwind data s390x/cpumodel: Add new TCG features to QEMU cpu model ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include')
-rw-r--r--include/exec/exec-all.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h
index 49db07b..04795c4 100644
--- a/include/exec/exec-all.h
+++ b/include/exec/exec-all.h
@@ -72,6 +72,23 @@ void QEMU_NORETURN cpu_loop_exit(CPUState *cpu);
void QEMU_NORETURN cpu_loop_exit_restore(CPUState *cpu, uintptr_t pc);
void QEMU_NORETURN cpu_loop_exit_atomic(CPUState *cpu, uintptr_t pc);
+/**
+ * cpu_loop_exit_requested:
+ * @cpu: The CPU state to be tested
+ *
+ * Indicate if somebody asked for a return of the CPU to the main loop
+ * (e.g., via cpu_exit() or cpu_interrupt()).
+ *
+ * This is helpful for architectures that support interruptible
+ * instructions. After writing back all state to registers/memory, this
+ * call can be used to check if it makes sense to return to the main loop
+ * or to continue executing the interruptible instruction.
+ */
+static inline bool cpu_loop_exit_requested(CPUState *cpu)
+{
+ return (int32_t)atomic_read(&cpu_neg(cpu)->icount_decr.u32) < 0;
+}
+
#if !defined(CONFIG_USER_ONLY)
void cpu_reloading_memory_map(void);
/**