lkml.org 
[lkml]   [2010]   [Feb]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 05/28] kgdb,sh: update superh kgdb exception handling
    Date
    Implement kgdb_arch_pc() which adjusts the pc if it needs to be
    adjusted after a software breakpoint trap.

    Implement kgdb_arch_set_pc() which is a new required function in the
    kgdb debug core.

    When processing a single step return zero in the error exception field
    so that the debug core can distinguish between a single step trap and
    a breakpoint trap generically.

    Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
    Acked-by: Paul Mundt <lethal@linux-sh.org>
    ---
    arch/sh/kernel/kgdb.c | 14 +++++++++++++-
    1 files changed, 13 insertions(+), 1 deletions(-)

    diff --git a/arch/sh/kernel/kgdb.c b/arch/sh/kernel/kgdb.c
    index 3e532d0..1ec03c9 100644
    --- a/arch/sh/kernel/kgdb.c
    +++ b/arch/sh/kernel/kgdb.c
    @@ -237,6 +237,18 @@ int kgdb_arch_handle_exception(int e_vector, int signo, int err_code,
    return -1;
    }

    +unsigned long kgdb_arch_pc(int exception, struct pt_regs *regs)
    +{
    + if (exception == 60)
    + return instruction_pointer(regs) - 2;
    + return instruction_pointer(regs);
    +}
    +
    +void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long ip)
    +{
    + regs->pc = ip;
    +}
    +
    /*
    * The primary entry points for the kgdb debug trap table entries.
    */
    @@ -247,7 +259,7 @@ BUILD_TRAP_HANDLER(singlestep)

    local_irq_save(flags);
    regs->pc -= instruction_size(__raw_readw(regs->pc - 4));
    - kgdb_handle_exception(vec >> 2, SIGTRAP, 0, regs);
    + kgdb_handle_exception(0, SIGTRAP, 0, regs);
    local_irq_restore(flags);
    }

    --
    1.6.4.rc1


    \
     
     \ /
      Last update: 2010-02-25 22:25    [W:4.088 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site