summaryrefslogtreecommitdiff
path: root/arch/sh/boot/romimage/head.S
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2009-12-11 18:57:42 (GMT)
committerH. Peter Anvin <hpa@zytor.com>2009-12-11 18:57:42 (GMT)
commit5c6baba84e1ac6a79b266b40e17e692aab6604a1 (patch)
tree6ba34db1109107023d753dd9fd5c359b3b990a04 /arch/sh/boot/romimage/head.S
parent893f38d144a4d96d2483cd7c3801d26e1b2c23e9 (diff)
parent3ef884b4c04e857c283cc77ca70ad8f638d94b0e (diff)
downloadlinux-fsl-qoriq-5c6baba84e1ac6a79b266b40e17e692aab6604a1.tar.xz
Merge commit 'linus/master' into x86/urgent
Diffstat (limited to 'arch/sh/boot/romimage/head.S')
-rw-r--r--arch/sh/boot/romimage/head.S38
1 files changed, 38 insertions, 0 deletions
diff --git a/arch/sh/boot/romimage/head.S b/arch/sh/boot/romimage/head.S
index 219bc62..93e779a 100644
--- a/arch/sh/boot/romimage/head.S
+++ b/arch/sh/boot/romimage/head.S
@@ -5,6 +5,44 @@
*/
.text
+ #include <asm/page.h>
+
.global romstart
romstart:
+ /* include board specific setup code */
#include <mach/romimage.h>
+
+ /* copy the empty_zero_page contents to where vmlinux expects it */
+ mova empty_zero_page_src, r0
+ 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
+ mova empty_zero_page_src, r0
+ add r1, r0
+ jmp @r0
+ nop
+
+ .align 2
+empty_zero_page_dst:
+ .long _text
+empty_zero_page_src: