sh: include empty zero page in romImage
authorMagnus Damm <damm@opensource.se>
Fri, 4 Dec 2009 06:42:35 +0000 (06:42 +0000)
committerPaul Mundt <lethal@linux-sh.org>
Fri, 4 Dec 2009 07:26:20 +0000 (16:26 +0900)
This patch updates the romImage code to include the
empty_zero_page contents from vmlinux. Without this
patch the empty zero page is lef uninitialized.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/boot/romimage/Makefile
arch/sh/boot/romimage/head.S

index 5806eee84f6f93daa4f357a978bf03d945190b16..f473a24a2d92e6e24b08ef26bdc1386f98c6335f 100644 (file)
@@ -4,16 +4,22 @@
 # create an image suitable for burning to flash from zImage
 #
 
-targets                := vmlinux head.o
+targets                := vmlinux head.o zeropage.bin piggy.o
 
 OBJECTS = $(obj)/head.o
-LDFLAGS_vmlinux := --oformat $(ld-bfd) -Ttext 0 -e romstart
+LDFLAGS_vmlinux := --oformat $(ld-bfd) -Ttext 0 -e romstart \
+                  -T $(obj)/../../kernel/vmlinux.lds
 
 $(obj)/vmlinux: $(OBJECTS) $(obj)/piggy.o FORCE
        $(call if_changed,ld)
        @:
 
+OBJCOPYFLAGS += -j .empty_zero_page
+
+$(obj)/zeropage.bin: vmlinux FORCE
+       $(call if_changed,objcopy)
+
 LDFLAGS_piggy.o := -r --format binary --oformat $(ld-bfd) -T
 
-$(obj)/piggy.o: $(obj)/vmlinux.scr arch/sh/boot/zImage FORCE
+$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/zeropage.bin arch/sh/boot/zImage FORCE
        $(call if_changed,ld)
index 219bc626dd7110514c06e1342c649ca6f4bb4d9e..93e779a405eca3bf17fbc50e6e6cea41f8963d48 100644 (file)
@@ -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: