openocd/src/target/arm720t.h
David Brownell 6a0af06bd9 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>
2009-11-05 22:04:25 -08:00

46 lines
2.0 KiB
C

/***************************************************************************
* Copyright (C) 2005 by Dominic Rath *
* Dominic.Rath@gmx.de *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef ARM720T_H
#define ARM720T_H
#include "arm7tdmi.h"
#include "armv4_5_mmu.h"
#define ARM720T_COMMON_MAGIC 0xa720a720
typedef struct arm720t_common_s
{
arm7tdmi_common_t arm7tdmi_common;
uint32_t common_magic;
armv4_5_mmu_common_t armv4_5_mmu;
uint32_t cp15_control_reg;
uint32_t fsr_reg;
uint32_t far_reg;
} arm720t_common_t;
static inline struct arm720t_common_s *
target_to_arm720(struct target_s *target)
{
return container_of(target->arch_info, struct arm720t_common_s,
arm7tdmi_common.arm7_9_common.armv4_5_common);
}
#endif /* ARM720T_H */