Blame sim/frv/sim-main.h

Packit Service 706eca
/* frv simulator support code
Packit Service 706eca
   Copyright (C) 1998-2018 Free Software Foundation, Inc.
Packit Service 706eca
   Contributed by Red Hat.
Packit Service 706eca
Packit Service 706eca
This file is part of the GNU simulators.
Packit Service 706eca
Packit Service 706eca
This program is free software; you can redistribute it and/or modify
Packit Service 706eca
it under the terms of the GNU General Public License as published by
Packit Service 706eca
the Free Software Foundation; either version 3 of the License, or
Packit Service 706eca
(at your option) any later version.
Packit Service 706eca
Packit Service 706eca
This program is distributed in the hope that it will be useful,
Packit Service 706eca
but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 706eca
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 706eca
GNU General Public License for more details.
Packit Service 706eca
Packit Service 706eca
You should have received a copy of the GNU General Public License
Packit Service 706eca
along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
Packit Service 706eca
Packit Service 706eca
/* Main header for the frv.  */
Packit Service 706eca
Packit Service 706eca
/* sim-basics.h includes config.h but cgen-types.h must be included before
Packit Service 706eca
   sim-basics.h and cgen-types.h needs config.h.  */
Packit Service 706eca
#include "config.h"
Packit Service 706eca
Packit Service 706eca
/* This is a global setting.  Different cpu families can't mix-n-match -scache
Packit Service 706eca
   and -pbb.  However some cpu families may use -simple while others use
Packit Service 706eca
   one of -scache/-pbb. ???? */
Packit Service 706eca
#define WITH_SCACHE_PBB 0
Packit Service 706eca
Packit Service 706eca
#include "symcat.h"
Packit Service 706eca
#include "sim-basics.h"
Packit Service 706eca
#include "cgen-types.h"
Packit Service 706eca
#include "frv-desc.h"
Packit Service 706eca
#include "frv-opc.h"
Packit Service 706eca
#include "arch.h"
Packit Service 706eca
Packit Service 706eca
#define SIM_ENGINE_HALT_HOOK(SD, LAST_CPU, CIA) \
Packit Service 706eca
  frv_sim_engine_halt_hook ((SD), (LAST_CPU), (CIA))
Packit Service 706eca
Packit Service 706eca
#define SIM_ENGINE_RESTART_HOOK(SD, LAST_CPU, CIA) 0
Packit Service 706eca
Packit Service 706eca
#include "sim-base.h"
Packit Service 706eca
#include "cgen-sim.h"
Packit Service 706eca
#include "frv-sim.h"
Packit Service 706eca
#include "cache.h"
Packit Service 706eca
#include "registers.h"
Packit Service 706eca
#include "profile.h"
Packit Service 706eca
Packit Service 706eca
void frv_sim_engine_halt_hook (SIM_DESC, SIM_CPU *, sim_cia);
Packit Service 706eca
Packit Service 706eca
extern void frv_sim_close (SIM_DESC sd, int quitting);
Packit Service 706eca
#define SIM_CLOSE_HOOK(...) frv_sim_close (__VA_ARGS__)
Packit Service 706eca

Packit Service 706eca
/* The _sim_cpu struct.  */
Packit Service 706eca
Packit Service 706eca
struct _sim_cpu {
Packit Service 706eca
  /* sim/common cpu base.  */
Packit Service 706eca
  sim_cpu_base base;
Packit Service 706eca
Packit Service 706eca
  /* Static parts of cgen.  */
Packit Service 706eca
  CGEN_CPU cgen_cpu;
Packit Service 706eca
Packit Service 706eca
  /* CPU specific parts go here.
Packit Service 706eca
     Note that in files that don't need to access these pieces WANT_CPU_FOO
Packit Service 706eca
     won't be defined and thus these parts won't appear.  This is ok in the
Packit Service 706eca
     sense that things work.  It is a source of bugs though.
Packit Service 706eca
     One has to of course be careful to not take the size of this
Packit Service 706eca
     struct and no structure members accessed in non-cpu specific files can
Packit Service 706eca
     go after here.  Oh for a better language.  */
Packit Service 706eca
#if defined (WANT_CPU_FRVBF)
Packit Service 706eca
  FRVBF_CPU_DATA cpu_data;
Packit Service 706eca
Packit Service 706eca
  /* Control information for registers */
Packit Service 706eca
  FRV_REGISTER_CONTROL register_control;
Packit Service 706eca
#define CPU_REGISTER_CONTROL(cpu) (& (cpu)->register_control)
Packit Service 706eca
Packit Service 706eca
  FRV_VLIW vliw;
Packit Service 706eca
#define CPU_VLIW(cpu) (& (cpu)->vliw)
Packit Service 706eca
Packit Service 706eca
  FRV_CACHE insn_cache;
Packit Service 706eca
#define CPU_INSN_CACHE(cpu) (& (cpu)->insn_cache)
Packit Service 706eca
Packit Service 706eca
  FRV_CACHE data_cache;
Packit Service 706eca
#define CPU_DATA_CACHE(cpu) (& (cpu)->data_cache)
Packit Service 706eca
Packit Service 706eca
  FRV_PROFILE_STATE profile_state;
Packit Service 706eca
#define CPU_PROFILE_STATE(cpu) (& (cpu)->profile_state)
Packit Service 706eca
Packit Service 706eca
  int debug_state;
Packit Service 706eca
#define CPU_DEBUG_STATE(cpu) ((cpu)->debug_state)
Packit Service 706eca
Packit Service 706eca
  SI load_address;
Packit Service 706eca
#define CPU_LOAD_ADDRESS(cpu) ((cpu)->load_address)
Packit Service 706eca
Packit Service 706eca
  SI load_length;
Packit Service 706eca
#define CPU_LOAD_LENGTH(cpu) ((cpu)->load_length)
Packit Service 706eca
Packit Service 706eca
  SI load_flag;
Packit Service 706eca
#define CPU_LOAD_SIGNED(cpu) ((cpu)->load_flag)
Packit Service 706eca
#define CPU_LOAD_LOCK(cpu) ((cpu)->load_flag)
Packit Service 706eca
Packit Service 706eca
  SI store_flag;
Packit Service 706eca
#define CPU_RSTR_INVALIDATE(cpu) ((cpu)->store_flag)
Packit Service 706eca
Packit Service 706eca
  unsigned long elf_flags;
Packit Service 706eca
#define CPU_ELF_FLAGS(cpu) ((cpu)->elf_flags)
Packit Service 706eca
#endif /* defined (WANT_CPU_FRVBF) */
Packit Service 706eca
};
Packit Service 706eca

Packit Service 706eca
/* The sim_state struct.  */
Packit Service 706eca
Packit Service 706eca
struct sim_state {
Packit Service 706eca
  sim_cpu *cpu[MAX_NR_PROCESSORS];
Packit Service 706eca
Packit Service 706eca
  CGEN_STATE cgen_state;
Packit Service 706eca
Packit Service 706eca
  sim_state_base base;
Packit Service 706eca
};
Packit Service 706eca

Packit Service 706eca
/* Misc.  */
Packit Service 706eca
Packit Service 706eca
/* Catch address exceptions.  */
Packit Service 706eca
extern SIM_CORE_SIGNAL_FN frv_core_signal;
Packit Service 706eca
#define SIM_CORE_SIGNAL(SD,CPU,CIA,MAP,NR_BYTES,ADDR,TRANSFER,ERROR) \
Packit Service 706eca
frv_core_signal ((SD), (CPU), (CIA), (MAP), (NR_BYTES), (ADDR), \
Packit Service 706eca
		  (TRANSFER), (ERROR))
Packit Service 706eca
Packit Service 706eca
/* Default memory size.  */
Packit Service 706eca
#define FRV_DEFAULT_MEM_SIZE 0x800000 /* 8M */