+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
/***************************************************************************
* Copyright (C) 2005 by Dominic Rath *
* Dominic.Rath@gmx.de *
* *
* Copyright (C) 2007,2008 Øyvind Harboe *
* oyvind.harboe@zylin.com *
- * *
- * 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
+
+#ifndef OPENOCD_TARGET_XSCALE_H
+#define OPENOCD_TARGET_XSCALE_H
#include "arm.h"
#include "armv4_5_mmu.h"
#include "trace.h"
-#define XSCALE_COMMON_MAGIC 0x58534341
+#define XSCALE_COMMON_MAGIC 0x58534341U
/* These four JTAG instructions are architecturally defined.
* Lengths are core-specific; originally 5 bits, later 7.
#define XSCALE_IXP4XX_PXA2XX 0x0
#define XSCALE_PXA3XX 0x4
-enum xscale_debug_reason
-{
+enum xscale_debug_reason {
XSCALE_DBG_REASON_GENERIC,
XSCALE_DBG_REASON_RESET,
XSCALE_DBG_REASON_TB_FULL,
};
-enum xscale_trace_entry_type
-{
+enum xscale_trace_entry_type {
XSCALE_TRACE_MESSAGE = 0x0,
XSCALE_TRACE_ADDRESS = 0x1,
};
-struct xscale_trace_entry
-{
+struct xscale_trace_entry {
uint8_t data;
enum xscale_trace_entry_type type;
};
-struct xscale_trace_data
-{
+struct xscale_trace_data {
struct xscale_trace_entry *entries;
int depth;
uint32_t chkpt0;
struct xscale_trace_data *next;
};
-enum trace_mode
-{
- XSCALE_TRACE_DISABLED,
- XSCALE_TRACE_FILL,
- XSCALE_TRACE_WRAP
+enum trace_mode {
+ XSCALE_TRACE_DISABLED,
+ XSCALE_TRACE_FILL,
+ XSCALE_TRACE_WRAP
};
-struct xscale_trace
-{
+struct xscale_trace {
struct image *image; /* source for target opcodes */
struct xscale_trace_data *data; /* linked list of collected trace data */
int buffer_fill; /* maximum number of trace runs to read */
- int fill_counter; /* running count during trace collection */
- enum trace_mode mode;
+ int fill_counter; /* running count during trace collection */
+ enum trace_mode mode;
enum arm_state core_state; /* current core state (ARM, Thumb) */
};
-struct xscale_common
-{
+struct xscale_common {
+ unsigned int common_magic;
+
/* armv4/5 common stuff */
struct arm arm;
- int common_magic;
-
/* XScale registers (CP15, DBG) */
struct reg_cache *reg_cache;
static inline struct xscale_common *
target_to_xscale(struct target *target)
{
- return container_of(target->arch_info, struct xscale_common,
- arm);
+ return container_of(target->arch_info, struct xscale_common, arm);
}
-struct xscale_reg
-{
+struct xscale_reg {
int dbg_handler_number;
struct target *target;
};
-enum
-{
+enum {
XSCALE_MAINID, /* 0 */
XSCALE_CACHETYPE,
XSCALE_CTRL,
#define ERROR_XSCALE_NO_TRACE_DATA (-700)
-#endif /* XSCALE_H */
+/* DCSR bit and field definitions */
+#define DCSR_TR (1 << 16)
+#define DCSR_TU (1 << 17)
+#define DCSR_TS (1 << 18)
+#define DCSR_TA (1 << 19)
+#define DCSR_TD (1 << 20)
+#define DCSR_TI (1 << 22)
+#define DCSR_TF (1 << 23)
+#define DCSR_TRAP_MASK \
+ (DCSR_TF | DCSR_TI | DCSR_TD | DCSR_TA | DCSR_TS | DCSR_TU | DCSR_TR)
+
+#endif /* OPENOCD_TARGET_XSCALE_H */