From: David B. <dbr...@us...> - 2009-10-16 22:53:02
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Main OpenOCD repository". The branch, master has been updated via 0bd885f539dc6e085a2b16851ab4e5173aa22a6c (commit) from 82c1c78d5e26351fb15c06410ad519a9b175d30c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 0bd885f539dc6e085a2b16851ab4e5173aa22a6c Author: David Brownell <dbr...@us...> Date: Fri Oct 16 13:52:40 2009 -0700 xscale: better fix for debug_handler.bin Generate a C struct with the data, and use that, instead of an assembly language file. The assembly language causes issues on Darwin and MS-Windows, which don't necessarily use GNU AS; or if they do, don't necessarily use its ELF syntax. It's also better in two other ways: fewer global symbols; and the init-time size check gets optimized away at compile time. (Unless it fails, in which case bigger chunks of the file vanish.) Signed-off-by: David Brownell <dbr...@us...> diff --git a/configure.in b/configure.in index 84574be..8e2881c 100644 --- a/configure.in +++ b/configure.in @@ -16,7 +16,6 @@ AC_LANG_C AC_PROG_CC AC_PROG_CC_C99 AM_PROG_CC_C_O -AM_PROG_AS AC_PROG_RANLIB dnl disable checks for C++, Fortran and GNU Java Compiler diff --git a/src/helper/Makefile.am b/src/helper/Makefile.am index 7047253..67250a1 100644 --- a/src/helper/Makefile.am +++ b/src/helper/Makefile.am @@ -52,12 +52,16 @@ noinst_HEADERS = \ startup.tcl \ bin2char.c -bin2char$(EXEEXT_FOR_BUILD): bin2char.c +BIN2C = bin2char$(EXEEXT_FOR_BUILD) + +BUILT_SOURCES = $(BIN2C) + +$(BIN2C): bin2char.c ${CC_FOR_BUILD} ${CFLAGS_FOR_BUILD} $(srcdir)/bin2char.c -o $@ # Convert .tcl to cfile -startup_tcl.c: startup.tcl bin2char$(EXEEXT_FOR_BUILD) - ./bin2char$(EXEEXT_FOR_BUILD) startup_tcl < $(srcdir)/startup.tcl > $@ +startup_tcl.c: startup.tcl $(BIN2C) + ./$(BIN2C) startup_tcl < $(srcdir)/startup.tcl > $@ # add startup_tcl.c to make clean list CLEANFILES = startup_tcl.c bin2char$(EXEEXT_FOR_BUILD) diff --git a/src/target/Makefile.am b/src/target/Makefile.am index a2c34f0..ea1641e 100644 --- a/src/target/Makefile.am +++ b/src/target/Makefile.am @@ -10,11 +10,10 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/jtag \ -I$(top_srcdir)/src/xsvf -# ideally this would be specific to xscale_debug.S ... -libtarget_la_CCASFLAGS = \ - -Wa,-I$(top_srcdir)/src/target \ - $(AM_CCASFLAGS) +BIN2C = $(top_srcdir)/src/helper/bin2char$(EXEEXT_FOR_BUILD) +xscale_debug.h: $(BIN2C) xscale/debug_handler.bin + $(BIN2C) < xscale/debug_handler.bin xscale_debug_handler > xscale_debug.h METASOURCES = AUTO noinst_LTLIBRARIES = libtarget.la @@ -41,7 +40,6 @@ libtarget_la_SOURCES = \ feroceon.c \ etb.c \ xscale.c \ - xscale_debug.S \ arm_simulator.c \ image.c \ armv7m.c \ @@ -62,6 +60,9 @@ libtarget_la_SOURCES = \ mips_ejtag.c \ avrt.c +BUILT_SOURCES = \ + xscale_debug.h + noinst_HEADERS = \ target.h \ target_type.h \ @@ -85,6 +86,7 @@ noinst_HEADERS = \ arm926ejs.h \ etb.h \ xscale.h \ + xscale_debug.h \ arm_simulator.h \ image.h \ armv7m.h \ diff --git a/src/target/xscale.c b/src/target/xscale.c index dd16b35..640eb01 100644 --- a/src/target/xscale.c +++ b/src/target/xscale.c @@ -69,6 +69,17 @@ static int xscale_unset_breakpoint(struct target_s *, breakpoint_t *); static int xscale_read_trace(target_t *); +/* This XScale "debug handler" is loaded into the processor's + * mini-ICache, which is 2K of code writable only via JTAG. + * + * FIXME the OpenOCD "bin2char" utility currently doesn't handle + * binary files cleanly. It's string oriented, and terminates them + * with a NUL character. Better would be to generate the constants + * and let other code decide names, scoping, and other housekeeping. + */ +static /* unsigned const char xscale_debug_handler[] = ... */ +#include "xscale_debug.h" + static char *const xscale_reg_list[] = { "XSCALE_MAINID", /* 0 */ @@ -1594,7 +1605,7 @@ static int xscale_deassert_reset(target_t *target) * force that, so writing new contents is reliable... */ address = xscale->handler_address; - for (unsigned binary_size = xscale_debug_handler_size; + for (unsigned binary_size = sizeof xscale_debug_handler - 1; binary_size > 0; binary_size -= buf_cnt, buffer += buf_cnt) { @@ -3030,7 +3041,7 @@ static int xscale_target_create(struct target_s *target, Jim_Interp *interp) { xscale_common_t *xscale; - if (xscale_debug_handler_size > 0x800) { + if (sizeof xscale_debug_handler - 1 > 0x800) { LOG_ERROR("debug_handler.bin: larger than 2kb"); return ERROR_FAIL; } diff --git a/src/target/xscale.h b/src/target/xscale.h index 9d92550..a5d83ee 100644 --- a/src/target/xscale.h +++ b/src/target/xscale.h @@ -170,10 +170,4 @@ enum #define ERROR_XSCALE_NO_TRACE_DATA (-1500) -/* This XScale "debug handler" is loaded into the processor's - * mini-ICache, which is 2K of code writable only via JTAG. - */ -extern const uint8_t xscale_debug_handler[]; -extern const uint32_t xscale_debug_handler_size; - #endif /* XSCALE_H */ diff --git a/src/target/xscale_debug.S b/src/target/xscale_debug.S deleted file mode 100644 index 0a7b87d..0000000 --- a/src/target/xscale_debug.S +++ /dev/null @@ -1,13 +0,0 @@ - .section .rodata - - .align 4 - .global xscale_debug_handler -xscale_debug_handler: - .incbin "xscale/debug_handler.bin" - .size xscale_debug_handler, . - xscale_debug_handler - - .align 4 - .global xscale_debug_handler_size -xscale_debug_handler_size: - .word . - xscale_debug_handler - .size xscale_debug_handler_size, 4 ----------------------------------------------------------------------- Summary of changes: configure.in | 1 - src/helper/Makefile.am | 10 +++++++--- src/target/Makefile.am | 12 +++++++----- src/target/xscale.c | 15 +++++++++++++-- src/target/xscale.h | 6 ------ src/target/xscale_debug.S | 13 ------------- 6 files changed, 27 insertions(+), 30 deletions(-) delete mode 100644 src/target/xscale_debug.S hooks/post-receive -- Main OpenOCD repository |