Merge branch 'master' of ssh://dbrownell@openocd.git.sourceforge.net/gitroot/openocd/openocd
This commit is contained in:
commit
22aff82cae
|
@ -16,6 +16,8 @@ doc/openocd.fn
|
||||||
doc/openocd.fns
|
doc/openocd.fns
|
||||||
doc/openocd.html
|
doc/openocd.html
|
||||||
doc/openocd.info
|
doc/openocd.info
|
||||||
|
doc/openocd.info-1
|
||||||
|
doc/openocd.info-2
|
||||||
doc/openocd.ky
|
doc/openocd.ky
|
||||||
doc/openocd.log
|
doc/openocd.log
|
||||||
doc/openocd.pdf
|
doc/openocd.pdf
|
||||||
|
@ -47,3 +49,7 @@ stamp-h1
|
||||||
stamp-vti
|
stamp-vti
|
||||||
INSTALL
|
INSTALL
|
||||||
NOTES
|
NOTES
|
||||||
|
|
||||||
|
# Eclipse stuff
|
||||||
|
.project
|
||||||
|
|
||||||
|
|
|
@ -3,11 +3,14 @@
|
||||||
* Copyright 2005 Salvatore Sanfilippo <antirez@invece.org>
|
* Copyright 2005 Salvatore Sanfilippo <antirez@invece.org>
|
||||||
* Copyright 2005 Clemens Hintze <c.hintze@gmx.net>
|
* Copyright 2005 Clemens Hintze <c.hintze@gmx.net>
|
||||||
* Copyright 2005 patthoyts - Pat Thoyts <patthoyts@users.sf.net>
|
* Copyright 2005 patthoyts - Pat Thoyts <patthoyts@users.sf.net>
|
||||||
* Copyright 2008 oharboe - Øyvind Harboe - oyvind.harboe@zylin.com
|
* Copyright 2008,2009 oharboe - Øyvind Harboe - oyvind.harboe@zylin.com
|
||||||
* Copyright 2008 Andrew Lunn <andrew@lunn.ch>
|
* Copyright 2008 Andrew Lunn <andrew@lunn.ch>
|
||||||
* Copyright 2008 Duane Ellis <openocd@duaneellis.com>
|
* Copyright 2008 Duane Ellis <openocd@duaneellis.com>
|
||||||
* Copyright 2008 Uwe Klein <uklein@klein-messgeraete.de>
|
* Copyright 2008 Uwe Klein <uklein@klein-messgeraete.de>
|
||||||
* Copyright 2008 Steve Bennett <steveb@workware.net.au>
|
* Copyright 2008 Steve Bennett <steveb@workware.net.au>
|
||||||
|
* Copyright 2009 Nico Coesel <ncoesel@dealogic.nl>
|
||||||
|
* Copyright 2009 Zachary T Welch zw@superlucidity.net
|
||||||
|
* Copyright 2009 David Brownell
|
||||||
*
|
*
|
||||||
* The FreeBSD license
|
* The FreeBSD license
|
||||||
*
|
*
|
||||||
|
|
|
@ -714,7 +714,7 @@ int gdb_target_callback_event_handler(struct target_s *target, enum target_event
|
||||||
target_handle_event(target, event);
|
target_handle_event(target, event);
|
||||||
switch (event)
|
switch (event)
|
||||||
{
|
{
|
||||||
case TARGET_EVENT_EARLY_HALTED:
|
case TARGET_EVENT_GDB_HALT:
|
||||||
gdb_frontend_halted(target, connection);
|
gdb_frontend_halted(target, connection);
|
||||||
break;
|
break;
|
||||||
case TARGET_EVENT_HALTED:
|
case TARGET_EVENT_HALTED:
|
||||||
|
|
|
@ -157,7 +157,7 @@ static const Jim_Nvp nvp_target_event[] = {
|
||||||
{ .value = TARGET_EVENT_OLD_gdb_program_config , .name = "old-gdb_program_config" },
|
{ .value = TARGET_EVENT_OLD_gdb_program_config , .name = "old-gdb_program_config" },
|
||||||
{ .value = TARGET_EVENT_OLD_pre_resume , .name = "old-pre_resume" },
|
{ .value = TARGET_EVENT_OLD_pre_resume , .name = "old-pre_resume" },
|
||||||
|
|
||||||
{ .value = TARGET_EVENT_EARLY_HALTED, .name = "early-halted" },
|
{ .value = TARGET_EVENT_GDB_HALT, .name = "gdb-halt" },
|
||||||
{ .value = TARGET_EVENT_HALTED, .name = "halted" },
|
{ .value = TARGET_EVENT_HALTED, .name = "halted" },
|
||||||
{ .value = TARGET_EVENT_RESUMED, .name = "resumed" },
|
{ .value = TARGET_EVENT_RESUMED, .name = "resumed" },
|
||||||
{ .value = TARGET_EVENT_RESUME_START, .name = "resume-start" },
|
{ .value = TARGET_EVENT_RESUME_START, .name = "resume-start" },
|
||||||
|
@ -821,7 +821,7 @@ int target_call_event_callbacks(target_t *target, enum target_event event)
|
||||||
if (event == TARGET_EVENT_HALTED)
|
if (event == TARGET_EVENT_HALTED)
|
||||||
{
|
{
|
||||||
/* execute early halted first */
|
/* execute early halted first */
|
||||||
target_call_event_callbacks(target, TARGET_EVENT_EARLY_HALTED);
|
target_call_event_callbacks(target, TARGET_EVENT_GDB_HALT);
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DEBUG("target event %i (%s)",
|
LOG_DEBUG("target event %i (%s)",
|
||||||
|
@ -1658,6 +1658,15 @@ static int sense_handler(void)
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void target_call_event_callbacks_all(enum target_event e) {
|
||||||
|
target_t *target;
|
||||||
|
target = all_targets;
|
||||||
|
while (target) {
|
||||||
|
target_call_event_callbacks(target, e);
|
||||||
|
target = target->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* process target state changes */
|
/* process target state changes */
|
||||||
int handle_target(void *priv)
|
int handle_target(void *priv)
|
||||||
{
|
{
|
||||||
|
@ -1676,6 +1685,7 @@ int handle_target(void *priv)
|
||||||
int did_something = 0;
|
int did_something = 0;
|
||||||
if (runSrstAsserted)
|
if (runSrstAsserted)
|
||||||
{
|
{
|
||||||
|
target_call_event_callbacks_all(TARGET_EVENT_GDB_HALT);
|
||||||
Jim_Eval(interp, "srst_asserted");
|
Jim_Eval(interp, "srst_asserted");
|
||||||
did_something = 1;
|
did_something = 1;
|
||||||
}
|
}
|
||||||
|
@ -1686,6 +1696,7 @@ int handle_target(void *priv)
|
||||||
}
|
}
|
||||||
if (runPowerDropout)
|
if (runPowerDropout)
|
||||||
{
|
{
|
||||||
|
target_call_event_callbacks_all(TARGET_EVENT_GDB_HALT);
|
||||||
Jim_Eval(interp, "power_dropout");
|
Jim_Eval(interp, "power_dropout");
|
||||||
did_something = 1;
|
did_something = 1;
|
||||||
}
|
}
|
||||||
|
@ -1726,7 +1737,10 @@ int handle_target(void *priv)
|
||||||
{
|
{
|
||||||
/* polling may fail silently until the target has been examined */
|
/* polling may fail silently until the target has been examined */
|
||||||
if ((retval = target_poll(target)) != ERROR_OK)
|
if ((retval = target_poll(target)) != ERROR_OK)
|
||||||
|
{
|
||||||
|
target_call_event_callbacks(target, TARGET_EVENT_GDB_HALT);
|
||||||
return retval;
|
return retval;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -163,8 +163,14 @@ enum target_event
|
||||||
|
|
||||||
/* allow GDB to do stuff before others handle the halted event,
|
/* allow GDB to do stuff before others handle the halted event,
|
||||||
* this is in lieu of defining ordering of invocation of events,
|
* this is in lieu of defining ordering of invocation of events,
|
||||||
* which would be more complicated */
|
* which would be more complicated
|
||||||
TARGET_EVENT_EARLY_HALTED,
|
*
|
||||||
|
* Telling GDB to halt does not mean that the target stopped running,
|
||||||
|
* simply that we're dropping out of GDB's waiting for step or continue.
|
||||||
|
*
|
||||||
|
* This can be useful when e.g. detecting power dropout.
|
||||||
|
*/
|
||||||
|
TARGET_EVENT_GDB_HALT,
|
||||||
TARGET_EVENT_HALTED, /* target entered debug state from normal execution or reset */
|
TARGET_EVENT_HALTED, /* target entered debug state from normal execution or reset */
|
||||||
TARGET_EVENT_RESUMED, /* target resumed to normal execution */
|
TARGET_EVENT_RESUMED, /* target resumed to normal execution */
|
||||||
TARGET_EVENT_RESUME_START,
|
TARGET_EVENT_RESUME_START,
|
||||||
|
|
Loading…
Reference in New Issue