Lines Matching +full:single +full:- +full:tt
1 // SPDX-License-Identifier: GPL-2.0-only
7 * Copyright (C) 2004-2006 MontaVista Software, Inc.
11 * Copyright (C) 2007-2008 Wind River Systems, Inc.
24 #include <asm/code-patching.h>
31 * don't always agree on values, so we use constants taken from gdb-6.2.
35 unsigned int tt; /* Trap type code for powerpc */ member
68 { 0x0d00, 0x05 /* SIGTRAP */ }, /* single-step */
92 static int computeSignal(unsigned int tt) in computeSignal() argument
96 for (ht = hard_trap_info; ht->tt && ht->signo; ht++) in computeSignal()
97 if (ht->tt == tt) in computeSignal()
98 return ht->signo; in computeSignal()
105 * kgdb_skipexception - Bail out of KGDB when we've been triggered.
115 return kgdb_isremovedbreak(regs->nip); in kgdb_skipexception()
146 if (*(u32 *)regs->nip == BREAK_INSTR) in kgdb_handle_breakpoint()
193 struct pt_regs *regs = (struct pt_regs *)(p->thread.ksp + in sleeping_thread_to_gdb_regs()
200 /* Regs GPR0-2 */ in sleeping_thread_to_gdb_regs()
202 PACK64(ptr, regs->gpr[reg]); in sleeping_thread_to_gdb_regs()
204 /* Regs GPR3-13 are caller saved, not in regs->gpr[] */ in sleeping_thread_to_gdb_regs()
207 /* Regs GPR14-31 */ in sleeping_thread_to_gdb_regs()
209 PACK64(ptr, regs->gpr[reg]); in sleeping_thread_to_gdb_regs()
214 PACK64(ptr, p->thread.evr[reg]); in sleeping_thread_to_gdb_regs()
223 PACK64(ptr, regs->nip); in sleeping_thread_to_gdb_regs()
224 PACK64(ptr, regs->msr); in sleeping_thread_to_gdb_regs()
225 PACK32(ptr, regs->ccr); in sleeping_thread_to_gdb_regs()
226 PACK64(ptr, regs->link); in sleeping_thread_to_gdb_regs()
227 PACK64(ptr, regs->ctr); in sleeping_thread_to_gdb_regs()
228 PACK32(ptr, regs->xer); in sleeping_thread_to_gdb_regs()
325 /* First 0 -> 31 gpr registers*/ in dbg_get_reg()
326 /* pc, msr, ls... registers 64 -> 69 */ in dbg_get_reg()
331 /* FP registers 32 -> 63 */ in dbg_get_reg()
334 memcpy(mem, ¤t->thread.evr[regno-32], in dbg_get_reg()
348 return -EINVAL; in dbg_set_reg()
351 /* First 0 -> 31 gpr registers*/ in dbg_set_reg()
352 /* pc, msr, ls... registers 64 -> 69 */ in dbg_set_reg()
357 /* FP registers 32 -> 63 */ in dbg_set_reg()
359 memcpy(¤t->thread.evr[regno-32], mem, in dbg_set_reg()
396 atomic_set(&kgdb_cpu_doing_single_step, -1); in kgdb_arch_handle_exception()
402 regs_set_return_msr(linux_regs, linux_regs->msr | MSR_DE); in kgdb_arch_handle_exception()
404 regs_set_return_msr(linux_regs, linux_regs->msr | MSR_SE); in kgdb_arch_handle_exception()
412 return -1; in kgdb_arch_handle_exception()
417 u32 instr, *addr = (u32 *)bpt->bpt_addr; in kgdb_arch_set_breakpoint()
426 return -EFAULT; in kgdb_arch_set_breakpoint()
428 *(u32 *)bpt->saved_instr = instr; in kgdb_arch_set_breakpoint()
436 unsigned int instr = *(unsigned int *)bpt->saved_instr; in kgdb_arch_remove_breakpoint()
437 u32 *addr = (u32 *)bpt->bpt_addr; in kgdb_arch_remove_breakpoint()
441 return -EFAULT; in kgdb_arch_remove_breakpoint()