#include "arm_adi_v5.h"
#include "arm.h"
+#include "armv7m_trace.h"
extern const int armv7m_psp_reg_map[];
extern const int armv7m_msp_reg_map[];
-char *armv7m_exception_string(int number);
+const char *armv7m_exception_string(int number);
/* offsets into armv7m core register cache */
enum {
FPv4_SP,
};
+#define ARMV7M_NUM_CORE_REGS (ARMV7M_xPSR + 1)
+#define ARMV7M_NUM_CORE_REGS_NOFP (ARMV7M_NUM_CORE_REGS + 6)
+
#define ARMV7M_COMMON_MAGIC 0x2A452A45
struct armv7m_common {
int common_magic;
int exception_number;
- struct adiv5_dap dap;
+
+ /* AP this processor is connected to in the DAP */
+ uint8_t debug_ap;
int fp_feature;
uint32_t demcr;
/* stlink is a high level adapter, does not support all functions */
bool stlink;
+ struct armv7m_trace_config trace_config;
+
/* Direct processor core register read and writes */
int (*load_core_reg_u32)(struct target *target, uint32_t num, uint32_t *value);
int (*store_core_reg_u32)(struct target *target, uint32_t num, uint32_t value);
};
struct reg_cache *armv7m_build_reg_cache(struct target *target);
+void armv7m_free_reg_cache(struct target *target);
+
enum armv7m_mode armv7m_number_to_mode(int number);
int armv7m_mode_to_number(enum armv7m_mode mode);