ARM: move mode functions out of header
They're really too big to inline, at least for code that's not in any performance-critical loops. Also move the associated string table to the rodata section. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
This commit is contained in:
+4
-38
@@ -41,7 +41,10 @@ typedef enum armv4_5_mode
|
||||
ARMV4_5_MODE_ANY = -1
|
||||
} armv4_5_mode_t;
|
||||
|
||||
extern char** armv4_5_mode_strings;
|
||||
int armv4_5_mode_to_number(enum armv4_5_mode mode);
|
||||
enum armv4_5_mode armv4_5_number_to_mode(int number);
|
||||
|
||||
extern const char **armv4_5_mode_strings;
|
||||
|
||||
typedef enum armv4_5_state
|
||||
{
|
||||
@@ -136,43 +139,6 @@ struct armv4_5_core_reg
|
||||
struct reg_cache* armv4_5_build_reg_cache(struct target *target,
|
||||
struct arm *armv4_5_common);
|
||||
|
||||
/* map psr mode bits to linear number */
|
||||
static __inline int armv4_5_mode_to_number(enum armv4_5_mode mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case ARMV4_5_MODE_USR: return 0; break;
|
||||
case ARMV4_5_MODE_FIQ: return 1; break;
|
||||
case ARMV4_5_MODE_IRQ: return 2; break;
|
||||
case ARMV4_5_MODE_SVC: return 3; break;
|
||||
case ARMV4_5_MODE_ABT: return 4; break;
|
||||
case ARMV4_5_MODE_UND: return 5; break;
|
||||
case ARMV4_5_MODE_SYS: return 6; break;
|
||||
case ARMV4_5_MODE_ANY: return 0; break; /* map MODE_ANY to user mode */
|
||||
default:
|
||||
LOG_ERROR("invalid mode value encountered %d", mode);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* map linear number to mode bits */
|
||||
static __inline enum armv4_5_mode armv4_5_number_to_mode(int number)
|
||||
{
|
||||
switch (number)
|
||||
{
|
||||
case 0: return ARMV4_5_MODE_USR; break;
|
||||
case 1: return ARMV4_5_MODE_FIQ; break;
|
||||
case 2: return ARMV4_5_MODE_IRQ; break;
|
||||
case 3: return ARMV4_5_MODE_SVC; break;
|
||||
case 4: return ARMV4_5_MODE_ABT; break;
|
||||
case 5: return ARMV4_5_MODE_UND; break;
|
||||
case 6: return ARMV4_5_MODE_SYS; break;
|
||||
default:
|
||||
LOG_ERROR("mode index out of bounds %d", number);
|
||||
return ARMV4_5_MODE_ANY;
|
||||
}
|
||||
};
|
||||
|
||||
int armv4_5_arch_state(struct target *target);
|
||||
int armv4_5_get_gdb_reg_list(struct target *target,
|
||||
struct reg **reg_list[], int *reg_list_size);
|
||||
|
||||
Reference in New Issue
Block a user