]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - arch/sh/boot/romimage/head.S
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[net-next-2.6.git] / arch / sh / boot / romimage / head.S
index 93e779a405eca3bf17fbc50e6e6cea41f8963d48..4671d1b82150f6aa077854ddd69b13b52738a8d7 100644 (file)
@@ -12,8 +12,40 @@ romstart:
        /* include board specific setup code */
 #include <mach/romimage.h>
 
+#ifdef CONFIG_ROMIMAGE_MMCIF
+       /* load the romImage to above the empty zero page */
+       mov.l   empty_zero_page_dst, r4
+       mov.l   empty_zero_page_dst_adj, r5
+       add     r5, r4
+       mov.l   bytes_to_load, r5
+       mov.l   loader_function, r7
+       jsr     @r7
+        mov    r4, r15
+
+       mov.l   empty_zero_page_dst, r4
+       mov.l   empty_zero_page_dst_adj, r5
+       add     r5, r4
+       mov.l   loaded_code_offs, r5
+       add     r5, r4
+       jmp     @r4
+        nop
+
+       .balign 4
+empty_zero_page_dst_adj:
+       .long   PAGE_SIZE
+bytes_to_load:
+       .long   end_data - romstart
+loader_function:
+       .long   mmcif_loader
+loaded_code_offs:
+       .long   loaded_code - romstart
+loaded_code:
+#endif /* CONFIG_ROMIMAGE_MMCIF */
+
        /* copy the empty_zero_page contents to where vmlinux expects it */
-       mova    empty_zero_page_src, r0
+       mova    extra_data_pos, r0
+       mov.l   extra_data_size, r1
+       add     r1, r0
        mov.l   empty_zero_page_dst, r1
        mov     #(PAGE_SHIFT - 4), r4
        mov     #1, r3
@@ -37,7 +69,9 @@ romstart:
        mov     #PAGE_SHIFT, r4
        mov     #1, r1
        shld    r4, r1
-       mova    empty_zero_page_src, r0
+       mova    extra_data_pos, r0
+       add     r1, r0
+       mov.l   extra_data_size, r1
        add     r1, r0
        jmp     @r0
         nop
@@ -45,4 +79,6 @@ romstart:
        .align 2
 empty_zero_page_dst:
        .long   _text
-empty_zero_page_src:
+extra_data_pos:
+extra_data_size:
+       .long   zero_page_pos - extra_data_pos