annotate sources/patches/linux-fixsh4.patch @ 1817:92d542aa6ceb draft

Teach system-image.sh to handle its own dependencies, rebuilding kernel and repackaging cpio/squashfs as appropraite, and _not_ doing so when unneeded.
author Rob Landley <rob@landley.net>
date Sun, 22 Nov 2015 14:54:16 -0600
parents cc716bec3527
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
958
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
1 Revert the following patch, which breaks the sh4 target:
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
2
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
3 commit fea966f7564205fcf5919af9bde031e753419c96
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
4 Author: Stuart Menefy <stuart.menefy@st.com>
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
5 Date: Mon Aug 24 17:09:53 2009 +0900
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
6
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
7 sh: Remove implicit sign extension from assembler immediates
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
8
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
9 The SH instruction set has several instructions which accept an 8 bit
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
10 immediate operand. For logical instructions this operand is zero extended,
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
11 for arithmetic instructions the operand is sign extended. After adding an
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
12 option to the assembler to check this, it was found that several pieces
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
13 of assembly code were assuming this behaviour, and in one case
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
14 getting it wrong.
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
15
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
16 So this patch explicitly sign extends any immediate operands, which makes
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
17 it obvious what is happening, and fixes the one case which got it wrong.
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
18
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
19 Signed-off-by: Stuart Menefy <stuart.menefy@st.com>
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
20 Signed-off-by: Paul Mundt <lethal@linux-sh.org>
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
21 diff --git a/arch/sh/boot/compressed/head_32.S b/arch/sh/boot/compressed/head_32.S
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
22 index 02a3093..06ac31f 100644
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
23 --- a/arch/sh/boot/compressed/head_32.S
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
24 +++ b/arch/sh/boot/compressed/head_32.S
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
25 @@ -22,7 +22,7 @@ startup:
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
26 bt clear_bss
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
27 sub r0, r2
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
28 mov.l bss_start_addr, r0
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
29 - mov #0xffffffe0, r1
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
30 + mov #0xe0, r1
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
31 and r1, r0 ! align cache line
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
32 mov.l text_start_addr, r3
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
33 mov r0, r1
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
34 diff --git a/arch/sh/include/asm/entry-macros.S b/arch/sh/include/asm/entry-macros.S
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
35 index cc43a55..64fd0de 100644
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
36 --- a/arch/sh/include/asm/entry-macros.S
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
37 +++ b/arch/sh/include/asm/entry-macros.S
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
38 @@ -7,7 +7,7 @@
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
39 .endm
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
40
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
41 .macro sti
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
42 - mov #0xfffffff0, r11
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
43 + mov #0xf0, r11
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
44 extu.b r11, r11
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
45 not r11, r11
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
46 stc sr, r10
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
47 diff --git a/arch/sh/kernel/cpu/sh3/entry.S b/arch/sh/kernel/cpu/sh3/entry.S
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
48 index 9421ec7..8c19e21 100644
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
49 --- a/arch/sh/kernel/cpu/sh3/entry.S
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
50 +++ b/arch/sh/kernel/cpu/sh3/entry.S
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
51 @@ -257,7 +257,7 @@ restore_all:
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
52 !
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
53 ! Calculate new SR value
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
54 mov k3, k2 ! original SR value
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
55 - mov #0xfffffff0, k1
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
56 + mov #0xf0, k1
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
57 extu.b k1, k1
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
58 not k1, k1
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
59 and k1, k2 ! Mask original SR value
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
60 diff --git a/arch/sh/kernel/entry-common.S b/arch/sh/kernel/entry-common.S
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
61 index 68d9223..7004776 100644
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
62 --- a/arch/sh/kernel/entry-common.S
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
63 +++ b/arch/sh/kernel/entry-common.S
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
64 @@ -98,9 +98,8 @@ need_resched:
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
65
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
66 mov #OFF_SR, r0
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
67 mov.l @(r0,r15), r0 ! get status register
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
68 - shlr r0
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
69 - and #(0xf0>>1), r0 ! interrupts off (exception path)?
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
70 - cmp/eq #(0xf0>>1), r0
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
71 + and #0xf0, r0 ! interrupts off (exception path)?
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
72 + cmp/eq #0xf0, r0
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
73 bt noresched
1644
cc716bec3527 Linux 3.14 is out.
Rob Landley <rob@landley.net>
parents: 958
diff changeset
74 mov.l 1f, r0
958
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
75 jsr @r0 ! call preempt_schedule_irq
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
76 diff --git a/arch/sh/lib/clear_page.S b/arch/sh/lib/clear_page.S
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
77 index c92244d..8342bfb 100644
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
78 --- a/arch/sh/lib/__clear_user.S
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
79 +++ b/arch/sh/lib/__clear_user.S
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
80 @@ -57,7 +57,7 @@ ENTRY(clear_page)
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
81 ENTRY(__clear_user)
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
82 !
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
83 mov #0, r0
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
84 - mov #0xffffffe0, r1
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
85 + mov #0xe0, r1 ! 0xffffffe0
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
86 !
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
87 ! r4..(r4+31)&~32 -------- not aligned [ Area 0 ]
0581a13cadb3 Revert patch that breaks sh4 target in 2.6.32 kernel.
Rob Landley <rob@landley.net>
parents:
diff changeset
88 ! (r4+31)&~32..(r4+r5)&~32 -------- aligned [ Area 1 ]