summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
0073e7a)
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
struct arm *armv4_5 = &arm7_9->armv4_5_common;
struct reg *reg;
struct arm_reg *reg_arch_info;
struct arm *armv4_5 = &arm7_9->armv4_5_common;
struct reg *reg;
struct arm_reg *reg_arch_info;
- enum armv4_5_mode current_mode = armv4_5->core_mode;
+ enum arm_mode current_mode = armv4_5->core_mode;
int i, j;
int dirty;
int mode_change;
int i, j;
int dirty;
int mode_change;
}
static int arm7_9_read_core_reg(struct target *target, struct reg *r,
}
static int arm7_9_read_core_reg(struct target *target, struct reg *r,
- int num, enum armv4_5_mode mode)
+ int num, enum arm_mode mode)
{
uint32_t* reg_p[16];
uint32_t value;
{
uint32_t* reg_p[16];
uint32_t value;
}
static int arm7_9_write_core_reg(struct target *target, struct reg *r,
}
static int arm7_9_write_core_reg(struct target *target, struct reg *r,
- int num, enum armv4_5_mode mode, uint32_t value)
+ int num, enum arm_mode mode, uint32_t value)
{
uint32_t reg[16];
struct arm_reg *areg = r->arch_info;
{
uint32_t reg[16];
struct arm_reg *areg = r->arch_info;
/* Toggles between recorded core mode (USR, SVC, etc) and a temporary one.
* Routines *must* restore the original mode before returning!!
*/
/* Toggles between recorded core mode (USR, SVC, etc) and a temporary one.
* Routines *must* restore the original mode before returning!!
*/
-static int dpm_modeswitch(struct arm_dpm *dpm, enum armv4_5_mode mode)
+static int dpm_modeswitch(struct arm_dpm *dpm, enum arm_mode mode)
{
int retval;
uint32_t cpsr;
{
int retval;
uint32_t cpsr;
* actually find anything to do...
*/
do {
* actually find anything to do...
*/
do {
- enum armv4_5_mode mode = ARM_MODE_ANY;
+ enum arm_mode mode = ARM_MODE_ANY;
/* may need to pick and set a mode */
if (!did_write) {
/* may need to pick and set a mode */
if (!did_write) {
- enum armv4_5_mode tmode;
did_write = true;
mode = tmode = r->mode;
did_write = true;
mode = tmode = r->mode;
* Caller already filtered out SPSR access; mode is never MODE_SYS
* or MODE_ANY.
*/
* Caller already filtered out SPSR access; mode is never MODE_SYS
* or MODE_ANY.
*/
-static enum armv4_5_mode dpm_mapmode(struct arm *arm,
- unsigned num, enum armv4_5_mode mode)
+static enum arm_mode dpm_mapmode(struct arm *arm,
+ unsigned num, enum arm_mode mode)
- enum armv4_5_mode amode = arm->core_mode;
+ enum arm_mode amode = arm->core_mode;
/* don't switch if the mode is already correct */
if (amode == ARM_MODE_SYS)
/* don't switch if the mode is already correct */
if (amode == ARM_MODE_SYS)
*/
static int arm_dpm_read_core_reg(struct target *target, struct reg *r,
*/
static int arm_dpm_read_core_reg(struct target *target, struct reg *r,
- int regnum, enum armv4_5_mode mode)
+ int regnum, enum arm_mode mode)
{
struct arm_dpm *dpm = target_to_arm(target)->dpm;
int retval;
{
struct arm_dpm *dpm = target_to_arm(target)->dpm;
int retval;
}
static int arm_dpm_write_core_reg(struct target *target, struct reg *r,
}
static int arm_dpm_write_core_reg(struct target *target, struct reg *r,
- int regnum, enum armv4_5_mode mode, uint32_t value)
+ int regnum, enum arm_mode mode, uint32_t value)
{
struct arm_dpm *dpm = target_to_arm(target)->dpm;
int retval;
{
struct arm_dpm *dpm = target_to_arm(target)->dpm;
int retval;
- enum armv4_5_mode mode = ARM_MODE_ANY;
+ enum arm_mode mode = ARM_MODE_ANY;
- enum armv4_5_mode mode = sim->get_mode(sim);
+ enum arm_mode mode = sim->get_mode(sim);
int update_cpsr = 0;
if (instruction.info.load_store_multiple.S)
int update_cpsr = 0;
if (instruction.info.load_store_multiple.S)
uint32_t Rn = sim->get_reg_mode(sim,
instruction.info.load_store_multiple.Rn);
int bits_set = 0;
uint32_t Rn = sim->get_reg_mode(sim,
instruction.info.load_store_multiple.Rn);
int bits_set = 0;
- enum armv4_5_mode mode = sim->get_mode(sim);
+ enum arm_mode mode = sim->get_mode(sim);
for (i = 0; i < 16; i++)
{
for (i = 0; i < 16; i++)
{
-static enum armv4_5_mode armv4_5_get_mode(struct arm_sim_interface *sim)
+static enum arm_mode armv4_5_get_mode(struct arm_sim_interface *sim)
{
struct arm *armv4_5 = (struct arm *)sim->user_data;
{
struct arm *armv4_5 = (struct arm *)sim->user_data;
uint32_t (*get_cpsr)(struct arm_sim_interface *sim, int pos, int bits);
enum armv4_5_state (*get_state)(struct arm_sim_interface *sim);
void (*set_state)(struct arm_sim_interface *sim, enum armv4_5_state mode);
uint32_t (*get_cpsr)(struct arm_sim_interface *sim, int pos, int bits);
enum armv4_5_state (*get_state)(struct arm_sim_interface *sim);
void (*set_state)(struct arm_sim_interface *sim, enum armv4_5_state mode);
- enum armv4_5_mode (*get_mode)(struct arm_sim_interface *sim);
+ enum arm_mode (*get_mode)(struct arm_sim_interface *sim);
}
/** Map PSR mode bits to linear number indexing armv4_5_core_reg_map */
}
/** Map PSR mode bits to linear number indexing armv4_5_core_reg_map */
-int armv4_5_mode_to_number(enum armv4_5_mode mode)
+int arm_mode_to_number(enum arm_mode mode)
{
switch (mode) {
case ARM_MODE_ANY:
{
switch (mode) {
case ARM_MODE_ANY:
}
/** Map linear number indexing armv4_5_core_reg_map to PSR mode bits. */
}
/** Map linear number indexing armv4_5_core_reg_map to PSR mode bits. */
-enum armv4_5_mode armv4_5_number_to_mode(int number)
+enum arm_mode armv4_5_number_to_mode(int number)
{
switch (number) {
case 0:
{
switch (number) {
case 0:
* (Exception modes have both CPSR and SPSR registers ...)
*/
unsigned cookie;
* (Exception modes have both CPSR and SPSR registers ...)
*/
unsigned cookie;
- enum armv4_5_mode mode;
} arm_core_regs[] = {
/* IMPORTANT: we guarantee that the first eight cached registers
* correspond to r0..r7, and the fifteenth to PC, so that callers
} arm_core_regs[] = {
/* IMPORTANT: we guarantee that the first eight cached registers
* correspond to r0..r7, and the fifteenth to PC, so that callers
*/
void arm_set_cpsr(struct arm *arm, uint32_t cpsr)
{
*/
void arm_set_cpsr(struct arm *arm, uint32_t cpsr)
{
- enum armv4_5_mode mode = cpsr & 0x1f;
+ enum arm_mode mode = cpsr & 0x1f;
int num;
/* NOTE: this may be called very early, before the register
int num;
/* NOTE: this may be called very early, before the register
arm->core_mode = mode;
/* mode_to_number() warned; set up a somewhat-sane mapping */
arm->core_mode = mode;
/* mode_to_number() warned; set up a somewhat-sane mapping */
- num = armv4_5_mode_to_number(mode);
+ num = arm_mode_to_number(mode);
if (num < 0) {
mode = ARM_MODE_USR;
num = 0;
if (num < 0) {
mode = ARM_MODE_USR;
num = 0;
* it won't hurt since CPSR is always flushed anyway.
*/
if (armv4_5_target->core_mode !=
* it won't hurt since CPSR is always flushed anyway.
*/
if (armv4_5_target->core_mode !=
- (enum armv4_5_mode)(value & 0x1f)) {
+ (enum arm_mode)(value & 0x1f)) {
LOG_DEBUG("changing ARM core mode to '%s'",
arm_mode_name(value & 0x1f));
value &= ~((1 << 24) | (1 << 5));
LOG_DEBUG("changing ARM core mode to '%s'",
arm_mode_name(value & 0x1f));
value &= ~((1 << 24) | (1 << 5));
#include <helper/command.h>
#include <helper/command.h>
-typedef enum armv4_5_mode
{
ARM_MODE_USR = 16,
ARM_MODE_FIQ = 17,
{
ARM_MODE_USR = 16,
ARM_MODE_FIQ = 17,
ARM_MODE_UND = 27,
ARM_MODE_SYS = 31,
ARM_MODE_ANY = -1
ARM_MODE_UND = 27,
ARM_MODE_SYS = 31,
ARM_MODE_ANY = -1
const char *arm_mode_name(unsigned psr_mode);
bool is_arm_mode(unsigned psr_mode);
const char *arm_mode_name(unsigned psr_mode);
bool is_arm_mode(unsigned psr_mode);
-int armv4_5_mode_to_number(enum armv4_5_mode mode);
-enum armv4_5_mode armv4_5_number_to_mode(int number);
+int arm_mode_to_number(enum arm_mode mode);
+enum arm_mode armv4_5_number_to_mode(int number);
typedef enum armv4_5_state
{
typedef enum armv4_5_state
{
extern const int armv4_5_core_reg_map[8][17];
#define ARMV4_5_CORE_REG_MODE(cache, mode, num) \
extern const int armv4_5_core_reg_map[8][17];
#define ARMV4_5_CORE_REG_MODE(cache, mode, num) \
- cache->reg_list[armv4_5_core_reg_map[armv4_5_mode_to_number(mode)][num]]
+ cache->reg_list[armv4_5_core_reg_map[arm_mode_to_number(mode)][num]]
/* offset into armv4_5 core register cache -- OBSOLETE, DO NOT USE! */
enum { ARMV4_5_CPSR = 31, };
/* offset into armv4_5 core register cache -- OBSOLETE, DO NOT USE! */
enum { ARMV4_5_CPSR = 31, };
* seen on for example ARM7TDMI cores. ARM_MODE_MON indicates three
* more registers are shadowed, for "Secure Monitor" mode.
*/
* seen on for example ARM7TDMI cores. ARM_MODE_MON indicates three
* more registers are shadowed, for "Secure Monitor" mode.
*/
- enum armv4_5_mode core_type;
+ enum arm_mode core_type;
- enum armv4_5_mode core_mode;
+ enum arm_mode core_mode;
enum armv4_5_state core_state;
/** Flag reporting unavailability of the BKPT instruction. */
enum armv4_5_state core_state;
/** Flag reporting unavailability of the BKPT instruction. */
int (*full_context)(struct target *target);
int (*read_core_reg)(struct target *target, struct reg *reg,
int (*full_context)(struct target *target);
int (*read_core_reg)(struct target *target, struct reg *reg,
- int num, enum armv4_5_mode mode);
+ int num, enum arm_mode mode);
int (*write_core_reg)(struct target *target, struct reg *reg,
int (*write_core_reg)(struct target *target, struct reg *reg,
- int num, enum armv4_5_mode mode, uint32_t value);
+ int num, enum arm_mode mode, uint32_t value);
/** Read coprocessor register. */
int (*mrc)(struct target *target, int cpnum,
/** Read coprocessor register. */
int (*mrc)(struct target *target, int cpnum,
- enum armv4_5_mode core_mode;
+ enum arm_mode core_mode;
enum armv4_5_state core_state;
};
struct arm_reg
{
int num;
enum armv4_5_state core_state;
};
struct arm_reg
{
int num;
- enum armv4_5_mode mode;
struct target *target;
struct arm *armv4_5_common;
uint32_t value;
struct target *target;
struct arm *armv4_5_common;
uint32_t value;
- enum armv4_5_mode core_mode;
+ enum arm_mode core_mode;
enum armv4_5_state core_state;
};
struct armv7a_core_reg
{
int num;
enum armv4_5_state core_state;
};
struct armv7a_core_reg
{
int num;
- enum armv4_5_mode mode;
struct target *target;
struct armv7a_common *armv7a_common;
};
struct target *target;
struct armv7a_common *armv7a_common;
};
}
static int xscale_read_core_reg(struct target *target, struct reg *r,
}
static int xscale_read_core_reg(struct target *target, struct reg *r,
- int num, enum armv4_5_mode mode)
+ int num, enum arm_mode mode)
{
/** \todo add debug handler support for core register reads */
LOG_ERROR("not implemented");
{
/** \todo add debug handler support for core register reads */
LOG_ERROR("not implemented");
}
static int xscale_write_core_reg(struct target *target, struct reg *r,
}
static int xscale_write_core_reg(struct target *target, struct reg *r,
- int num, enum armv4_5_mode mode, uint32_t value)
+ int num, enum arm_mode mode, uint32_t value)
{
/** \todo add debug handler support for core register writes */
LOG_ERROR("not implemented");
{
/** \todo add debug handler support for core register writes */
LOG_ERROR("not implemented");
*/
for (i = 1; i < 7; i++)
{
*/
for (i = 1; i < 7; i++)
{
- enum armv4_5_mode mode = armv4_5_number_to_mode(i);
+ enum arm_mode mode = armv4_5_number_to_mode(i);
bool valid = true;
struct reg *r;
bool valid = true;
struct reg *r;
*/
for (i = 1; i < 7; i++)
{
*/
for (i = 1; i < 7; i++)
{
- enum armv4_5_mode mode = armv4_5_number_to_mode(i);
+ enum arm_mode mode = armv4_5_number_to_mode(i);
struct reg *r;
if (mode == ARM_MODE_USR)
struct reg *r;
if (mode == ARM_MODE_USR)
Linking to existing account procedure
If you already have an account and want to add another login method
you
MUST first sign in with your existing account and
then change URL to read
https://review.openocd.org/login/?link
to get to this page again but this time it'll work for linking. Thank you.
SSH host keys fingerprints
1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=.. |
|+o.. . |
|*.o . . |
|+B . . . |
|Bo. = o S |
|Oo.+ + = |
|oB=.* = . o |
| =+=.+ + E |
|. .=o . o |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)