[U-Boot] [PATCH V2 2/3] lib: rand: add call to hw_rand() - hardware random number generator

Tom Rini
2014-03-05T21:22:06Z

On Wed, Mar 05, 2014 at 05:57:46PM +0100, Przemyslaw Marczak wrote:

> Changes:
> - lib/rand.c: add call to hw_rand() (depends on CONFIG_RAND_HW_ACCEL)
> - include/common.h: add hw_rand() declaration.
>
> Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
> cc: Michael Walle <michael@walle.cc>
> cc: Tom Rini <trini@ti.com>
> ---
> Changes v2:
> - move function hw_rand() from rand() to rand_r() and ignore its argument
>
> include/common.h | 3 +++
> lib/rand.c | 3 +++
> 2 files changed, 6 insertions(+)
>
> diff --git a/include/common.h b/include/common.h
> index 96a45a6..58e2fbc 100644
> --- a/include/common.h
> +++ b/include/common.h
> @@ -836,6 +836,9 @@ void srand(unsigned int seed);
> unsigned int rand(void);
> unsigned int rand_r(unsigned int *seedp);
> #endif
> +#ifdef CONFIG_RAND_HW_ACCEL
> +unsigned int hw_rand(void);
> +#endif
>
> /* common/console.c */
> int console_init_f(void); /* Before relocation; uses the serial stuff */
> diff --git a/lib/rand.c b/lib/rand.c
> index 5c367e1..0617063 100644
> --- a/lib/rand.c
> +++ b/lib/rand.c
> @@ -14,6 +14,9 @@ static unsigned int y = 1U;
>
> unsigned int rand_r(unsigned int *seedp)
> {
> +#ifdef CONFIG_RAND_HW_ACCEL
> + return hw_rand();
> +#endif
> *seedp ^= (*seedp << 13);
> *seedp ^= (*seedp >> 17);
> *seedp ^= (*seedp << 5);

This doesn't already generate warnings about unreachable code?

I hate to say@but I think we should add lib/hw_rand.c which does:
void srand(uint seed) {}
unsigned int rand(void) { return hw_rand(); }
unsigned int rand_r(unsigned int *seedp) { seedp = hw_rand(); return
*seedp;}

(please double check how hw_rand() returns and net/link_local.c if we
can really avoid using the callers pointer...).

And then in correct Kbuild fashion, something like
randsrc-y ?= rand.o
randsrc-$(CONFIG_RAND_HW_ACCEL) = hw_rand.o

(The above is probably wrong, help please Masahiro :))

--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140305/2d6b255a/attachment.pgp>