patch-2.4.23 linux-2.4.23/arch/sh/boot/compressed/head.S
Next file: linux-2.4.23/arch/sh/config.in
Previous file: linux-2.4.23/arch/sh/boot/compressed/Makefile
Back to the patch index
Back to the overall index
- Lines: 64
- Date:
2003-11-28 10:26:19.000000000 -0800
- Orig file:
linux-2.4.22/arch/sh/boot/compressed/head.S
- Orig date:
2001-01-28 18:56:00.000000000 -0800
diff -urN linux-2.4.22/arch/sh/boot/compressed/head.S linux-2.4.23/arch/sh/boot/compressed/head.S
@@ -2,6 +2,7 @@
* linux/arch/sh/boot/compressed/head.S
*
* Copyright (C) 1999 Stuart Menefy
+ * Copyright (C) 2003 SUGIOKA Toshinobu
*/
.text
@@ -14,7 +15,54 @@
mov.l init_sr, r1
ldc r1, sr
- /* First clear BSS */
+ /* Move myself to proper location if necessary */
+ mova 1f, r0
+ mov.l 1f, r2
+ cmp/eq r2, r0
+ bt clear_bss
+ sub r0, r2
+ mov.l bss_start_addr, r0
+ mov #0xe0, r1
+ and r1, r0 ! align cache line
+ mov.l text_start_addr, r3
+ mov r0, r1
+ sub r2, r1
+3:
+ mov.l @r1, r4
+ mov.l @(4,r1), r5
+ mov.l @(8,r1), r6
+ mov.l @(12,r1), r7
+ mov.l @(16,r1), r8
+ mov.l @(20,r1), r9
+ mov.l @(24,r1), r10
+ mov.l @(28,r1), r11
+ mov.l r4, @r0
+ mov.l r5, @(4,r0)
+ mov.l r6, @(8,r0)
+ mov.l r7, @(12,r0)
+ mov.l r8, @(16,r0)
+ mov.l r9, @(20,r0)
+ mov.l r10, @(24,r0)
+ mov.l r11, @(28,r0)
+#ifdef CONFIG_CPU_SH4
+ ocbwb @r0
+#endif
+ cmp/hi r3, r0
+ add #-32, r0
+ bt/s 3b
+ add #-32, r1
+ mov.l 2f, r0
+ jmp @r0
+ nop
+
+ .align 2
+1: .long 1b
+2: .long clear_bss
+text_start_addr:
+ .long startup
+
+ /* Clear BSS */
+clear_bss:
mov.l end_addr, r1
mov.l bss_start_addr, r2
mov #0, r0
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)