1/* Main header for the m32r. */ 2 3#ifndef SIM_MAIN_H 4#define SIM_MAIN_H 5 6#define USING_SIM_BASE_H /* FIXME: quick hack */ 7 8struct _sim_cpu; /* FIXME: should be in sim-basics.h */ 9typedef struct _sim_cpu SIM_CPU; 10 11#include "symcat.h" 12#include "sim-basics.h" 13#include "cgen-types.h" 14#include "m32r-desc.h" 15#include "m32r-opc.h" 16#include "arch.h" 17 18/* These must be defined before sim-base.h. */ 19typedef USI sim_cia; 20 21#define CIA_GET(cpu) CPU_PC_GET (cpu) 22#define CIA_SET(cpu,val) CPU_PC_SET ((cpu), (val)) 23 24#define SIM_ENGINE_HALT_HOOK(sd, cpu, cia) \ 25do { \ 26 if (cpu) /* null if ctrl-c */ \ 27 sim_pc_set ((cpu), (cia)); \ 28} while (0) 29#define SIM_ENGINE_RESTART_HOOK(sd, cpu, cia) \ 30do { \ 31 sim_pc_set ((cpu), (cia)); \ 32} while (0) 33 34#include "sim-base.h" 35#include "cgen-sim.h" 36#include "m32r-sim.h" 37#include "opcode/cgen.h" 38 39/* The _sim_cpu struct. */ 40 41struct _sim_cpu { 42 /* sim/common cpu base. */ 43 sim_cpu_base base; 44 45 /* Static parts of cgen. */ 46 CGEN_CPU cgen_cpu; 47 48 M32R_MISC_PROFILE m32r_misc_profile; 49#define CPU_M32R_MISC_PROFILE(cpu) (& (cpu)->m32r_misc_profile) 50 51 /* CPU specific parts go here. 52 Note that in files that don't need to access these pieces WANT_CPU_FOO 53 won't be defined and thus these parts won't appear. This is ok in the 54 sense that things work. It is a source of bugs though. 55 One has to of course be careful to not take the size of this 56 struct and no structure members accessed in non-cpu specific files can 57 go after here. Oh for a better language. */ 58#if defined (WANT_CPU_M32RBF) 59 M32RBF_CPU_DATA cpu_data; 60#endif 61#if defined (WANT_CPU_M32RXF) 62 M32RXF_CPU_DATA cpu_data; 63#elif defined (WANT_CPU_M32R2F) 64 M32R2F_CPU_DATA cpu_data; 65#endif 66}; 67 68/* The sim_state struct. */ 69 70struct sim_state { 71 sim_cpu *cpu; 72#define STATE_CPU(sd, n) (/*&*/ (sd)->cpu) 73 74 CGEN_STATE cgen_state; 75 76 sim_state_base base; 77}; 78 79/* Misc. */ 80 81/* Catch address exceptions. */ 82extern SIM_CORE_SIGNAL_FN m32r_core_signal; 83#define SIM_CORE_SIGNAL(SD,CPU,CIA,MAP,NR_BYTES,ADDR,TRANSFER,ERROR) \ 84m32r_core_signal ((SD), (CPU), (CIA), (MAP), (NR_BYTES), (ADDR), \ 85 (TRANSFER), (ERROR)) 86 87/* Default memory size. */ 88#ifdef M32R_LINUX 89#define M32R_DEFAULT_MEM_SIZE 0x2000000 /* 32M */ 90#else 91#define M32R_DEFAULT_MEM_SIZE 0x800000 /* 8M */ 92#endif 93 94#endif /* SIM_MAIN_H */ 95