/*
 * 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

	/* Set up the PIO, SDRAM controller, early printk, etc. */
	rcall	board_early_init

	/* 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
