openocd/src/target/dsp563xx.h
Bernhard Kiesbauer bbb0896cff dsp563xx: Adding breakpoint/watchpoint support.
Added missing breakpoint/watchpoint implementation to dsp563xx target.
Implementation is not yet complete, which means it does not leverage all
available features of the once debug interface.
This does NOT use the openocd breakpoint/watchpoint command because of
the "special" memory address spaces (X/Y/P/L) of the 56k DSP series.

Change-Id: I6840a3ff1e6fdebb38ab7758f164886aff773af6
Signed-off-by: Bernhard Kiesbauer <bernhard@kiesbauer.com>
Reviewed-on: http://openocd.zylin.com/1468
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2013-07-15 10:05:15 +00:00

76 lines
2.6 KiB
C

/***************************************************************************
* Copyright (C) 2009-2011 by Mathias Kuester *
* mkdorg@users.sourceforge.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
***************************************************************************/
#ifndef DSP563XX_H
#define DSP563XX_H
#include <jtag/jtag.h>
#include <target/dsp563xx_once.h>
#define DSP563XX_NUMCOREREGS 54
#define DSP563XX_NUMONCEREGS 25
struct mcu_jtag {
struct jtag_tap *tap;
};
enum breakpoint_usage {
BPU_NONE = 0,
BPU_BREAKPOINT,
BPU_WATCHPOINT
};
struct hardware_breakpoint {
enum breakpoint_usage used;
};
struct dsp563xx_common {
struct mcu_jtag jtag_info;
struct reg_cache *core_cache;
uint32_t core_regs[DSP563XX_NUMCOREREGS];
struct once_reg once_regs[DSP563XX_NUMONCEREGS];
/* register cache to processor synchronization */
int (*read_core_reg) (struct target *target, int num);
int (*write_core_reg) (struct target *target, int num);
struct hardware_breakpoint hardware_breakpoint[1];
/*Were the hardware breakpoints cleared on startup?*/
int hardware_breakpoints_cleared;
};
struct dsp563xx_core_reg {
uint32_t num;
const char *name;
uint32_t size;
uint8_t eame;
uint32_t instr_mask;
struct target *target;
struct dsp563xx_common *dsp563xx_common;
};
static inline struct dsp563xx_common *target_to_dsp563xx(struct target *target)
{
return target->arch_info;
}
#endif /* DSP563XX_H */