ARM: shrink offsets

Move various embedded target structs to the beginnings of
their containers ... pretty much the way C++ or Obj-C
would for single inheritance.

This shrinks code that accesses those embedded structs by
letting common offsets use smaller instructions.  Sample
before/after sizes (on amd64):

  17181	    312	      0	  17493	   4455	arm920t.o
  16810	    312	      0	  17122	   42e2	arm920t.o

Where the "after" is the smaller number, with this patch
over the ones leveraging that embedding knowledge.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
__archive__
David Brownell 2009-11-05 22:04:25 -08:00
parent 03ac53a2cf
commit 6a0af06bd9
6 changed files with 8 additions and 8 deletions

View File

@ -27,9 +27,9 @@
typedef struct arm720t_common_s
{
arm7tdmi_common_t arm7tdmi_common;
uint32_t common_magic;
armv4_5_mmu_common_t armv4_5_mmu;
arm7tdmi_common_t arm7tdmi_common;
uint32_t cp15_control_reg;
uint32_t fsr_reg;
uint32_t far_reg;

View File

@ -39,6 +39,7 @@
*/
typedef struct arm7_9_common_s
{
armv4_5_common_t armv4_5_common;
uint32_t common_magic;
arm_jtag_t jtag_info; /**< JTAG information for target */
@ -107,7 +108,6 @@ typedef struct arm7_9_common_s
void (*pre_restore_context)(target_t *target); /**< Callback function called before restoring the processor context */
void (*post_restore_context)(target_t *target); /**< Callback function called after restoring the processor context */
armv4_5_common_t armv4_5_common;
} arm7_9_common_t;

View File

@ -27,9 +27,9 @@
typedef struct arm920t_common_s
{
arm9tdmi_common_t arm9tdmi_common;
uint32_t common_magic;
armv4_5_mmu_common_t armv4_5_mmu;
arm9tdmi_common_t arm9tdmi_common;
uint32_t cp15_control_reg;
uint32_t d_fsr;
uint32_t i_fsr;

View File

@ -27,9 +27,9 @@
typedef struct arm926ejs_common_s
{
arm9tdmi_common_t arm9tdmi_common;
uint32_t common_magic;
armv4_5_mmu_common_t armv4_5_mmu;
arm9tdmi_common_t arm9tdmi_common;
int (*read_cp15)(target_t *target, uint32_t op1, uint32_t op2, uint32_t CRn, uint32_t CRm, uint32_t *value);
int (*write_cp15)(target_t *target, uint32_t op1, uint32_t op2, uint32_t CRn, uint32_t CRm, uint32_t value);
uint32_t cp15_control_reg;

View File

@ -29,8 +29,8 @@
typedef struct arm966e_common_s
{
int common_magic;
arm9tdmi_common_t arm9tdmi_common;
int common_magic;
uint32_t cp15_control_reg;
} arm966e_common_t;

View File

@ -80,6 +80,9 @@ typedef struct xscale_trace_s
typedef struct xscale_common_s
{
/* armv4/5 common stuff */
armv4_5_common_t armv4_5_common;
int common_magic;
/* XScale registers (CP15, DBG) */
@ -121,9 +124,6 @@ typedef struct xscale_common_s
int arch_debug_reason;
/* armv4/5 common stuff */
armv4_5_common_t armv4_5_common;
/* MMU/Caches */
armv4_5_mmu_common_t armv4_5_mmu;
uint32_t cp15_control_reg;