#define DEBUG
-#define MPOWER 16
-#define MSIZE (1<<MPOWER)
+/* These define the size of main memory for the simulator.
+
+ Note the size of main memory for the H8/300H is only 256k. Keeping it
+ small makes the simulator run much faster and consume less memory.
+
+ The linker knows about the limited size of the simulator's main memory
+ on the H8/300H (via the h8300h.sc linker script). So if you change
+ H8300H_MSIZE, be sure to fix the linker script too.
+
+ Also note that there's a separate "eightbit" area aside from main
+ memory. For simplicity, the simulator assumes any data memory reference
+ outside of main memory refers to the eightbit area (in theory, this
+ can only happen when simulating H8/300H programs). We make no attempt
+ to catch overlapping addresses, wrapped addresses, etc etc. */
+#define H8300_MSIZE (1 << 16)
+
+/* avolkov:
+ Next 2 macros are ugly for any workstation, but while they're work.
+ Memory size MUST be configurable. */
+#define H8300H_MSIZE (1 << 18)
+#define H8300S_MSIZE (1 << 24)
+
#define CSIZE 1000
+
/* Local register names */
typedef enum
{
R_ZERO,
R_PC,
R_CCR,
+ R_EXR,
R_HARD_0,
R_LAST,
} reg_type;
struct h8_opcode *op;
#endif
}
-
decoded_inst;
+enum h8300_sim_state {
+ SIM_STATE_RUNNING, SIM_STATE_EXITED, SIM_STATE_SIGNALLED, SIM_STATE_STOPPED
+};
+/* For Command Line. */
+char **ptr_command_line; /* Pointer to Command Line Arguments. */
typedef struct
{
+ enum h8300_sim_state state;
int exception;
unsigned int regs[9];
int pc;
int ccr;
-
+ int exr;
unsigned char *memory;
+ unsigned char *eightbit;
unsigned short *cache_idx;
int cache_top;
int maximum;
int stats[O_LAST];
#endif
}
-
cpu_state_type;