diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-07 15:17:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-07 15:17:40 -0400 |
commit | 5b6b54982258c330247957a8d877b9851ac69d53 (patch) | |
tree | 567e4b3391e0c6689cf511789fb512ef7385c16f /arch/sh/kernel/process.c | |
parent | 35c74823cb382c610be908f1b92f980b84e7c37c (diff) | |
parent | 39374aadcd0159b4744ab456f4efa100bea84bd4 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6: (38 commits)
sh: R7785RP board updates.
sh: Update r7780rp defconfig.
sh: Add die chain notifiers.
sh: Fix APM emulation on hp6xx.
sh: Wire up more IRQs for SH7709.
sh: Solution Engine 7722 board support.
sh: Fix r7780rp build.
sh: kdump support.
sh: Move clock reporting to its own proc entry.
sh: Solution Engine SH7705 board and CPU updates.
serial: sh-sci: Fix module clock refcount for serial console.
serial: sh-sci: Fix module clock refcounting.
sh: SH7722 clock framework support.
sh: hp6xx pata_platform support.
sh: Obey CONFIG_HZ for HZ definition.
sh: Fix fstatat64() syscall.
sh: se7780 PCI support.
sh: SH7780 Solution Engine board support.
sh: Add a dummy SH-4 PCIC fixup.
sh: Tidy up L-BOX area5 addresses.
...
Diffstat (limited to 'arch/sh/kernel/process.c')
-rw-r--r-- | arch/sh/kernel/process.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/arch/sh/kernel/process.c b/arch/sh/kernel/process.c index e7607366ac4e..329b3f3051de 100644 --- a/arch/sh/kernel/process.c +++ b/arch/sh/kernel/process.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * | 7 | * |
8 | * SuperH version: Copyright (C) 1999, 2000 Niibe Yutaka & Kaz Kojima | 8 | * SuperH version: Copyright (C) 1999, 2000 Niibe Yutaka & Kaz Kojima |
9 | * Copyright (C) 2006 Lineo Solutions Inc. support SH4A UBC | 9 | * Copyright (C) 2006 Lineo Solutions Inc. support SH4A UBC |
10 | * Copyright (C) 2002 - 2006 Paul Mundt | 10 | * Copyright (C) 2002 - 2007 Paul Mundt |
11 | */ | 11 | */ |
12 | #include <linux/module.h> | 12 | #include <linux/module.h> |
13 | #include <linux/mm.h> | 13 | #include <linux/mm.h> |
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/pm.h> | 15 | #include <linux/pm.h> |
16 | #include <linux/kallsyms.h> | 16 | #include <linux/kallsyms.h> |
17 | #include <linux/kexec.h> | 17 | #include <linux/kexec.h> |
18 | #include <asm/kdebug.h> | ||
18 | #include <asm/uaccess.h> | 19 | #include <asm/uaccess.h> |
19 | #include <asm/mmu_context.h> | 20 | #include <asm/mmu_context.h> |
20 | #include <asm/ubc.h> | 21 | #include <asm/ubc.h> |
@@ -299,7 +300,8 @@ static void ubc_set_tracing(int asid, unsigned long pc) | |||
299 | ctrl_outl(0, UBC_BAMRA); | 300 | ctrl_outl(0, UBC_BAMRA); |
300 | 301 | ||
301 | if (current_cpu_data.type == CPU_SH7729 || | 302 | if (current_cpu_data.type == CPU_SH7729 || |
302 | current_cpu_data.type == CPU_SH7710) { | 303 | current_cpu_data.type == CPU_SH7710 || |
304 | current_cpu_data.type == CPU_SH7712) { | ||
303 | ctrl_outw(BBR_INST | BBR_READ | BBR_CPU, UBC_BBRA); | 305 | ctrl_outw(BBR_INST | BBR_READ | BBR_CPU, UBC_BBRA); |
304 | ctrl_outl(BRCR_PCBA | BRCR_PCTE, UBC_BRCR); | 306 | ctrl_outl(BRCR_PCBA | BRCR_PCTE, UBC_BRCR); |
305 | } else { | 307 | } else { |
@@ -495,6 +497,10 @@ asmlinkage void debug_trap_handler(unsigned long r4, unsigned long r5, | |||
495 | /* Rewind */ | 497 | /* Rewind */ |
496 | regs->pc -= 2; | 498 | regs->pc -= 2; |
497 | 499 | ||
500 | if (notify_die(DIE_TRAP, regs, regs->tra & 0xff, | ||
501 | SIGTRAP) == NOTIFY_STOP) | ||
502 | return; | ||
503 | |||
498 | force_sig(SIGTRAP, current); | 504 | force_sig(SIGTRAP, current); |
499 | } | 505 | } |
500 | 506 | ||
@@ -510,6 +516,10 @@ asmlinkage void bug_trap_handler(unsigned long r4, unsigned long r5, | |||
510 | /* Rewind */ | 516 | /* Rewind */ |
511 | regs->pc -= 2; | 517 | regs->pc -= 2; |
512 | 518 | ||
519 | if (notify_die(DIE_TRAP, regs, TRAPA_BUG_OPCODE & 0xff, | ||
520 | SIGTRAP) == NOTIFY_STOP) | ||
521 | return; | ||
522 | |||
513 | #ifdef CONFIG_BUG | 523 | #ifdef CONFIG_BUG |
514 | if (__kernel_text_address(instruction_pointer(regs))) { | 524 | if (__kernel_text_address(instruction_pointer(regs))) { |
515 | u16 insn = *(u16 *)instruction_pointer(regs); | 525 | u16 insn = *(u16 *)instruction_pointer(regs); |