]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/blackfin/kernel/kgdb.c
Merge branches 'irq-core-for-linus' and 'core-locking-for-linus' of git://git.kernel...
[karo-tx-linux.git] / arch / blackfin / kernel / kgdb.c
index 2c501ceb1e557e4bc25a57d6ea611cb7806b06a5..edae461b1c545d4f02e3c91ac664ec55012b9c4c 100644 (file)
@@ -66,7 +66,7 @@ void pt_regs_to_gdb_regs(unsigned long *gdb_regs, struct pt_regs *regs)
        gdb_regs[BFIN_RETN] = regs->retn;
        gdb_regs[BFIN_RETE] = regs->rete;
        gdb_regs[BFIN_PC] = regs->pc;
-       gdb_regs[BFIN_CC] = 0;
+       gdb_regs[BFIN_CC] = (regs->astat >> 5) & 1;
        gdb_regs[BFIN_EXTRA1] = 0;
        gdb_regs[BFIN_EXTRA2] = 0;
        gdb_regs[BFIN_EXTRA3] = 0;
@@ -320,7 +320,7 @@ static void bfin_correct_hw_break(void)
        }
 }
 
-void kgdb_disable_hw_debug(struct pt_regs *regs)
+static void bfin_disable_hw_debug(struct pt_regs *regs)
 {
        /* Disable hardware debugging while we are in kgdb */
        bfin_write_WPIACTL(0);
@@ -406,6 +406,7 @@ struct kgdb_arch arch_kgdb_ops = {
 #endif
        .set_hw_breakpoint = bfin_set_hw_break,
        .remove_hw_breakpoint = bfin_remove_hw_break,
+       .disable_hw_break = bfin_disable_hw_debug,
        .remove_all_hw_break = bfin_remove_all_hw_break,
        .correct_hw_break = bfin_correct_hw_break,
 };
@@ -439,6 +440,11 @@ int kgdb_validate_break_address(unsigned long addr)
        return -EFAULT;
 }
 
+void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long ip)
+{
+       regs->retx = ip;
+}
+
 int kgdb_arch_init(void)
 {
        kgdb_single_step = 0;