We do need the unoptimized version of csrand_uniform() for high values of `n`, since the optimized version depends on having __int128, and it's not available on several platforms, including ARMv7, IA32, and MK68k. This reverts commit 848f53c1d3c1362c86d3baab6906e1e4419d2634; however, I applied some tweaks to the reverted commit. Reported-by: Adam Sampson <ats@offog.org> Cc: Iker Pedrosa <ipedrosa@redhat.com> Signed-off-by: Alejandro Colomar <alx@kernel.org>
		
			
				
	
	
		
			20 lines
		
	
	
		
			377 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			20 lines
		
	
	
		
			377 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * SPDX-FileCopyrightText:  2022 - 2023, Alejandro Colomar <alx@kernel.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier:  BSD-3-Clause
 | |
|  */
 | |
| 
 | |
| 
 | |
| #include <config.h>
 | |
| 
 | |
| #ident "$Id$"
 | |
| 
 | |
| #include "bit.h"
 | |
| 
 | |
| #include <limits.h>
 | |
| 
 | |
| 
 | |
| extern inline unsigned long bit_ceilul(unsigned long x);
 | |
| extern inline unsigned long bit_ceil_wrapul(unsigned long x);
 | |
| extern inline int leading_zerosul(unsigned long x);
 |