mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	Similar to the lzma-loader on our MIPS targets, the spi-loader acts as a second-stage loader that will then load and start the actual kernel. As the TL-WDR4900 uses SPI-NOR and the P1010 family does not have support for memory mapping of this type of flash, this loader needs to contain a basic driver for the FSL ESPI controller. Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
		
			
				
	
	
		
			37 lines
		
	
	
		
			684 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			684 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0-or-later */
 | 
						|
/*
 | 
						|
 * Copyright (C) 2022 Matthias Schiffer <mschiffer@universe-factory.net>
 | 
						|
 *
 | 
						|
 * Based on Linux arch/powerpc/boot/crt0.S, which is:
 | 
						|
 *
 | 
						|
 * Copyright (C) Paul Mackerras 1997.
 | 
						|
 */
 | 
						|
 | 
						|
#include <ppc_asm.h>
 | 
						|
 | 
						|
	.text
 | 
						|
	.global _start
 | 
						|
_start:
 | 
						|
	/* Do a cache flush for our text, in case the loader didn't */
 | 
						|
	lis	r3,_text_start@ha
 | 
						|
	addi	r3,r3,_text_start@l
 | 
						|
	li	r4,_text_len
 | 
						|
	bl	flush_cache
 | 
						|
 | 
						|
	/* Clear the BSS */
 | 
						|
	lis	r3,_bss_start@ha
 | 
						|
	addi	r3,r3,_bss_start@l
 | 
						|
	li	r4,0
 | 
						|
	li	r5,_bss_len
 | 
						|
	bl	memset
 | 
						|
 | 
						|
	/* Set up stack */
 | 
						|
	lis	r1,_stack_top@ha
 | 
						|
	addi	r1,r1,_stack_top@l
 | 
						|
	/* Establish a stack frame */
 | 
						|
	li	r0,0
 | 
						|
	stwu	r0,-16(r1)
 | 
						|
 | 
						|
	/* Call start */
 | 
						|
	b	start
 |