diff options
Diffstat (limited to 'arch/sh/kernel')
-rw-r--r-- | arch/sh/kernel/cpu/sh3/entry.S | 2 | ||||
-rw-r--r-- | arch/sh/kernel/entry-common.S | 5 |
2 files changed, 4 insertions, 3 deletions
diff --git a/arch/sh/kernel/cpu/sh3/entry.S b/arch/sh/kernel/cpu/sh3/entry.S index 8c19e21847d7..9421ec715fd2 100644 --- a/arch/sh/kernel/cpu/sh3/entry.S +++ b/arch/sh/kernel/cpu/sh3/entry.S | |||
@@ -257,7 +257,7 @@ restore_all: | |||
257 | ! | 257 | ! |
258 | ! Calculate new SR value | 258 | ! Calculate new SR value |
259 | mov k3, k2 ! original SR value | 259 | mov k3, k2 ! original SR value |
260 | mov #0xf0, k1 | 260 | mov #0xfffffff0, k1 |
261 | extu.b k1, k1 | 261 | extu.b k1, k1 |
262 | not k1, k1 | 262 | not k1, k1 |
263 | and k1, k2 ! Mask original SR value | 263 | and k1, k2 ! Mask original SR value |
diff --git a/arch/sh/kernel/entry-common.S b/arch/sh/kernel/entry-common.S index 700477601c6f..68d9223b145e 100644 --- a/arch/sh/kernel/entry-common.S +++ b/arch/sh/kernel/entry-common.S | |||
@@ -98,8 +98,9 @@ need_resched: | |||
98 | 98 | ||
99 | mov #OFF_SR, r0 | 99 | mov #OFF_SR, r0 |
100 | mov.l @(r0,r15), r0 ! get status register | 100 | mov.l @(r0,r15), r0 ! get status register |
101 | and #0xf0, r0 ! interrupts off (exception path)? | 101 | shlr r0 |
102 | cmp/eq #0xf0, r0 | 102 | and #(0xf0>>1), r0 ! interrupts off (exception path)? |
103 | cmp/eq #(0xf0>>1), r0 | ||
103 | bt noresched | 104 | bt noresched |
104 | mov.l 3f, r0 | 105 | mov.l 3f, r0 |
105 | jsr @r0 ! call preempt_schedule_irq | 106 | jsr @r0 ! call preempt_schedule_irq |