From 27aff2dea35fdfc9ac62c717659ea39e5058bd23 Mon Sep 17 00:00:00 2001 From: Sonic Zhang Date: Wed, 17 Nov 2010 06:19:28 +0000 Subject: [PATCH] --- yaml --- r: 228455 b: refs/heads/master c: 900de05182d520ff66378e74a7b18f7d9971a32d h: refs/heads/master i: 228453: 2fe78075d99b54fc5933fb80e9e947a92b9cbb3e 228451: 7eb9006556f3c1a6b5abd4c03f029e63c7248d39 228447: db70a71b8db5c24f6a21bd064c585d7d288cf7e0 v: v3 --- [refs] | 2 +- trunk/arch/blackfin/kernel/kgdb.c | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 630c74e01214..dcddf53b53a8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 84e97c1014a2afe1a07beb1b6de5f2d867b368fd +refs/heads/master: 900de05182d520ff66378e74a7b18f7d9971a32d diff --git a/trunk/arch/blackfin/kernel/kgdb.c b/trunk/arch/blackfin/kernel/kgdb.c index edae461b1c54..e89ef34f744f 100644 --- a/trunk/arch/blackfin/kernel/kgdb.c +++ b/trunk/arch/blackfin/kernel/kgdb.c @@ -345,6 +345,18 @@ void kgdb_roundup_cpu(int cpu, unsigned long flags) } #endif +#ifdef CONFIG_IPIPE +static unsigned long kgdb_arch_imask; + +void kgdb_post_primary_code(struct pt_regs *regs, int e_vector, int err_code) +{ + if (kgdb_arch_imask) { + cpu_pda[raw_smp_processor_id()].ex_imask = kgdb_arch_imask; + kgdb_arch_imask = 0; + } +} +#endif + int kgdb_arch_handle_exception(int vector, int signo, int err_code, char *remcom_in_buffer, char *remcom_out_buffer, @@ -388,6 +400,11 @@ int kgdb_arch_handle_exception(int vector, int signo, * kgdb_single_step > 0 means in single step mode */ kgdb_single_step = i + 1; + +#ifdef CONFIG_IPIPE + kgdb_arch_imask = cpu_pda[raw_smp_processor_id()].ex_imask; + cpu_pda[raw_smp_processor_id()].ex_imask = 0; +#endif } bfin_correct_hw_break(); @@ -448,6 +465,9 @@ void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long ip) int kgdb_arch_init(void) { kgdb_single_step = 0; +#ifdef CONFIG_IPIPE + kgdb_arch_imask = 0; +#endif bfin_remove_all_hw_break(); return 0;