Explorar o código

sh: allow romImage data between head.S and the zero page

Extend the romImage code to allow putting data between
the head.S file and the empty_zero_page. Needed in the
case of more advanced loader code in a separate C file.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Magnus Damm %!s(int64=15) %!d(string=hai) anos
pai
achega
b34bce4553
Modificáronse 2 ficheiros con 10 adicións e 3 borrados
  1. 9 3
      arch/sh/boot/romimage/head.S
  2. 1 0
      arch/sh/boot/romimage/vmlinux.scr

+ 9 - 3
arch/sh/boot/romimage/head.S

@@ -13,7 +13,9 @@ romstart:
 #include <mach/romimage.h>
 
 	/* 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 +39,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 +49,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

+ 1 - 0
arch/sh/boot/romimage/vmlinux.scr

@@ -1,6 +1,7 @@
 SECTIONS
 {
   .text : {
+	zero_page_pos = .;
 	*(.data)
 	}
 }