 e9a43850e6
			
		
	
	
	e9a43850e6
	
	
	
		
			
			board_early_init() is left over from some early prototyping work where we had to initialize the SDRAM controller ourselves. This depends on the kernel being loaded into static RAM, which just isn't possible on any commercially available products today. In order to run without a boot loader, we need to create a zImage stub or have the debugger initialize the SDRAM for us (for really low-level debugging) Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			914 B
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			914 B
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /*
 | |
|  * Non-board-specific low-level startup code
 | |
|  *
 | |
|  * Copyright (C) 2004-2006 Atmel Corporation
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or modify
 | |
|  * it under the terms of the GNU General Public License version 2 as
 | |
|  * published by the Free Software Foundation.
 | |
|  */
 | |
| #include <linux/linkage.h>
 | |
| 
 | |
| #include <asm/page.h>
 | |
| #include <asm/thread_info.h>
 | |
| #include <asm/sysreg.h>
 | |
| 
 | |
| 	.section .init.text,"ax"
 | |
| 	.global kernel_entry
 | |
| kernel_entry:
 | |
| 	/* Initialize status register */
 | |
| 	lddpc   r0, init_sr
 | |
| 	mtsr	SYSREG_SR, r0
 | |
| 
 | |
| 	/* Set initial stack pointer */
 | |
| 	lddpc   sp, stack_addr
 | |
| 	sub	sp, -THREAD_SIZE
 | |
| 
 | |
| #ifdef CONFIG_FRAME_POINTER
 | |
| 	/* Mark last stack frame */
 | |
| 	mov	lr, 0
 | |
| 	mov	r7, 0
 | |
| #endif
 | |
| 
 | |
| 	/* Start the show */
 | |
| 	lddpc   pc, kernel_start_addr
 | |
| 
 | |
| 	.align  2
 | |
| init_sr:
 | |
| 	.long   0x007f0000	/* Supervisor mode, everything masked */
 | |
| stack_addr:
 | |
| 	.long   init_thread_union
 | |
| kernel_start_addr:
 | |
| 	.long   start_kernel
 |