more xscale cleanup (mostly removing JTAG hooks)

Streamline/shrink some needless JTAG stuff:

 - Use #defines for the JTAG instructions; they can't ever change
 - Remove an unused (!) shadow of tap->ir_length
 - Stop using a copy of target->tap
 - Don't bother saving the variant after sanity checking ir_length

Also, make target_create() work as on other targets:  build the
register cache later, making init_target() no longer be a NOP.
Handle malloc failure; remove a comment that was obsoleted by the
not-so-new target syntax.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
This commit is contained in:
David Brownell
2009-10-12 02:39:01 -07:00
parent 026559068d
commit 9f6c23f479
2 changed files with 64 additions and 87 deletions

View File

@@ -29,18 +29,13 @@
#define XSCALE_COMMON_MAGIC 0x58534341
typedef struct xscale_jtag_s
{
/* position in JTAG scan chain */
jtag_tap_t *tap;
/* IR length and instructions */
int ir_length;
uint32_t dbgrx;
uint32_t dbgtx;
uint32_t ldic;
uint32_t dcsr;
} xscale_jtag_t;
/* These four JTAG instructions are architecturally defined.
* Lengths are core-specific; originally 5 bits, later 7.
*/
#define XSCALE_DBGRX 0x02
#define XSCALE_DBGTX 0x10
#define XSCALE_LDIC 0x07
#define XSCALE_SELDCSR 0x09
enum xscale_debug_reason
{
@@ -90,11 +85,6 @@ typedef struct xscale_common_s
/* XScale registers (CP15, DBG) */
reg_cache_t *reg_cache;
/* pxa250, pxa255, pxa27x, ixp42x, ... */
char *variant;
xscale_jtag_t jtag_info;
/* current state of the debug handler */
int handler_installed;
int handler_running;