1/* 2 * Non-board-specific low-level startup code 3 * 4 * Copyright (C) 2004-2006 Atmel Corporation 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 */ 10#include <linux/linkage.h> 11 12#include <asm/page.h> 13#include <asm/thread_info.h> 14#include <asm/sysreg.h> 15 16 .section .init.text,"ax" 17 .global kernel_entry 18kernel_entry: 19 /* Initialize status register */ 20 lddpc r0, init_sr 21 mtsr SYSREG_SR, r0 22 23 /* Set initial stack pointer */ 24 lddpc sp, stack_addr 25 sub sp, -THREAD_SIZE 26 27#ifdef CONFIG_FRAME_POINTER 28 /* Mark last stack frame */ 29 mov lr, 0 30 mov r7, 0 31#endif 32 33 /* Start the show */ 34 lddpc pc, kernel_start_addr 35 36 .align 2 37init_sr: 38 .long 0x007f0000 /* Supervisor mode, everything masked */ 39stack_addr: 40 .long init_thread_union 41kernel_start_addr: 42 .long start_kernel 43