[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 23/25] target/ppc: Use gen_io_start/end around DARN
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PULL 23/25] target/ppc: Use gen_io_start/end around DARN |
Date: |
Wed, 22 May 2019 14:42:24 -0400 |
Generating a random number counts as I/O, as it cannot be
replayed and produce the same results.
Acked-by: David Gibson <address@hidden>
Reviewed-by: Laurent Vivier <address@hidden>
Suggested-by: Peter Maydell <address@hidden>
Signed-off-by: Richard Henderson <address@hidden>
---
target/ppc/translate.c | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/target/ppc/translate.c b/target/ppc/translate.c
index b5217f632f..4a5de28036 100644
--- a/target/ppc/translate.c
+++ b/target/ppc/translate.c
@@ -1847,13 +1847,22 @@ static void gen_darn(DisasContext *ctx)
{
int l = L(ctx->opcode);
- if (l == 0) {
- gen_helper_darn32(cpu_gpr[rD(ctx->opcode)]);
- } else if (l <= 2) {
- /* Return 64-bit random for both CRN and RRN */
- gen_helper_darn64(cpu_gpr[rD(ctx->opcode)]);
- } else {
+ if (l > 2) {
tcg_gen_movi_i64(cpu_gpr[rD(ctx->opcode)], -1);
+ } else {
+ if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) {
+ gen_io_start();
+ }
+ if (l == 0) {
+ gen_helper_darn32(cpu_gpr[rD(ctx->opcode)]);
+ } else {
+ /* Return 64-bit random for both CRN and RRN */
+ gen_helper_darn64(cpu_gpr[rD(ctx->opcode)]);
+ }
+ if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) {
+ gen_io_end();
+ gen_stop_exception(ctx);
+ }
}
}
#endif
--
2.17.1
- [Qemu-devel] [PULL 00/25] Add qemu_getrandom and ARMv8.5-RNG etc, Richard Henderson, 2019/05/22
- [Qemu-devel] [PULL 19/25] hw/misc/bcm2835_rng: Use qemu_guest_getrandom_nofail, Richard Henderson, 2019/05/22
- [Qemu-devel] [PULL 09/25] ui/vnc: Use gcrypto_random_bytes for start_auth_vnc, Richard Henderson, 2019/05/22
- [Qemu-devel] [PULL 03/25] crypto: Reverse code blocks in random-platform.c, Richard Henderson, 2019/05/22
- [Qemu-devel] [PULL 25/25] target/i386: Implement CPUID_EXT_RDRAND, Richard Henderson, 2019/05/22
- [Qemu-devel] [PULL 23/25] target/ppc: Use gen_io_start/end around DARN,
Richard Henderson <=
- [Qemu-devel] [PULL 17/25] aspeed/scu: Use qemu_guest_getrandom_nofail, Richard Henderson, 2019/05/22
- [Qemu-devel] [PULL 11/25] cpus: Initialize pseudo-random seeds for all guest cpus, Richard Henderson, 2019/05/22
- [Qemu-devel] [PULL 22/25] target/arm: Implement ARMv8.5-RNG, Richard Henderson, 2019/05/22
- [Qemu-devel] [PULL 15/25] linux-user/aarch64: Use qemu_guest_getrandom for PAUTH keys, Richard Henderson, 2019/05/22
- [Qemu-devel] [PULL 16/25] linux-user: Remove srand call, Richard Henderson, 2019/05/22
- [Qemu-devel] [PULL 05/25] crypto: Use O_CLOEXEC in qcrypto_random_init, Richard Henderson, 2019/05/22
- [Qemu-devel] [PULL 06/25] crypto: Use getrandom for qcrypto_random_bytes, Richard Henderson, 2019/05/22
- [Qemu-devel] [PULL 08/25] ui/vnc: Split out authentication_failed, Richard Henderson, 2019/05/22
- [Qemu-devel] [PULL 04/25] crypto: Do not fail for EINTR during qcrypto_random_bytes, Richard Henderson, 2019/05/22
- [Qemu-devel] [PULL 24/25] target/ppc: Use qemu_guest_getrandom for DARN, Richard Henderson, 2019/05/22