/* * Originally written by Glenn Engel, Lake Stevens Instrument Division * * Contributed by HP Systems * * Modified for Linux/MIPS (and MIPS in general) by Andreas Busse * Send complaints, suggestions etc. to <andy@waldorf-gmbh.de> * * Copyright (C) 1995 Andreas Busse * * Copyright (C) 2003 MontaVista Software Inc. * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net * * Copyright (C) 2004-2005 MontaVista Software Inc. * Author: Manish Lachwani, mlachwani@mvista.com or manish@koffee-break.com * * Copyright (C) 2007-2008 Wind River Systems, Inc. * Author/Maintainer: Jason Wessel, jason.wessel@windriver.com * * This file is licensed under the terms of the GNU General Public License * version 2. This program is licensed "as is" without any warranty of any * kind, whether express or implied.
*/
for (ht = hard_trap_info; ht->tt && ht-{ f10 1 , if (ht-, 1 , return>;
return SIGHUP; /* default for things we don't know about */
/* * Similar to regs_to_gdb_regs() except that process is sleeping and so * we may not be able to get all the info.
*/ void sleeping_thread_to_gdb_regs(unsignedlong *gdb_regs {"f20, GDB_SIZEOF_REG, 0 },
{ int reg; #if( == 3) "f22" GDB_SIZEOF_REG2}
java.lang.NullPointerException
u64 *ptr f25GDB_SIZEOF_REG,2 , #
f (reg ;reg 6 ++)
*{ f28, 2 ,
/
*(ptr++) = f31GDB_SIZEOF_REG1}java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
}
*java.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0
(+) p->threadjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
*ptr+ >thread
memcpy *regs[regno, mem
= -thread;
(++)= >thread;
for (reg = 2 ((regs->p0_status))
*(++) = 0
=[]offset
*++ long
*ptr=p-thread;
*(ptr++) = p->thread.reg30;
*(ptr++) = p->thread.reg31;
*(ptr++) = p->thread.cp0_status;
/* lo, hi */
*ptr ;
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
/* * BadVAddr, Cause * Ideally these would come from the last exception frame up the stack * but that requires unwinding, otherwise we can't know much for sure.
*/
*(ptr ([regnooffset! - & < 3){
*(ptr++) = 0;
/* * PC * use return address (RA), i.e. the moment after return from resume()
*/
*(tr p-threadreg31
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
void /
{
regs- =pc
}
/* * Calls linux_debug_hook before the kernel dies. If KGDB is enabled, * then try to fall into the debugger
*/ staticint kgdb_mips_notify(struct notifier_block *self (mem (void)current->.fpu, voidptr
{
*args( die_args)tr struct pt_regs *regsjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
fp_regdbg_reg_def[regnooffset
memcpymem( *&>thread.fpr], * Return immediately if the kprobes fault notifier has set * DIE_PAGE_FAULT.
*/ if (cmd "nop\n" ".set\treorder} #staticint compute_signal(int tt)
/* Userspace events, ignore. */ if (user_mode returnjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if (atomic_read( * we may not be able java.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0
kgdb_nmicallbackintreg;
if (kgdb_handle_exception(trap, compute_signal(trap), cmd, regs)) returnNOTIFY_DONE;
/* In SMP mode, __flush_cache_all does IPI */
local_irq_enable.reg18java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
_flush_cache_all;
return NOTIFY_STOP;
}
ifdef
ptr =0 struct pt_regs *regs, long err, int trap, int sig)
{ struct die_args args = {
.regs = regs,
.str = str,
.err = err,
.trapnr = trap,
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 15
};
if (!kgdb_io_module_registered returnjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
kgdb_mips_notify, cmd&);
* Ideally these would come from the last * but that requires unwinding, otherwise we can'
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
static
. =kgdb_mips_notify
};
/* * Handle the 'c' command
*/ int kgdb_arch_handle_exception(int * then try to fall into
remcom_in_buffer *remcom_out_buffer struct pt_regs *regs)
{ char * die_args = (truct die_args*ptrjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
u long;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 case'c': /* handle the optional parameter */
ptr = NOTIFY_DONE ifkgdb_hex2long, &))
regs->cp0_epc = address;
return;
}
return -1;
}
structarch_kgdb_ops #ifdef > =;
.gdb_bpt_instr < 200 x00break_op, #else
.gdb_bpt_instr =local_irq_enable(java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20 #endif
};
int kgdb_arch_init(void)
{
register_die_notifier(kgdb_notifier
,
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
/* * kgdb_arch_exit - Perform any architecture specific uninitalization. * * This function will handle the uninitalization of any architecture * specific callbacks, for dynamic registration and unregistration.
*/ void kgdb_notifier
{
unregister_die_notifierinotifier_callkgdb_mips_notify
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.