2009-07-29 23:04:05 +08:00
|
|
|
/*
|
|
|
|
* linux/arch/sh/boot/romimage/head.S
|
|
|
|
*
|
|
|
|
* Board specific setup code, executed before zImage loader
|
|
|
|
*/
|
|
|
|
|
|
|
|
.text
|
2009-12-04 14:42:35 +08:00
|
|
|
#include <asm/page.h>
|
|
|
|
|
2009-07-29 23:04:05 +08:00
|
|
|
.global romstart
|
|
|
|
romstart:
|
2009-12-04 14:42:35 +08:00
|
|
|
/* include board specific setup code */
|
2009-08-07 02:58:38 +08:00
|
|
|
#include <mach/romimage.h>
|
2009-12-04 14:42:35 +08:00
|
|
|
|
|
|
|
/* copy the empty_zero_page contents to where vmlinux expects it */
|
2010-05-18 22:42:40 +08:00
|
|
|
mova extra_data_pos, r0
|
|
|
|
mov.l extra_data_size, r1
|
|
|
|
add r1, r0
|
2009-12-04 14:42:35 +08:00
|
|
|
mov.l empty_zero_page_dst, r1
|
|
|
|
mov #(PAGE_SHIFT - 4), r4
|
|
|
|
mov #1, r3
|
|
|
|
shld r4, r3 /* r3 = PAGE_SIZE / 16 */
|
|
|
|
|
|
|
|
1:
|
|
|
|
mov.l @r0, r4
|
|
|
|
mov.l @(4, r0), r5
|
|
|
|
mov.l @(8, r0), r6
|
|
|
|
mov.l @(12, r0), r7
|
|
|
|
add #16,r0
|
|
|
|
mov.l r4, @r1
|
|
|
|
mov.l r5, @(4, r1)
|
|
|
|
mov.l r6, @(8, r1)
|
|
|
|
mov.l r7, @(12, r1)
|
|
|
|
dt r3
|
|
|
|
add #16,r1
|
|
|
|
bf 1b
|
|
|
|
|
|
|
|
/* jump to the zImage entry point located after the zero page data */
|
|
|
|
mov #PAGE_SHIFT, r4
|
|
|
|
mov #1, r1
|
|
|
|
shld r4, r1
|
2010-05-18 22:42:40 +08:00
|
|
|
mova extra_data_pos, r0
|
|
|
|
add r1, r0
|
|
|
|
mov.l extra_data_size, r1
|
2009-12-04 14:42:35 +08:00
|
|
|
add r1, r0
|
|
|
|
jmp @r0
|
|
|
|
nop
|
|
|
|
|
|
|
|
.align 2
|
|
|
|
empty_zero_page_dst:
|
|
|
|
.long _text
|
2010-05-18 22:42:40 +08:00
|
|
|
extra_data_pos:
|
|
|
|
extra_data_size:
|
|
|
|
.long zero_page_pos - extra_data_pos
|