Loading target/ppc/int_helper.c +26 −11 Original line number Diff line number Diff line Loading @@ -23,6 +23,8 @@ #include "exec/helper-proto.h" #include "crypto/aes.h" #include "fpu/softfloat.h" #include "qapi/error.h" #include "qemu/guest-random.h" #include "helper_regs.h" /*****************************************************************************/ Loading Loading @@ -158,24 +160,37 @@ uint32_t helper_cmpeqb(target_ulong ra, target_ulong rb) #undef hasvalue /* * Return invalid random number. * * FIXME: Add rng backend or other mechanism to get cryptographically suitable * random number * Return a random number. */ target_ulong helper_darn32(void) uint64_t helper_darn32(void) { Error *err = NULL; uint32_t ret; if (qemu_guest_getrandom(&ret, sizeof(ret), &err) < 0) { qemu_log_mask(LOG_UNIMP, "darn: Crypto failure: %s", error_get_pretty(err)); error_free(err); return -1; } target_ulong helper_darn64(void) return ret; } uint64_t helper_darn64(void) { Error *err = NULL; uint64_t ret; if (qemu_guest_getrandom(&ret, sizeof(ret), &err) < 0) { qemu_log_mask(LOG_UNIMP, "darn: Crypto failure: %s", error_get_pretty(err)); error_free(err); return -1; } #endif #if defined(TARGET_PPC64) return ret; } uint64_t helper_bpermd(uint64_t rs, uint64_t rb) { Loading Loading
target/ppc/int_helper.c +26 −11 Original line number Diff line number Diff line Loading @@ -23,6 +23,8 @@ #include "exec/helper-proto.h" #include "crypto/aes.h" #include "fpu/softfloat.h" #include "qapi/error.h" #include "qemu/guest-random.h" #include "helper_regs.h" /*****************************************************************************/ Loading Loading @@ -158,24 +160,37 @@ uint32_t helper_cmpeqb(target_ulong ra, target_ulong rb) #undef hasvalue /* * Return invalid random number. * * FIXME: Add rng backend or other mechanism to get cryptographically suitable * random number * Return a random number. */ target_ulong helper_darn32(void) uint64_t helper_darn32(void) { Error *err = NULL; uint32_t ret; if (qemu_guest_getrandom(&ret, sizeof(ret), &err) < 0) { qemu_log_mask(LOG_UNIMP, "darn: Crypto failure: %s", error_get_pretty(err)); error_free(err); return -1; } target_ulong helper_darn64(void) return ret; } uint64_t helper_darn64(void) { Error *err = NULL; uint64_t ret; if (qemu_guest_getrandom(&ret, sizeof(ret), &err) < 0) { qemu_log_mask(LOG_UNIMP, "darn: Crypto failure: %s", error_get_pretty(err)); error_free(err); return -1; } #endif #if defined(TARGET_PPC64) return ret; } uint64_t helper_bpermd(uint64_t rs, uint64_t rb) { Loading