#ifndef XSCALE_H
#define XSCALE_H
-#include <target/armv4_5.h>
-#include <target/armv4_5_mmu.h>
-#include <target/trace.h>
+#include "arm.h"
+#include "armv4_5_mmu.h"
+#include "trace.h"
#define XSCALE_COMMON_MAGIC 0x58534341
uint32_t chkpt0;
uint32_t chkpt1;
uint32_t last_instruction;
+ unsigned int num_checkpoints;
struct xscale_trace_data *next;
};
+enum trace_mode
+{
+ XSCALE_TRACE_DISABLED,
+ XSCALE_TRACE_FILL,
+ XSCALE_TRACE_WRAP
+};
+
struct xscale_trace
{
- trace_status_t capture_status; /* current state of capture run */
struct image *image; /* source for target opcodes */
struct xscale_trace_data *data; /* linked list of collected trace data */
- int buffer_enabled; /* whether trace buffer is enabled */
- int buffer_fill; /* maximum number of trace runs to read (-1 for wrap-around) */
- int pc_ok;
- uint32_t current_pc;
- arm_state_t core_state; /* current core state (ARM, Thumb, Jazelle) */
+ int buffer_fill; /* maximum number of trace runs to read */
+ 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
{
/* armv4/5 common stuff */
- struct arm armv4_5_common;
+ struct arm arm;
int common_magic;
target_to_xscale(struct target *target)
{
return container_of(target->arch_info, struct xscale_common,
- armv4_5_common);
+ arm);
}
struct xscale_reg
XSCALE_TXRXCTRL,
};
-#define ERROR_XSCALE_NO_TRACE_DATA (-1500)
+#define ERROR_XSCALE_NO_TRACE_DATA (-700)
#endif /* XSCALE_H */