lib/thread: Add asserts around stack size and alignment
`cpu_info()` requires that stacks be STACK_SIZE aligned and a power of 2. BUG=b:179699789 TEST=Boot guybrush to the OS Signed-off-by: Raul E Rangel <rrangel@chromium.org> Change-Id: I615623f05bfbe2861dcefe5cae66899aec306ba2 Reviewed-on: https://review.coreboot.org/c/coreboot/+/56530 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
		
				
					committed by
					
						
						Werner Zeh
					
				
			
			
				
	
			
			
			
						parent
						
							8c892070e9
						
					
				
				
					commit
					9adf4a6656
				
			@@ -11,6 +11,10 @@
 | 
			
		||||
#include <thread.h>
 | 
			
		||||
#include <timer.h>
 | 
			
		||||
 | 
			
		||||
/* Can't use the IS_POWER_OF_2 in _Static_assert */
 | 
			
		||||
_Static_assert((CONFIG_STACK_SIZE & (CONFIG_STACK_SIZE - 1)) == 0,
 | 
			
		||||
	       "`cpu_info()` requires the stack size to be a power of 2");
 | 
			
		||||
 | 
			
		||||
static bool initialized;
 | 
			
		||||
 | 
			
		||||
static void idle_thread_init(void);
 | 
			
		||||
@@ -257,6 +261,9 @@ void threads_initialize(void)
 | 
			
		||||
 | 
			
		||||
	thread_stacks = arch_get_thread_stackbase();
 | 
			
		||||
 | 
			
		||||
	/* `cpu_info()` requires the stacks to be STACK_SIZE aligned */
 | 
			
		||||
	assert(IS_ALIGNED((uintptr_t)thread_stacks, CONFIG_STACK_SIZE));
 | 
			
		||||
 | 
			
		||||
	/* Initialize the BSP thread first. The cpu_info structure is assumed
 | 
			
		||||
	 * to be just under the top of the stack. */
 | 
			
		||||
	t = &all_threads[0];
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user