X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=sim%2Fmn10300%2Fmn10300_sim.h;h=da6c25915be3f5e2186db686c158abb2f1bbfe8e;hb=1029b7fa6a31d4cbb42e8d14c67ff4fdbbd4bd8c;hp=230a69c6378f1e3e2ab702a90a7b600928d50d47;hpb=e98fe4f7b54cbdf29aef9287bbb1bea8801dd05a;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/mn10300/mn10300_sim.h b/sim/mn10300/mn10300_sim.h index 230a69c637..da6c25915b 100644 --- a/sim/mn10300/mn10300_sim.h +++ b/sim/mn10300/mn10300_sim.h @@ -76,8 +76,19 @@ struct _state uint8 *mem; /* main memory */ int exception; int exited; -} State; + /* All internal state modified by signal_exception() that may need to be + rolled back for passing moment-of-exception image back to gdb. */ + reg_t exc_trigger_regs[32]; + reg_t exc_suspend_regs[32]; + int exc_suspended; + +#define SIM_CPU_EXCEPTION_TRIGGER(SD,CPU,CIA) mn10300_cpu_exception_trigger(SD,CPU,CIA) +#define SIM_CPU_EXCEPTION_SUSPEND(SD,CPU,EXC) mn10300_cpu_exception_suspend(SD,CPU,EXC) +#define SIM_CPU_EXCEPTION_RESUME(SD,CPU,EXC) mn10300_cpu_exception_resume(SD,CPU,EXC) +}; + +extern struct _state State; extern uint32 OP[4]; extern struct simops Simops[]; @@ -104,9 +115,13 @@ extern struct simops Simops[]; #define REG_LIR 12 #define REG_LAR 13 #define REG_MDRQ 14 -/* start-sanitize-am33 */ #define REG_E0 15 -/* end-sanitize-am33 */ +#define REG_SSP 23 +#define REG_MSP 24 +#define REG_USP 25 +#define REG_MCRH 26 +#define REG_MCRL 27 +#define REG_MCVF 28 #if WITH_COMMON /* These definitions conflict with similar macros in common. */ @@ -147,6 +162,9 @@ extern struct simops Simops[]; #define FETCH32(a,b,c,d) \ ((a)+((b)<<8)+((c)<<16)+((d)<<24)) +#define FETCH24(a,b,c) \ + ((a)+((b)<<8)+((c)<<16)) + #define FETCH16(a,b) ((a)+((b)<<8)) #define load_byte(ADDR) \ @@ -348,10 +366,25 @@ void put_byte PARAMS ((uint8 *, uint8)); extern uint8 *map PARAMS ((SIM_ADDR addr)); -INLINE_SIM_MAIN (void) genericAdd PARAMS ((unsigned long source, unsigned long destReg)); -INLINE_SIM_MAIN (void) genericSub PARAMS ((unsigned long source, unsigned long destReg)); -INLINE_SIM_MAIN (void) genericCmp PARAMS ((unsigned long leftOpnd, unsigned long rightOpnd)); -INLINE_SIM_MAIN (void) genericOr PARAMS ((unsigned long source, unsigned long destReg)); -INLINE_SIM_MAIN (void) genericXor PARAMS ((unsigned long source, unsigned long destReg)); -INLINE_SIM_MAIN (void) genericBtst PARAMS ((unsigned long leftOpnd, unsigned long rightOpnd)); +INLINE_SIM_MAIN (void) genericAdd PARAMS ((unsigned32 source, unsigned32 destReg)); +INLINE_SIM_MAIN (void) genericSub PARAMS ((unsigned32 source, unsigned32 destReg)); +INLINE_SIM_MAIN (void) genericCmp PARAMS ((unsigned32 leftOpnd, unsigned32 rightOpnd)); +INLINE_SIM_MAIN (void) genericOr PARAMS ((unsigned32 source, unsigned32 destReg)); +INLINE_SIM_MAIN (void) genericXor PARAMS ((unsigned32 source, unsigned32 destReg)); +INLINE_SIM_MAIN (void) genericBtst PARAMS ((unsigned32 leftOpnd, unsigned32 rightOpnd)); +INLINE_SIM_MAIN (int) syscall_read_mem PARAMS ((host_callback *cb, + struct cb_syscall *sc, + unsigned long taddr, + char *buf, + int bytes)); +INLINE_SIM_MAIN (int) syscall_write_mem PARAMS ((host_callback *cb, + struct cb_syscall *sc, + unsigned long taddr, + const char *buf, + int bytes)); INLINE_SIM_MAIN (void) do_syscall PARAMS ((void)); +void program_interrupt (SIM_DESC sd, sim_cpu *cpu, sim_cia cia, SIM_SIGNAL sig); + +void mn10300_cpu_exception_trigger(SIM_DESC sd, sim_cpu* cpu, address_word pc); +void mn10300_cpu_exception_suspend(SIM_DESC sd, sim_cpu* cpu, int exception); +void mn10300_cpu_exception_resume(SIM_DESC sd, sim_cpu* cpu, int exception);