19acf1ca5SMichael Walle /* 29acf1ca5SMichael Walle * Simple xorshift PRNG 39acf1ca5SMichael Walle * see http://www.jstatsoft.org/v08/i14/paper 49acf1ca5SMichael Walle * 59acf1ca5SMichael Walle * Copyright (c) 2012 Michael Walle 69acf1ca5SMichael Walle * Michael Walle <michael@walle.cc> 79acf1ca5SMichael Walle * 8*1a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 99acf1ca5SMichael Walle */ 109acf1ca5SMichael Walle 119acf1ca5SMichael Walle #include <common.h> 129acf1ca5SMichael Walle 139acf1ca5SMichael Walle static unsigned int y = 1U; 149acf1ca5SMichael Walle rand_r(unsigned int * seedp)159acf1ca5SMichael Walleunsigned int rand_r(unsigned int *seedp) 169acf1ca5SMichael Walle { 179acf1ca5SMichael Walle *seedp ^= (*seedp << 13); 189acf1ca5SMichael Walle *seedp ^= (*seedp >> 17); 199acf1ca5SMichael Walle *seedp ^= (*seedp << 5); 209acf1ca5SMichael Walle 219acf1ca5SMichael Walle return *seedp; 229acf1ca5SMichael Walle } 239acf1ca5SMichael Walle rand(void)249acf1ca5SMichael Walleunsigned int rand(void) 259acf1ca5SMichael Walle { 269acf1ca5SMichael Walle return rand_r(&y); 279acf1ca5SMichael Walle } 289acf1ca5SMichael Walle srand(unsigned int seed)299acf1ca5SMichael Wallevoid srand(unsigned int seed) 309acf1ca5SMichael Walle { 319acf1ca5SMichael Walle y = seed; 329acf1ca5SMichael Walle } 33