1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /*
- * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
- * Copyright (C) 2007-2009 PetaLogix
- * Copyright (C) 2006 Atmark Techno, Inc.
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- */
- #include <linux/linkage.h>
- #include <asm/thread_info.h>
- #include <asm/page.h>
- .text
- ENTRY(_start)
- mfs r1, rmsr
- andi r1, r1, ~2
- mts rmsr, r1
- /* save fdt to kernel location */
- /* r7 stores pointer to fdt blob */
- beqi r7, no_fdt_arg
- or r11, r0, r0 /* incremment */
- ori r4, r0, TOPHYS(_fdt_start) /* save bram context */
- ori r3, r0, (0x4000 - 4)
- _copy_fdt:
- lw r12, r7, r11 /* r12 = r7 + r11 */
- sw r12, r4, r11 /* addr[r4 + r11] = r12 */
- addik r11, r11, 4 /* increment counting */
- bgtid r3, _copy_fdt /* loop for all entries */
- addik r3, r3, -4 /* descrement loop */
- no_fdt_arg:
- /* Initialize small data anchors */
- la r13, r0, _KERNEL_SDA_BASE_
- la r2, r0, _KERNEL_SDA2_BASE_
- /* Initialize stack pointer */
- la r1, r0, init_thread_union + THREAD_SIZE - 4
- /* Initialize r31 with current task address */
- la r31, r0, init_task
- /*
- * Call platform dependent initialize function.
- * Please see $(ARCH)/mach-$(SUBARCH)/setup.c for
- * the function.
- */
- la r8, r0, machine_early_init
- brald r15, r8
- nop
- la r15, r0, machine_halt
- braid start_kernel
- nop
|