1 /* Main header for the m32r. */ 2 3 #ifndef SIM_MAIN_H 4 #define SIM_MAIN_H 5 6 #include "symcat.h" 7 #include "sim-basics.h" 8 #include "cgen-types.h" 9 #include "m32r-desc.h" 10 #include "m32r-opc.h" 11 #include "arch.h" 12 #include "sim-base.h" 13 #include "cgen-sim.h" 14 #include "m32r-sim.h" 15 #include "opcode/cgen.h" 16 17 /* The _sim_cpu struct. */ 18 19 struct _sim_cpu { 20 /* sim/common cpu base. */ 21 sim_cpu_base base; 22 23 /* Static parts of cgen. */ 24 CGEN_CPU cgen_cpu; 25 26 M32R_MISC_PROFILE m32r_misc_profile; 27 #define CPU_M32R_MISC_PROFILE(cpu) (& (cpu)->m32r_misc_profile) 28 29 /* CPU specific parts go here. 30 Note that in files that don't need to access these pieces WANT_CPU_FOO 31 won't be defined and thus these parts won't appear. This is ok in the 32 sense that things work. It is a source of bugs though. 33 One has to of course be careful to not take the size of this 34 struct and no structure members accessed in non-cpu specific files can 35 go after here. Oh for a better language. */ 36 #if defined (WANT_CPU_M32RBF) 37 M32RBF_CPU_DATA cpu_data; 38 #endif 39 #if defined (WANT_CPU_M32RXF) 40 M32RXF_CPU_DATA cpu_data; 41 #elif defined (WANT_CPU_M32R2F) 42 M32R2F_CPU_DATA cpu_data; 43 #endif 44 }; 45 46 /* The sim_state struct. */ 47 48 struct sim_state { 49 sim_cpu *cpu[MAX_NR_PROCESSORS]; 50 51 CGEN_STATE cgen_state; 52 53 sim_state_base base; 54 }; 55 56 /* Misc. */ 57 58 /* Catch address exceptions. */ 59 extern SIM_CORE_SIGNAL_FN m32r_core_signal; 60 #define SIM_CORE_SIGNAL(SD,CPU,CIA,MAP,NR_BYTES,ADDR,TRANSFER,ERROR) \ 61 m32r_core_signal ((SD), (CPU), (CIA), (MAP), (NR_BYTES), (ADDR), \ 62 (TRANSFER), (ERROR)) 63 64 /* Default memory size. */ 65 #ifdef M32R_LINUX 66 #define M32R_DEFAULT_MEM_SIZE 0x2000000 /* 32M */ 67 #else 68 #define M32R_DEFAULT_MEM_SIZE 0x800000 /* 8M */ 69 #endif 70 71 #endif /* SIM_MAIN_H */ 72