mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 10:26:10 +01:00 
			
		
		
		
	mips: spl: Flush cache before jumping to U-Boot proper
This patch adds a MIPS specific jump_to_image_no_args() implementation, which flushes the U-Boot proper image loaded from the boot device in SPL before jumping to it. It has been noticed on MT76x8, that this cache flush is needed. Other MIPS platforms might need it as well. Signed-off-by: Stefan Roese <sr@denx.de> Cc: Weijie Gao <weijie.gao@mediatek.com> Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Cc: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com> Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 Daniel Schwierzeck
						Daniel Schwierzeck
					
				
			
			
				
	
			
			
			
						parent
						
							814a8916a9
						
					
				
				
					commit
					2a9d68e41f
				
			| @@ -12,5 +12,6 @@ obj-y	+= traps.o | |||||||
|  |  | ||||||
| obj-$(CONFIG_CMD_BOOTM) += bootm.o | obj-$(CONFIG_CMD_BOOTM) += bootm.o | ||||||
| obj-$(CONFIG_CMD_GO) += boot.o | obj-$(CONFIG_CMD_GO) += boot.o | ||||||
|  | obj-$(CONFIG_SPL_BUILD) += spl.o | ||||||
|  |  | ||||||
| lib-$(CONFIG_USE_PRIVATE_LIBGCC) += ashldi3.o ashrdi3.o lshrdi3.o | lib-$(CONFIG_USE_PRIVATE_LIBGCC) += ashldi3.o ashrdi3.o lshrdi3.o | ||||||
|   | |||||||
							
								
								
									
										21
									
								
								arch/mips/lib/spl.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								arch/mips/lib/spl.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | // SPDX-License-Identifier: GPL-2.0+ | ||||||
|  | /* | ||||||
|  |  * Copyright (C) 2020 Stefan Roese <sr@denx.de> | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #include <common.h> | ||||||
|  | #include <cpu_func.h> | ||||||
|  | #include <spl.h> | ||||||
|  |  | ||||||
|  | void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image) | ||||||
|  | { | ||||||
|  | 	typedef void __noreturn (*image_entry_noargs_t)(void); | ||||||
|  | 	image_entry_noargs_t image_entry = | ||||||
|  | 		(image_entry_noargs_t)spl_image->entry_point; | ||||||
|  |  | ||||||
|  | 	/* Flush cache before jumping to application */ | ||||||
|  | 	flush_cache((unsigned long)spl_image->load_addr, spl_image->size); | ||||||
|  |  | ||||||
|  | 	debug("image entry point: 0x%lx\n", spl_image->entry_point); | ||||||
|  | 	image_entry(); | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user