]> git.sur5r.net Git - openocd/log
openocd
14 years agochange #include "interface.h" to <jtag/interface.h>
Zachary T Welch [Thu, 3 Dec 2009 12:14:31 +0000 (04:14 -0800)]
change #include "interface.h" to <jtag/interface.h>

Changes from the flat namespace to heirarchical one.  Instead of writing:

#include "interface.h"

the following form should be used.

#include <jtag/interface.h>

The exception is from .c files in the same directory.

14 years agochange #include "commands.h" to <jtag/commands.h>
Zachary T Welch [Thu, 3 Dec 2009 12:14:30 +0000 (04:14 -0800)]
change #include "commands.h" to <jtag/commands.h>

Changes from the flat namespace to heirarchical one.  Instead of writing:

#include "commands.h"

the following form should be used.

#include <jtag/commands.h>

The exception is from .c files in the same directory.

14 years agochange #include "types.h" to <helper/types.h>
Zachary T Welch [Thu, 3 Dec 2009 12:14:30 +0000 (04:14 -0800)]
change #include "types.h" to <helper/types.h>

Changes from the flat namespace to heirarchical one.  Instead of writing:

#include "types.h"

the following form should be used.

#include <helper/types.h>

The exception is from .c files in the same directory.

14 years agochange #include "time_support.h" to <helper/time_support.h>
Zachary T Welch [Thu, 3 Dec 2009 12:14:29 +0000 (04:14 -0800)]
change #include "time_support.h" to <helper/time_support.h>

Changes from the flat namespace to heirarchical one.  Instead of writing:

#include "time_support.h"

the following form should be used.

#include <helper/time_support.h>

The exception is from .c files in the same directory.

14 years agochange #include "replacements.h" to <helper/replacements.h>
Zachary T Welch [Thu, 3 Dec 2009 12:14:28 +0000 (04:14 -0800)]
change #include "replacements.h" to <helper/replacements.h>

Changes from the flat namespace to heirarchical one.  Instead of writing:

#include "replacements.h"

the following form should be used.

#include <helper/replacements.h>

The exception is from .c files in the same directory.

14 years agochange #include "membuf.h" to <helper/membuf.h>
Zachary T Welch [Thu, 3 Dec 2009 12:14:28 +0000 (04:14 -0800)]
change #include "membuf.h" to <helper/membuf.h>

Changes from the flat namespace to heirarchical one.  Instead of writing:

#include "membuf.h"

the following form should be used.

#include <helper/membuf.h>

The exception is from .c files in the same directory.

14 years agochange #include "log.h" to <helper/log.h>
Zachary T Welch [Thu, 3 Dec 2009 12:14:28 +0000 (04:14 -0800)]
change #include "log.h" to <helper/log.h>

Changes from the flat namespace to heirarchical one.  Instead of writing:

#include "log.h"

the following form should be used.

#include <helper/log.h>

The exception is from .c files in the same directory.

14 years agochange #include "jim.h" to <helper/jim.h>
Zachary T Welch [Thu, 3 Dec 2009 12:14:27 +0000 (04:14 -0800)]
change #include "jim.h" to <helper/jim.h>

Changes from the flat namespace to heirarchical one.  Instead of writing:

#include "jim.h"

the following form should be used.

#include <helper/jim.h>

The exception is from .c files in the same directory.

14 years agochange #include "ioutil.h" to <helper/ioutil.h>
Zachary T Welch [Thu, 3 Dec 2009 12:14:26 +0000 (04:14 -0800)]
change #include "ioutil.h" to <helper/ioutil.h>

Changes from the flat namespace to heirarchical one.  Instead of writing:

#include "ioutil.h"

the following form should be used.

#include <helper/ioutil.h>

The exception is from .c files in the same directory.

14 years agochange #include "fileio.h" to <helper/fileio.h>
Zachary T Welch [Thu, 3 Dec 2009 12:14:26 +0000 (04:14 -0800)]
change #include "fileio.h" to <helper/fileio.h>

Changes from the flat namespace to heirarchical one.  Instead of writing:

#include "fileio.h"

the following form should be used.

#include <helper/fileio.h>

The exception is from .c files in the same directory.

14 years agochange #include "configuration.h" to <helper/configuration.h>
Zachary T Welch [Thu, 3 Dec 2009 12:14:26 +0000 (04:14 -0800)]
change #include "configuration.h" to <helper/configuration.h>

Changes from the flat namespace to heirarchical one.  Instead of writing:

#include "configuration.h"

the following form should be used.

#include <helper/configuration.h>

The exception is from .c files in the same directory.

14 years agochange #include "command.h" to <helper/command.h>
Zachary T Welch [Thu, 3 Dec 2009 12:14:25 +0000 (04:14 -0800)]
change #include "command.h" to <helper/command.h>

Changes from the flat namespace to heirarchical one.  Instead of writing:

#include "command.h"

the following form should be used.

#include <helper/command.h>

The exception is from .c files in the same directory.

14 years agochange #include "binarybuffer.h" to <helper/binarybuffer.h>
Zachary T Welch [Thu, 3 Dec 2009 12:14:25 +0000 (04:14 -0800)]
change #include "binarybuffer.h" to <helper/binarybuffer.h>

Changes from the flat namespace to heirarchical one.  Instead of writing:

#include "binarybuffer.h"

the following form should be used.

#include <helper/binarybuffer.h>

The exception is from .c files in the same directory.

14 years agonormalize headers to make changing easier
Zachary T Welch [Thu, 3 Dec 2009 12:20:31 +0000 (04:20 -0800)]
normalize headers to make changing easier

These headers need minor tweaks to paves the way for wholesale
scripted coversion of the header files.

14 years agochange autoconf #include in configure.in
Zachary T Welch [Sun, 29 Nov 2009 00:25:30 +0000 (16:25 -0800)]
change autoconf #include in configure.in

Updates "system.h" and "replacements.h" with <helpers/system.h> and
<helpers/replacements.h> respectively.

14 years agoallow #include directives to use module name
Zachary T Welch [Tue, 24 Nov 2009 22:59:16 +0000 (14:59 -0800)]
allow #include directives to use module name

Includes the src directory in the search path, so header files may be
migrated from:

  #include "foo.h"

to
  #include <module/foo.h>

which is more conducive for installation.

14 years agoferoceon.c should be part of ARM7_9_SRC
Nicolas Pitre [Thu, 3 Dec 2009 07:06:10 +0000 (02:06 -0500)]
feroceon.c should be part of ARM7_9_SRC

The Feroceon and Dragonite cores are similar to the ARM926 and ARM966
cores respectively.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
14 years agoremove #if HAVE_JTAG_INTERFACE_H from minidriver.h
Zachary T Welch [Thu, 3 Dec 2009 01:30:33 +0000 (17:30 -0800)]
remove #if HAVE_JTAG_INTERFACE_H from minidriver.h

Adds two "minidriver_imp.h" files, so the right one is allowed to be
"#included" by the Makefile logic.

14 years agomove jtag drivers to src/jtag/drivers
Zachary T Welch [Thu, 3 Dec 2009 01:18:05 +0000 (17:18 -0800)]
move jtag drivers to src/jtag/drivers

Moves JTAG interface drivers to src/jtag/drivers/,
Adds src/jtag/drivers/Makefile.am.
Builds libocdjtagdrivers.la.

Flattens the rlink driver files into the drivers/ directory, adding
the 'rlink_' prefix or '.rlink' suffix as appropriate.

14 years agomove nor drivers to src/flash/nor
Zachary T Welch [Wed, 2 Dec 2009 23:54:15 +0000 (15:54 -0800)]
move nor drivers to src/flash/nor

Moves NOR flash drivers to 'src/flash/nor/'.
Adds 'src/flash/nor/Makefile.am'.
Builds 'libocdflashnor.la'.

14 years agomove nand drivers to src/flash/nand/
Zachary T Welch [Wed, 2 Dec 2009 06:37:11 +0000 (22:37 -0800)]
move nand drivers to src/flash/nand/

Moves NAND drivers to src/flash/nand/.
Adds src/flash/nand/Makefile.am.
Builds libocdflashnand.la.

14 years agoARM11: don't expose DSCR
David Brownell [Thu, 3 Dec 2009 06:57:08 +0000 (22:57 -0800)]
ARM11: don't expose DSCR

Remove the remaining extra copy of DSCR, and the register cache
of which it was a part.  That cache wasn't a very safe, or even
necessary, idea; it was essentialy letting debugger-private state
be manipulated by Tcl code that couldn't know how to do it right.

This makes the "reg" output of an ARM11 resemble what most other
ARM cores produce ... forward motion in the "make ARM11 work like
the rest of the ARM cores" Jihad!

14 years agoARM11: store a clean copy of DSCR
David Brownell [Thu, 3 Dec 2009 06:57:08 +0000 (22:57 -0800)]
ARM11: store a clean copy of DSCR

Just store a clean copy of DSCR in the per-CPU struct, so we
trivially pass a pointer to a recent copy.  This replaces the
previous "last_dscr" and cleans up most of the related calling
conventions ... but it doesn't remove the other DSCR copy.

14 years agoARM11: don't expose WDTR
David Brownell [Thu, 3 Dec 2009 06:57:07 +0000 (22:57 -0800)]
ARM11: don't expose WDTR

Don't expose the WDTR register through the register cache any
more.  If anyone wants Tcl scripts to be able to use DCC based
communication with app code in the target, this wouldn't do it.

Bugfix:  don't trust the Tcl-accessible version of DSCR to
flag whether WDTR needs to be restored when resuming.

14 years agoARM11: don't expose RDTR
David Brownell [Thu, 3 Dec 2009 06:57:07 +0000 (22:57 -0800)]
ARM11: don't expose RDTR

Don't expose the RDTR register through the register cache any
more.  If anyone wants Tcl scripts to be able to use DCC based
communication with app code in the target, this wouldn't do it.

Bugfix:  don't trust the Tcl-accessible version of DSCR to
flag whether RDTR needs to be restored when resuming.

14 years agoARM11: streamline debug entry
David Brownell [Thu, 3 Dec 2009 06:57:07 +0000 (22:57 -0800)]
ARM11: streamline debug entry

Streamline arm11_on_enter_debug_state() entry:

 - It should handle the standard updates:
    * target->debug_reason
    * target->state

 - Don't waste time re-reading DSCR; just pass it in

Also rename the routine to "arm11_debug_entry()", matching the
convention used elsewhere in OpenOCD.

14 years agoARM11: remove arm11->target
David Brownell [Thu, 3 Dec 2009 06:57:07 +0000 (22:57 -0800)]
ARM11: remove arm11->target

Don't need/want arm11->target; we have arm11->arm.target instead.
Also remove some unused watchpoint stuff.

14 years agoARM DPM: tweak initialization
David Brownell [Thu, 3 Dec 2009 06:57:07 +0000 (22:57 -0800)]
ARM DPM: tweak initialization

Move the initial breakpoint/watchpoint disable calls to
arm_dpm_initialize(), and start using that routine.  This
split helps with arm11 support.

14 years agofix configure problem when building w/o USB
Zachary T Welch [Thu, 3 Dec 2009 06:32:08 +0000 (22:32 -0800)]
fix configure problem when building w/o USB

If building OpenOCD without any USB drivers, a warning would appear
because $build_usb is never set to a sane default.  This fixes it.

14 years agoadding files required for distribution
Zachary T Welch [Thu, 3 Dec 2009 02:24:27 +0000 (18:24 -0800)]
adding files required for distribution

Add headers missing from Makefile rules to pass 'make distcheck'.
These were included in the tree but were not added with those commits.

14 years agofix 'target init' command registration
Zachary T Welch [Thu, 3 Dec 2009 00:12:10 +0000 (16:12 -0800)]
fix 'target init' command registration

The command handler registration was put at the top level, rather
than as a subcommand.  Move it to where it belongs.

14 years agostubs: buildfix
David Brownell [Wed, 2 Dec 2009 23:24:14 +0000 (15:24 -0800)]
stubs: buildfix

The new stubs for httpd and ioutil gave errors like:

  ioutil_stubs.c: In function ‘ioutil_init’:
  ioutil_stubs.c:27: error: implicit declaration of function ‘LOG_DEBUG’
  ioutil_stubs.c:28: error: ‘ERROR_OK’ undeclared (first use in this function)
  ioutil_stubs.c:28: error: (Each undeclared identifier is reported only once
  ioutil_stubs.c:28: error: for each function it appears in.)

Fix.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoremove #if BUILD_HTTPD
Zachary T Welch [Wed, 2 Dec 2009 03:58:32 +0000 (19:58 -0800)]
remove #if BUILD_HTTPD

Add httpd_stubs.c to provide no-op implementations of httpd_start()
and httpd_stop().

Allows these routines to be called unconditionally and ensures the
libocdserver ABI remains unchanged regardless of whether this feature
was built-in or not.

Prints a DEBUG message when the stub implementation is included.

14 years agoremove BUILD_IOUTIL symbol
Zachary T Welch [Wed, 2 Dec 2009 03:52:00 +0000 (19:52 -0800)]
remove BUILD_IOUTIL symbol

Add ioutil_stubs.c to provide an empty ioutil_init() routine.
Add ioutil.h to prevent applications from needing to declare it.

Allows unconditionally calling that function during startup, and the
resulting libocdhelper library API is now more stable.

Prints a DEBUG message when the stub implementation is included.

14 years agoremove #if logic for openocd_sleep_*lude
Zachary T Welch [Wed, 2 Dec 2009 03:41:16 +0000 (19:41 -0800)]
remove #if logic for openocd_sleep_*lude

Adds server_stubs.c to hold these routines, using automake logic to
ensure it gets included under the right conditions.

14 years agotarget: factor init to 'target init'
Zachary T Welch [Tue, 1 Dec 2009 02:45:38 +0000 (18:45 -0800)]
target: factor init to 'target init'

Adds 'target init' command handler, called as part of 'init'.

14 years agotarget: factor target_init() into pieces
Zachary T Welch [Tue, 1 Dec 2009 02:27:23 +0000 (18:27 -0800)]
target: factor target_init() into pieces

Moves body of target initialization loop into a helper function,
cleaning up its visual flow in the process.

14 years agojtag: factor init into 'jtag init'
Zachary T Welch [Tue, 1 Dec 2009 02:30:38 +0000 (18:30 -0800)]
jtag: factor init into 'jtag init'

Adds 'jtag init' command handler, which can be called as part of a
fine-grained 'init' process.

14 years agoflash: factor init to 'flash init'
Zachary T Welch [Tue, 1 Dec 2009 01:38:02 +0000 (17:38 -0800)]
flash: factor init to 'flash init'

Split flash initialiation into 'flash init', called from 'init'.

14 years agomflash: factor init to 'mflash init'
Zachary T Welch [Tue, 1 Dec 2009 01:32:56 +0000 (17:32 -0800)]
mflash: factor init to 'mflash init'

Splits mflash initialiation to 'mflash init', called from 'init'.

14 years agonand: factor init to 'nand init'
Zachary T Welch [Tue, 1 Dec 2009 01:27:21 +0000 (17:27 -0800)]
nand: factor init to 'nand init'

Split NAND initialization into 'nand init', which gets called from
the main 'init' command.

14 years agopld: factor init to 'pld init'
Zachary T Welch [Tue, 1 Dec 2009 01:20:18 +0000 (17:20 -0800)]
pld: factor init to 'pld init'

Split PLD initialization into 'pld init', which gets called from 'init'.

14 years agoARMv7a/Cortex-A8: report watchpoint trigger insn
David Brownell [Wed, 2 Dec 2009 19:31:32 +0000 (11:31 -0800)]
ARMv7a/Cortex-A8: report watchpoint trigger insn

Save and display the address of the instruction which triggered the
watchpoint.  Because of pipelining, that's well behind the PC value
when debug entry completes.  (Example in a subroutine that had been
returned from...)

Remove unused A8 stuff, mostly watchpoint hooks from the header.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoARM: label SP and LR correctly
David Brownell [Wed, 2 Dec 2009 19:31:32 +0000 (11:31 -0800)]
ARM: label SP and LR correctly

Except for USR/SYS mode, the labels for the shadowed SP and LR
registers were reversed.  LR is r14; SP is r13.  Fix.

This would not affect GDB users; GDB references are positional.
Only folk working directly with OpenOCD register values would
have noticed this bug.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agozy1000: keep up with startup refactoring work.
Øyvind Harboe [Wed, 2 Dec 2009 11:45:12 +0000 (12:45 +0100)]
zy1000: keep up with startup refactoring work.

keep up with server_init() introduction.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
14 years agoCortex-A8: basic watchpoint support
David Brownell [Wed, 2 Dec 2009 05:47:45 +0000 (21:47 -0800)]
Cortex-A8: basic watchpoint support

Actually this should handle both breakpoints and watchpoints ... but
the DPM framework only handles watchpoints for now.  Works on Beagle.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoARM: core DPM support for watchpoints
David Brownell [Wed, 2 Dec 2009 05:47:45 +0000 (21:47 -0800)]
ARM: core DPM support for watchpoints

This is a NOP unless the underlying core exposes two new methods, and
neither of the two cores using this (ARM11xx, Cortex-A8) do so yet.

This patch only updates those cores so they pass a flag saying whether
or not to update breakpoint and watchpoint status before resuming; and
removing some now-needless anti-segfault code from ARM11.  Cortex-A8
didn't have that code ... yes, it segfaulted when setting watchpoints.

NOTE:  this uses a slightly different strategy for setting/clearing
breakpoints than the ARM7/ARM9/etc code uses.  It leaves them alone
unless it's *got* to change something, to speed halt/resume cycles
(including single stepping).

ALSO NOTE:  this under-delivers for Cortex-A8, where regions with size
up to 2 GBytes can be watched ... it handles watchpoints which ARM11 can
also handle (size 1/2/4 bytes).  Should get fixed later.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoARMv7a: move constants out of Cortex-A8 header
David Brownell [Wed, 2 Dec 2009 04:39:58 +0000 (20:39 -0800)]
ARMv7a: move constants out of Cortex-A8 header

These are architecturally defined, not core-specific.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoTcl and doc: update to match new 'arm mcr ...' etc
David Brownell [Tue, 1 Dec 2009 09:09:10 +0000 (01:09 -0800)]
Tcl and doc: update to match new 'arm mcr ...' etc

Make them match the C code.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agotarget: at91eb40a.cfg is a board, not a target.
Øyvind Harboe [Tue, 1 Dec 2009 09:03:15 +0000 (10:03 +0100)]
target: at91eb40a.cfg is a board, not a target.

Also updated to use target name when creating flash
and set jtag_khz to 16000.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
14 years agozy1000: keep up with latest changes to command handling
Øyvind Harboe [Tue, 1 Dec 2009 07:42:53 +0000 (08:42 +0100)]
zy1000: keep up with latest changes to command handling

Keep up with Jim Tcl interpreter creation cleanup.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
14 years agocommand: the Jim interpreter can now be provided rather than created
Øyvind Harboe [Tue, 1 Dec 2009 07:41:41 +0000 (08:41 +0100)]
command: the Jim interpreter can now be provided rather than created

In embedded hosts, the Jim interpreter can come from the
existing context rather than be created by OpenOCD.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
14 years agoARM11: remove previous mcr()/mrc() methods
David Brownell [Tue, 1 Dec 2009 08:49:16 +0000 (00:49 -0800)]
ARM11: remove previous mcr()/mrc() methods

We don't need this code, now that the DPM code handles it.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoCortex-A8: remove previous mcr()/mrc() methods
David Brownell [Tue, 1 Dec 2009 08:49:11 +0000 (00:49 -0800)]
Cortex-A8: remove previous mcr()/mrc() methods

We don't need this code, now that the DPM code handles it.
Neither do we need the ARMv7-A CP15 operations; remove their
remnants too.  And disable a mostly-needless diagnostic.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoARM: implement mrc()/mcr() as DPM ops
David Brownell [Tue, 1 Dec 2009 08:49:04 +0000 (00:49 -0800)]
ARM: implement mrc()/mcr() as DPM ops

Instead of having separate ARM11 and Cortex-A8 implementations of
this code, have one shared implementation which just builds on the
existing "run instruction via R0" support.

This enables followup patches to remove that now-unused code from
those two drivers.  (Patches to move the "mrc" and "mcr" code into
"struct arm" are due too ... MIPS and other cores do not support
those ARM-specific concepts.)

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agotarget: "mcr" and "mrc" are ARM-specific
David Brownell [Tue, 1 Dec 2009 08:48:53 +0000 (00:48 -0800)]
target: "mcr" and "mrc" are ARM-specific

Switch "mrc" and "mcr" commands to be toplevel ARM operations,
as they should initially have been.

Correct the usage message for both commands:  it matches ARM
documentation (as one wants!) instead of reordering them to
match the funky mrc() and mcr() method usage (sigh).

For Cortex-A8: restore a line that got accidentally dropped,
so the secure monitor mode shadow registers will show again.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoARMv7-A: stop using CP15 ops
David Brownell [Tue, 1 Dec 2009 08:48:40 +0000 (00:48 -0800)]
ARMv7-A: stop using CP15 ops

The ARMv7-A code uses read_cp15() to access fault registers.
Instead, use DPM operations directly, passing in the relevant
MRC instructions.

This eliminates per-operation overhead (though it'll be hard
to observe, this is uncommon) and helps eliminate read_cp15().

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoCortex-A8: stop using CP15 ops
David Brownell [Tue, 1 Dec 2009 08:48:40 +0000 (00:48 -0800)]
Cortex-A8: stop using CP15 ops

There were two chunks of Cortex-A8 code which called the
ARMv7-A CP15 operations; get rid of them, helping prepare
to remove those methods completely:

 - post_debug_entry() can use the mrc() method to read
   its two registers.

 - write_memory() can use dpm->instr_write_data_r0() to
   flush the ICache and DCache ... doing it this way is
   actually faster since it reduces per-write overhead.

Note that the mrc() method parameters are re-ordered with
respect to the ARM instruction documentation, so that part
can be confusing.

Cleaned up the layout and comments in those areas a bit.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agomain: invoke jtag_interface_quit() explicitly
Øyvind Harboe [Mon, 30 Nov 2009 08:13:56 +0000 (09:13 +0100)]
main: invoke jtag_interface_quit() explicitly

There is no particular reason to invoke jtag_interface_quit()
on the atexit() handler, it just makes the code more obtuse
and stops other legitimate usage of atexit().

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
14 years agoimprove command prohibition error report
Zachary T Welch [Sun, 29 Nov 2009 00:29:41 +0000 (16:29 -0800)]
improve command prohibition error report

Ensures that the correct information gets displayed, depending on the
mode of the command being denied.  Fixes misreporting all commands as
needing to run "before 'init'".

14 years agoXScale: restore_context() cleanup
David Brownell [Tue, 1 Dec 2009 03:14:19 +0000 (19:14 -0800)]
XScale: restore_context() cleanup

Clean up two aspects to this routine:  bad naming, since it
doesn't restore the context, just the banked registers; and
excess indentation for the bulk of the code.

Also make some of its call sites stash the function's return
code; someday they should use it for error checking.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoXScale: context restore, cleanup/bugfix
David Brownell [Tue, 1 Dec 2009 03:14:19 +0000 (19:14 -0800)]
XScale: context restore, cleanup/bugfix

This "loop over all registers" routine shared the same mess as
full_context() in terms of dozens of needless number_to_mode()
calls.  Fix that, and comments, with related cleanup.

The misnamed xscale_restore_context() had a related bug.  It
was restoring the *WRONG REGISTERS* ... always from whatever
the current mode was, instead of using the copy from whichever
register bank it was trying to restore.  (But it marked the
intended register as having been restored...)  Fixed that.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoremove interp global variable!
Zachary T Welch [Mon, 30 Nov 2009 02:50:48 +0000 (18:50 -0800)]
remove interp global variable!

Finish removing references to the 'interp' global variable from the
command module, encapsulating all reference via command_context.

Eliminates use of the global entirely, so it can be removed.  Hurrah!

14 years agocommand output capture: do not use interp global
Zachary T Welch [Mon, 30 Nov 2009 02:39:13 +0000 (18:39 -0800)]
command output capture: do not use interp global

Adds a log_capture_state structure to pass to the log capture
callback used by the command module.  Ensures that the capture occurs
in the proper context.

14 years agodo not extern 'interp' from command.c
Zachary T Welch [Mon, 30 Nov 2009 02:27:45 +0000 (18:27 -0800)]
do not extern 'interp' from command.c

Adds 'interp' field to command_context, chasing the few remaining
references to the global variable outside of the command module.

14 years agotarget: avoid using interp global variable
Zachary T Welch [Mon, 30 Nov 2009 02:21:59 +0000 (18:21 -0800)]
target: avoid using interp global variable

Adds 'interp' to target_event_action structure to avoid using the
global variable of the same name.

14 years agojtag: avoid using interp global variable
Zachary T Welch [Mon, 30 Nov 2009 02:08:13 +0000 (18:08 -0800)]
jtag: avoid using interp global variable

Adds 'interp' field to jtag_tap_event_action structure to avoid
using the global variable of same name.

14 years agofix foo command group help messages
Zachary T Welch [Mon, 30 Nov 2009 00:48:40 +0000 (16:48 -0800)]
fix foo command group help messages

Splits the old help strings to provide proper usage as well.

14 years agomake syntax errors respond with 'usage'
Zachary T Welch [Mon, 30 Nov 2009 00:32:06 +0000 (16:32 -0800)]
make syntax errors respond with 'usage'

The 'help' text will become more verbose, so its entire text will be
far more than desired when you only borked your syntax.  The usage
still allows the commands to be looked up for more help.

14 years agomove improperly located documentation
Zachary T Welch [Mon, 30 Nov 2009 00:30:00 +0000 (16:30 -0800)]
move improperly located documentation

Somehow, the comment block for command handlers ended up associated
with the output_handler.  Move it to the command_handler_t declaration.

14 years agoimprove command_done() API and docs
Zachary T Welch [Sun, 29 Nov 2009 23:58:16 +0000 (15:58 -0800)]
improve command_done() API and docs

command_done() does not need to return an error, but it needed
Doxygen comment.  Provide some for copy_command_context as well.

Note: this audit revealed some potential bugs with the command context
implementation.  There was a reason that commands were added at the
end of the list.  Shallow copying of command_context means that
the list is shared between them.  And commands added at the top-level
before the pre-existing commands will not be available in the shared
context as they were before.  Yikes!

Fortunately, this does not seem to occur in general use, as
'add_help_text' gets registered in startup.tcl and claims the first slot
in my own test cases.  Thus, it seems that we have been masking the issue
for now, but it shows the need for further architectural improvement in
the core command module.

14 years agoonly display usable commands in help
Zachary T Welch [Sun, 29 Nov 2009 22:29:24 +0000 (14:29 -0800)]
only display usable commands in help

With the ability to defer 'init', users can access the help system while
still in CONFIG mode.  This patch omits commands from the help and usage
list when they cannot be run in the current command mode, making it much
easier to see what can be done at a given time.

14 years agoallow deferal of init
Zachary T Welch [Sun, 29 Nov 2009 22:04:21 +0000 (14:04 -0800)]
allow deferal of init

Adds 'noinit' command to prevent OpenOCD from running 'init' at the end
up startup, allowing it to be given from telnet or TCL.  This provides
the old behavior by default, and users can add this command to their
scripts to get the new behavior.

14 years agomove server_init() to openocd_main()
Zachary T Welch [Sun, 29 Nov 2009 22:04:21 +0000 (14:04 -0800)]
move server_init()  to openocd_main()

Moves the telnet and TCL server startup to server_init(), moving their
respective command registration in to server_register_commands().
Adds proper error checking for these particular startup processes.

Moves the core server startup to openocd_main(), improving related error
checking and preparing to defer 'init'.

14 years agoimprove gdb_init() sequence
Zachary T Welch [Sun, 29 Nov 2009 02:56:23 +0000 (18:56 -0800)]
improve gdb_init() sequence

Rework gdb_init to create flexible APIs (gdb_target_add_{one,all}) and
static helper (gdb_target_start) for starting GDB services.  Eliminates
duplicated code and provides general mechanisms for adding GDB services.
The 'init' command is updated to call the new API, and later patches can
decouple its policy of adding all targets therein.

Provides the new capability to use both piped and TCP servers when
multiple targets are defined.  The first target fills the pipe, and
others will be started on TCP ports (unless disabled, i.e. gdb_port=0).

14 years agozy1000: keep up with changes to command structure
Øyvind Harboe [Mon, 30 Nov 2009 07:43:49 +0000 (08:43 +0100)]
zy1000: keep up with changes to command structure

Add missing COMMAND_REGISTRATION_DONE.

For now the command syntax for zy1000 needs to be compatible
across 0.3/0.4, the world outside OpenOCD interfaces to
zy1000 using the old syntax. Post 0.4 release(0.4.1 even)
I'll switch to subcommand scheme.

Switch to subcommands post 0.3 lifecycle.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
14 years agoXScale: clean up full_context() (#2)
David Brownell [Sun, 29 Nov 2009 21:06:12 +0000 (13:06 -0800)]
XScale: clean up full_context() (#2)

Streamline the loop by continuing as soon as we know there's no
work to be done; this lets us un-indent almost everything.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoXScale: clean up full_context() (#1)
David Brownell [Sun, 29 Nov 2009 21:04:56 +0000 (13:04 -0800)]
XScale: clean up full_context() (#1)

When fetching all the registers, XScale was doing various stupid
things like calling number_to_mode() a few dozen times instead of
just once, and mapping access to each register three times (again,
instead of just once).  Stop that.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoXScale: debug entry uses new register mapping
David Brownell [Sun, 29 Nov 2009 20:58:30 +0000 (12:58 -0800)]
XScale: debug entry uses new register mapping

Use the new mapping interfaces in the debug entry path.
SPSR and the banked registers now have smaller and faster
accessors ... use them.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agocreate target/pxa3xx.cfg
Marek Vasut [Sun, 29 Nov 2009 11:54:41 +0000 (12:54 +0100)]
create target/pxa3xx.cfg

[dbrownell@users.sourceforge.net; remove pxa255 comment]

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoXScale: initial PXA3xx support
Marek Vasut [Sun, 29 Nov 2009 11:53:06 +0000 (12:53 +0100)]
XScale: initial PXA3xx support

[dbrownell@users.sourceforge.net: user's guide; variant param is optional]

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoARM11: fix warning on cygwin
David Brownell [Sun, 29 Nov 2009 17:14:52 +0000 (09:14 -0800)]
ARM11: fix warning on cygwin

Previous version of JTAG_DEBUG() macro hid this bug.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agobugfix: 'init' changes state, not main()
David Brownell [Sun, 29 Nov 2009 07:08:05 +0000 (23:08 -0800)]
bugfix: 'init' changes state, not main()

Code other than main() may invoke "init".  When it does so,
customized handlers may need to run ... so make sure the
command context state is updated before they do so.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agofix s3c24xx device command helper
lementec fabien [Sat, 28 Nov 2009 23:50:01 +0000 (15:50 -0800)]
fix s3c24xx device command helper

Returns the common structure for the s3c24xx device, which was
somehow nuked during past cleaning efforts.

14 years agoCortex-M3: don't chain "struct arm" commands
David Brownell [Sat, 28 Nov 2009 22:19:45 +0000 (14:19 -0800)]
Cortex-M3: don't chain "struct arm" commands

Those commands presume support for the "classic" set of CPU
modes (FIQ, supervisor, IRQ, etc) ... which aren't supported
by the ARMv7-M or ARMv6-M architectures.  They also presume
a "struct arm" base type, which this code doesn't use.

We haven't cleaned up the register handling enough to be able
to share any of those "base" methods.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
14 years agoadd 'nonce' nand driver
Zachary T Welch [Fri, 27 Nov 2009 17:29:07 +0000 (09:29 -0800)]
add 'nonce' nand driver

The nonce NAND driver provides a no-op implementation useful for
testing the system independently of any driver side-effects.

14 years agoadd more stub handlers to testee target
Zachary T Welch [Thu, 26 Nov 2009 00:57:12 +0000 (16:57 -0800)]
add more stub handlers to testee target

Prevent everything from crashing when exercising various commands.

14 years agoexplode tcl_target_func into many handlers
Zachary T Welch [Thu, 26 Nov 2009 00:36:46 +0000 (16:36 -0800)]
explode tcl_target_func into many handlers

Eliminate the monolithic tcl_target_func by registering each of its
commands using the new chained command registration mechanism.

Also chains the target's commands under the CPU command, though these
may not work properly without some further modification.

14 years agosplit jim_target into multiple handlers
Zachary T Welch [Wed, 25 Nov 2009 20:57:28 +0000 (12:57 -0800)]
split jim_target into multiple handlers

The 'target' command group was implemented using its own command
dispatching, which can be eliminated by using the new chained command
registration mechanism.  This patch splits the jim_target() function
into individual handlers, which makes them to be visible to the help and
usage commands.  These one-trick handlers are much easier to understand.

14 years agosplit jim_newtap_cmd into pieces
Zachary T Welch [Thu, 26 Nov 2009 22:04:02 +0000 (14:04 -0800)]
split jim_newtap_cmd into pieces

Moves the ID and IR-related option parsing to static helpers, removing
two levels of indent.

14 years agoimprove jtag_tap_configure
Zachary T Welch [Thu, 26 Nov 2009 21:52:04 +0000 (13:52 -0800)]
improve jtag_tap_configure

Splits bulk of the jtag_tap_configure into jtag_tap_configure_event,
removing three or four levels of indentation in the process.
The resulting code was stylistically improved in other ways, but it
should be functionally identical.

14 years agoimprove jtag_tap_handle_event indentation
Zachary T Welch [Thu, 26 Nov 2009 19:00:03 +0000 (11:00 -0800)]
improve jtag_tap_handle_event indentation

Use 'continue' to reduce identation levels and superfluous logic.

14 years agobegin moving JTAG jim handlers/helpers
Zachary T Welch [Thu, 26 Nov 2009 16:19:40 +0000 (08:19 -0800)]
begin moving JTAG jim handlers/helpers

Moves the tertiary jim handlers and required static helpers to the top
of tcl.c, defining them in a new registration array that is chained in
both the top-level context and under the jtag command.  The top-level
commands can be removed at some point in the future to reduce clutter.

14 years agosplit jim_jtag_command into multiple handlers
Zachary T Welch [Thu, 26 Nov 2009 05:35:24 +0000 (21:35 -0800)]
split jim_jtag_command into multiple handlers

Explodes the 'jtag' into separate command handlers, which are easier
to understand and extend.  Makes the code much easier to understand,
though further simplifications are possible.  This patch tries to
minimize the noise when viewed with 'git diff -w'.

Gives these commands improved built-in help and usage information.

14 years agoremove redundant 'rm' command handler
Zachary T Welch [Sat, 28 Nov 2009 18:46:53 +0000 (10:46 -0800)]
remove redundant 'rm' command handler

Two 'rm' commands were implemented and registered.  This removes the
version that would have never been called prior to refactoring the
command registration.

14 years agoadd error checking in command_new
Zachary T Welch [Sat, 28 Nov 2009 18:42:51 +0000 (10:42 -0800)]
add error checking in command_new

Adds checks for memory allocation failures.  Started to use calloc()
instead of malloc()/memset(), but I got carried away.  This kind of work
should be done throughout the tree, but it's almost hopeless at present.

14 years agoinclude mode information in help text.
Zachary T Welch [Sat, 28 Nov 2009 20:42:06 +0000 (12:42 -0800)]
include mode information in help text.

Extends the help output to list the valid modes for each commands.
Fixes a memory leak of the returned command_name() string.

14 years agorefactor command mode detection
Zachary T Welch [Fri, 27 Nov 2009 18:16:42 +0000 (10:16 -0800)]
refactor command mode detection

Splits the check for a command's ability to run into a helper.

This also fixes a bug whereby commands that specified COMMAND_EXEC
were allowed to run during the configuration stage.  This allowed
problematic commands to be called before 'init', defeating the intention
of specifying that command mode.  With this change, the run_command()
helper denies access to handlers that should run only after 'init'
during the configuration stage.

14 years agoadd command private data setter/accessor
Zachary T Welch [Sat, 28 Nov 2009 00:30:28 +0000 (16:30 -0800)]
add command private data setter/accessor

Presently, commands registration taks a static handler data pointer.
This patch adds support for commands that require a dynamic pointer,
such as those registered in a dynamic context (e.g. subcommands for a
user-created 'foo.cpu' command).  The command_set_handler_data will
update a command (group) to use a new context pointer, while the
CMD_DATA macro allows command handlers to access the value.
Jim handlers should find this value in interp->cmdPrivData.

14 years agoadd 'command mode' introspective handler
Zachary T Welch [Sat, 28 Nov 2009 20:29:42 +0000 (12:29 -0800)]
add 'command mode' introspective handler

Allows scripts to behave different depending on the current mode.
Also allows introspection of the mode required for commands.