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