summary refs log tree commit diff stats
path: root/rust/qemu-api/src/lib.rs
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2024-12-15 10:06:10 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2025-01-23 11:35:33 +0100
commit456709db50f424d112bc5f07260fdc51555f3a24 (patch)
tree3ee86b3cd8dd3278869f31895092702c948d8963 /rust/qemu-api/src/lib.rs
parent0360b781870a628379de20e03305c4e62dbdcca4 (diff)
downloadfocaccia-qemu-456709db50f424d112bc5f07260fdc51555f3a24.tar.gz
focaccia-qemu-456709db50f424d112bc5f07260fdc51555f3a24.zip
target/i386: execute multiple REP/REPZ iterations without leaving TB
Use a TCG loop so that it is not necessary to go through the setup steps
of REP and through the I/O check on every iteration.  Interestingly, this
is not a particularly effective optimization on its own, though it avoids
the cost of correct RF emulation that was added in the previous patch.
The main benefit lies in allowing the hoisting of loop invariants outside
the loop, which will happen separately.

The loop exits when the low 16 bits of CX/ECX/RCX are zero (so generally
speaking the string operation runs in 65536 iteration batches) to give
the main loop an opportunity to pick up interrupts.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Link: https://lore.kernel.org/r/20241215090613.89588-12-pbonzini@redhat.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'rust/qemu-api/src/lib.rs')
0 files changed, 0 insertions, 0 deletions