add a "mach sir" command to call sir instruction ('software initiated

reset').  this is a much more drastic way to do "mach prom", but it
works when used from cpu>0, which "mach prom" currently does not.
This commit is contained in:
mrg 2006-10-21 03:16:05 +00:00
parent 815337c3da
commit 877957f469
1 changed files with 11 additions and 2 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: db_interface.c,v 1.92 2006/10/16 21:57:10 martin Exp $ */ /* $NetBSD: db_interface.c,v 1.93 2006/10/21 03:16:05 mrg Exp $ */
/* /*
* Copyright (c) 1996-2002 Eduardo Horvath. All rights reserved. * Copyright (c) 1996-2002 Eduardo Horvath. All rights reserved.
@ -34,7 +34,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.92 2006/10/16 21:57:10 martin Exp $"); __KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.93 2006/10/21 03:16:05 mrg Exp $");
#include "opt_ddb.h" #include "opt_ddb.h"
@ -291,6 +291,7 @@ void db_traptrace(db_expr_t, int, db_expr_t, const char *);
void db_watch(db_expr_t, int, db_expr_t, const char *); void db_watch(db_expr_t, int, db_expr_t, const char *);
void db_pm_extract(db_expr_t, int, db_expr_t, const char *); void db_pm_extract(db_expr_t, int, db_expr_t, const char *);
void db_cpu_cmd(db_expr_t, int, db_expr_t, const char *); void db_cpu_cmd(db_expr_t, int, db_expr_t, const char *);
void db_sir_cmd(db_expr_t, int, db_expr_t, const char *);
#ifdef DDB #ifdef DDB
static void db_dump_pmap(struct pmap *); static void db_dump_pmap(struct pmap *);
@ -1230,6 +1231,13 @@ db_cpu_cmd(db_expr_t addr, int have_addr, db_expr_t count, const char *modif)
#endif #endif
} }
void
db_sir_cmd(db_expr_t addr, int have_addr, db_expr_t count, const char *modif)
{
__asm("sir; nop");
}
#include <uvm/uvm.h> #include <uvm/uvm.h>
void db_uvmhistdump(db_expr_t, int, db_expr_t, const char *); void db_uvmhistdump(db_expr_t, int, db_expr_t, const char *);
@ -1280,6 +1288,7 @@ const struct db_command db_machine_command_table[] = {
{ "watch", db_watch, 0, 0 }, { "watch", db_watch, 0, 0 },
{ "window", db_dump_window, 0, 0 }, { "window", db_dump_window, 0, 0 },
{ "cpu", db_cpu_cmd, 0, 0 }, { "cpu", db_cpu_cmd, 0, 0 },
{ "sir", db_sir_cmd, 0, 0 },
{ .name = NULL, } { .name = NULL, }
}; };