Lines Matching +full:- +full:seed
25 #include "qemu/guest-random.h"
76 /* bits from 0 to EXYNOS4210_RNG_PRNG_NUM if given seed register was set */
88 /* Return true if all the seed-set bits are set. */ in exynos4210_rng_seed_ready()
89 return (s->seed_set & mask) == mask; in exynos4210_rng_seed_ready()
96 * We actually ignore the seed and always generate true random numbers. in exynos4210_rng_set_seed()
99 * generates random numbers regardless of the seed value. in exynos4210_rng_set_seed()
101 s->seed_set |= BIT(i); in exynos4210_rng_set_seed()
105 s->reg_status |= EXYNOS4210_RNG_STATUS_SEED_SETTING_DONE; in exynos4210_rng_set_seed()
107 s->reg_status &= ~EXYNOS4210_RNG_STATUS_SEED_SETTING_DONE; in exynos4210_rng_set_seed()
115 /* Seed set? */ in exynos4210_rng_run_engine()
116 if ((s->reg_status & EXYNOS4210_RNG_STATUS_SEED_SETTING_DONE) == 0) { in exynos4210_rng_run_engine()
121 if ((s->reg_control & EXYNOS4210_RNG_CONTROL_1_PRNG) == 0) { in exynos4210_rng_run_engine()
126 if ((s->reg_control & EXYNOS4210_RNG_CONTROL_1_START_INIT) == 0) { in exynos4210_rng_run_engine()
131 if (qemu_guest_getrandom(s->randr_value, sizeof(s->randr_value), &err)) { in exynos4210_rng_run_engine()
135 s->reg_status |= EXYNOS4210_RNG_STATUS_PRNG_DONE; in exynos4210_rng_run_engine()
140 s->reg_control &= ~EXYNOS4210_RNG_CONTROL_1_START_INIT; in exynos4210_rng_run_engine()
153 val = s->reg_control; in exynos4210_rng_read()
157 val = s->reg_status; in exynos4210_rng_read()
165 val = s->randr_value[(offset - EXYNOS4210_RNG_PRNG_OFFSET(0)) / 4]; in exynos4210_rng_read()
189 s->reg_control = val; in exynos4210_rng_write()
195 s->reg_status &= ~EXYNOS4210_RNG_STATUS_WRITE_MASK; in exynos4210_rng_write()
196 s->reg_status |= val & EXYNOS4210_RNG_STATUS_WRITE_MASK; in exynos4210_rng_write()
205 (offset - EXYNOS4210_RNG_SEED_IN_OFFSET(0)) / 4, in exynos4210_rng_write()
228 s->reg_control = 0; in exynos4210_rng_reset()
229 s->reg_status = EXYNOS4210_RNG_STATUS_BUFFER_READY; in exynos4210_rng_reset()
230 memset(s->randr_value, 0, sizeof(s->randr_value)); in exynos4210_rng_reset()
231 s->seed_set = 0; in exynos4210_rng_reset()
239 memory_region_init_io(&s->iomem, obj, &exynos4210_rng_ops, s, in exynos4210_rng_init()
241 sysbus_init_mmio(dev, &s->iomem); in exynos4210_rng_init()
263 dc->vmsd = &exynos4210_rng_vmstate; in exynos4210_rng_class_init()