43 lines
		
	
	
	
		
			914 B
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
		
		
			
		
	
	
			43 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
 |