[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v6 24/25] target/ppc: Use gen_io_start/end around DA
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v6 24/25] target/ppc: Use gen_io_start/end around DARN |
Date: |
Fri, 10 May 2019 10:30:48 -0700 |
Generating a random number counts as I/O, as it cannot be
replayed and produce the same results.
Cc: David Gibson <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 8d08625c33..76628df6dd 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 v6 13/25] linux-user: Call qcrypto_init if not using -seed, (continued)
- [Qemu-devel] [PATCH v6 13/25] linux-user: Call qcrypto_init if not using -seed, Richard Henderson, 2019/05/10
- [Qemu-devel] [PATCH v6 18/25] hw/misc/nrf51_rng: Use qemu_guest_getrandom_nofail, Richard Henderson, 2019/05/10
- [Qemu-devel] [PATCH v6 19/25] hw/misc/bcm2835_rng: Use qemu_guest_getrandom_nofail, Richard Henderson, 2019/05/10
- [Qemu-devel] [PATCH v6 16/25] linux-user: Remove srand call, Richard Henderson, 2019/05/10
- [Qemu-devel] [PATCH v6 12/25] linux-user: Initialize pseudo-random seeds for all guest cpus, Richard Henderson, 2019/05/10
- [Qemu-devel] [PATCH v6 20/25] hw/misc/exynos4210_rng: Use qemu_guest_getrandom, Richard Henderson, 2019/05/10
- [Qemu-devel] [PATCH v6 22/25] target/arm: Implement ARMv8.5-RNG, Richard Henderson, 2019/05/10
- [Qemu-devel] [PATCH v6 23/25] target/ppc: Use qemu_guest_getrandom for DARN, Richard Henderson, 2019/05/10
- [Qemu-devel] [PATCH v6 21/25] target/arm: Put all PAC keys into a structure, Richard Henderson, 2019/05/10
- [Qemu-devel] [PATCH v6 25/25] target/i386: Implement CPUID_EXT_RDRAND, Richard Henderson, 2019/05/10
- [Qemu-devel] [PATCH v6 24/25] target/ppc: Use gen_io_start/end around DARN,
Richard Henderson <=
- Re: [Qemu-devel] [PATCH v6 00/25] Add qemu_getrandom and ARMv8.5-RNG etc, Markus Armbruster, 2019/05/14
- Re: [Qemu-devel] [PATCH v6 00/25] Add qemu_getrandom and ARMv8.5-RNG etc, Daniel P . Berrangé, 2019/05/14
- Re: [Qemu-devel] [PATCH v6 00/25] Add qemu_getrandom and ARMv8.5-RNG etc, Richard Henderson, 2019/05/14
- Re: [Qemu-devel] [PATCH v6 00/25] Add qemu_getrandom and ARMv8.5-RNG etc, Daniel P . Berrangé, 2019/05/14
- Re: [Qemu-devel] [PATCH v6 00/25] Add qemu_getrandom and ARMv8.5-RNG etc, Richard Henderson, 2019/05/14
- Re: [Qemu-devel] [PATCH v6 00/25] Add qemu_getrandom and ARMv8.5-RNG etc, Eric Blake, 2019/05/14
- Re: [Qemu-devel] [PATCH v6 00/25] Add qemu_getrandom and ARMv8.5-RNG etc, Richard Henderson, 2019/05/14