[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v8 23/25] target/ppc: Use gen_io_start/end around DA
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v8 23/25] target/ppc: Use gen_io_start/end around DARN |
Date: |
Thu, 16 May 2019 19:39:22 -0700 |
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] [PATCH v8 12/25] linux-user: Initialize pseudo-random seeds for all guest cpus, (continued)
- [Qemu-devel] [PATCH v8 12/25] linux-user: Initialize pseudo-random seeds for all guest cpus, Richard Henderson, 2019/05/16
- [Qemu-devel] [PATCH v8 14/25] linux-user: Use qemu_guest_getrandom_nofail for AT_RANDOM, Richard Henderson, 2019/05/16
- [Qemu-devel] [PATCH v8 13/25] linux-user: Call qcrypto_init if not using -seed, Richard Henderson, 2019/05/16
- [Qemu-devel] [PATCH v8 16/25] linux-user: Remove srand call, Richard Henderson, 2019/05/16
- [Qemu-devel] [PATCH v8 15/25] linux-user/aarch64: Use qemu_guest_getrandom for PAUTH keys, Richard Henderson, 2019/05/16
- [Qemu-devel] [PATCH v8 17/25] aspeed/scu: Use qemu_guest_getrandom_nofail, Richard Henderson, 2019/05/16
- [Qemu-devel] [PATCH v8 18/25] hw/misc/nrf51_rng: Use qemu_guest_getrandom_nofail, Richard Henderson, 2019/05/16
- [Qemu-devel] [PATCH v8 22/25] target/arm: Implement ARMv8.5-RNG, Richard Henderson, 2019/05/16
- [Qemu-devel] [PATCH v8 24/25] target/ppc: Use qemu_guest_getrandom for DARN, Richard Henderson, 2019/05/16
- [Qemu-devel] [PATCH v8 25/25] target/i386: Implement CPUID_EXT_RDRAND, Richard Henderson, 2019/05/16
- [Qemu-devel] [PATCH v8 23/25] target/ppc: Use gen_io_start/end around DARN,
Richard Henderson <=
- [Qemu-devel] [PATCH v8 21/25] target/arm: Put all PAC keys into a structure, Richard Henderson, 2019/05/16
- [Qemu-devel] [PATCH v8 19/25] hw/misc/bcm2835_rng: Use qemu_guest_getrandom_nofail, Richard Henderson, 2019/05/16
- [Qemu-devel] [PATCH v8 20/25] hw/misc/exynos4210_rng: Use qemu_guest_getrandom, Richard Henderson, 2019/05/16
- Re: [Qemu-devel] [PATCH v8 00/25] Add qemu_getrandom and ARMv8.5-RNG etc, Daniel P . Berrangé, 2019/05/22