/*
 * Startup code for use with the u-boot bootloader.
 *
 * 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 <asm/setup.h>
#include <asm/thread_info.h>
#include <asm/sysreg.h>

	/*
	 * The kernel is loaded where we want it to be and all caches
	 * have just been flushed. We get two parameters from u-boot:
	 *
	 * r12 contains a magic number (ATAG_MAGIC)
	 * r11 points to a tag table providing information about
	 *     the system.
	 */
	.section .init.text,"ax"
	.global _start
_start:
	/* Initialize .bss */
	lddpc	r2, bss_start_addr
	lddpc   r3, end_addr
	mov	r0, 0
	mov	r1, 0
1:      st.d    r2++, r0
	cp      r2, r3
	brlo    1b

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

	/* Check if the boot loader actually provided a tag table */
	lddpc	r0, magic_number
	cp.w	r12, r0
	brne	no_tag_table

	/*
	 * Save the tag table address for later use. This must be done
	 * _after_ .bss has been initialized...
	 */
	lddpc	r0, tag_table_addr
	st.w	r0[0], r11

	/* Jump to loader-independent setup code */
	rjmp	kernel_entry

	.align	2
magic_number:
	.long	ATAG_MAGIC
tag_table_addr:
	.long	bootloader_tags
bss_start_addr:
	.long   __bss_start
end_addr:
	.long   _end
init_sr:
	.long	0x007f0000	/* Supervisor mode, everything masked */
stack_addr:
	.long	init_thread_union
panic_addr:
	.long	panic

no_tag_table:
	sub	r12, pc, (. - 2f)
	/* branch to panic() which can be far away with that construct */
	lddpc	pc, panic_addr
2:	.asciz	"Boot loader didn't provide correct magic number\n"
