Mercurial > hg > aboriginal
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 |
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 | 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 ] |