summaryrefslogtreecommitdiff
path: root/src/target/xscale.h
diff options
context:
space:
mode:
authordrath <drath@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2007-03-28 16:31:55 +0000
committerdrath <drath@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2007-03-28 16:31:55 +0000
commit4a5f45e87d593d6911da680cb92ffbc9b43c9486 (patch)
treed41ddb8594b5fab03c12075cbc4d3888d59ed027 /src/target/xscale.h
parent5ed126c4f90948fbf53d186dc4ef49018fb5ecfc (diff)
downloadopenocd+libswd-4a5f45e87d593d6911da680cb92ffbc9b43c9486.tar.gz
openocd+libswd-4a5f45e87d593d6911da680cb92ffbc9b43c9486.tar.bz2
openocd+libswd-4a5f45e87d593d6911da680cb92ffbc9b43c9486.tar.xz
openocd+libswd-4a5f45e87d593d6911da680cb92ffbc9b43c9486.zip
- merged XScale branch back into trunk
- fixed some compiler warnigns in amt_jtagaccel.c, bitbang.c, parport.c - free working area and register stuff if str7x block write algorithm failed - check PC after exiting a target algorithm in armv4_5.c git-svn-id: svn://svn.berlios.de/openocd/trunk@135 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/target/xscale.h')
-rw-r--r--src/target/xscale.h145
1 files changed, 145 insertions, 0 deletions
diff --git a/src/target/xscale.h b/src/target/xscale.h
new file mode 100644
index 00000000..9fcb265e
--- /dev/null
+++ b/src/target/xscale.h
@@ -0,0 +1,145 @@
+/***************************************************************************
+ * Copyright (C) 2005 by Dominic Rath *
+ * Dominic.Rath@gmx.de *
+ * *
+ * 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., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+#ifndef XSCALE_H
+#define XSCALE_H
+
+#include "target.h"
+#include "register.h"
+#include "armv4_5.h"
+#include "armv4_5_mmu.h"
+
+#define XSCALE_COMMON_MAGIC 0x58534341
+
+typedef struct xscale_jtag_s
+{
+ /* position in JTAG scan chain */
+ int chain_pos;
+
+ /* IR length and instructions */
+ int ir_length;
+ u32 dbgrx;
+ u32 dbgtx;
+ u32 ldic;
+ u32 dcsr;
+} xscale_jtag_t;
+
+enum xscale_debug_reason
+{
+ XSCALE_DBG_REASON_GENERIC,
+ XSCALE_DBG_REASON_RESET,
+ XSCALE_DBG_REASON_TB_FULL,
+};
+
+typedef struct xscale_common_s
+{
+ int common_magic;
+
+ /* 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;
+ u32 handler_address;
+
+ /* target-endian buffers with exception vectors */
+ u32 low_vectors[8];
+ u32 high_vectors[8];
+
+ /* static low vectors */
+ u8 static_low_vectors_set; /* bit field with static vectors set by the user */
+ u8 static_high_vectors_set; /* bit field with static vectors set by the user */
+ u32 static_low_vectors[8];
+ u32 static_high_vectors[8];
+
+ /* DCache cleaning */
+ u32 cache_clean_address;
+
+ /* whether hold_rst and ext_dbg_break should be set */
+ int hold_rst;
+ int external_debug_break;
+
+ /* breakpoint / watchpoint handling */
+ int force_hw_bkpts;
+ int dbr_available;
+ int dbr0_used;
+ int dbr1_used;
+ int ibcr_available;
+ int ibcr0_used;
+ int ibcr1_used;
+ u32 arm_bkpt;
+ u16 thumb_bkpt;
+
+ u8 vector_catch;
+
+ int trace_buffer_enabled;
+ int trace_buffer_fill;
+
+ int arch_debug_reason;
+
+ /* armv4/5 common stuff */
+ armv4_5_common_t armv4_5_common;
+
+ /* MMU/Caches */
+ armv4_5_mmu_common_t armv4_5_mmu;
+ u32 cp15_control_reg;
+
+ /* possible future enhancements that go beyond XScale common stuff */
+ void *arch_info;
+} xscale_common_t;
+
+typedef struct xscale_reg_s
+{
+ int dbg_handler_number;
+ target_t *target;
+} xscale_reg_t;
+
+enum
+{
+ XSCALE_MAINID, /* 0 */
+ XSCALE_CACHETYPE,
+ XSCALE_CTRL,
+ XSCALE_AUXCTRL,
+ XSCALE_TTB,
+ XSCALE_DAC,
+ XSCALE_FSR,
+ XSCALE_FAR,
+ XSCALE_PID,
+ XSCALE_CPACCESS,
+ XSCALE_IBCR0, /* 10 */
+ XSCALE_IBCR1,
+ XSCALE_DBR0,
+ XSCALE_DBR1,
+ XSCALE_DBCON,
+ XSCALE_TBREG,
+ XSCALE_CHKPT0,
+ XSCALE_CHKPT1,
+ XSCALE_DCSR,
+ XSCALE_TX,
+ XSCALE_RX, /* 20 */
+ XSCALE_TXRXCTRL,
+};
+
+#endif /* XSCALE_H */