#include "ansidecl.h"
#include "gdb/callback.h"
#include "gdb/remote-sim.h"
#include "end.h"
#define I_ACC_EXC 1
#define EVENT_MAX 256
#define FPUQN 1
#define BPT_MAX 256
struct histype {
unsigned addr;
unsigned time;
};
typedef short int int16;
typedef unsigned short int uint16;
typedef int int32;
typedef unsigned int uint32;
typedef float float32;
typedef double float64;
typedef unsigned long long uint64;
typedef long long int64;
struct pstate {
float64 fd[16];
#ifdef HOST_LITTLE_ENDIAN_FLOAT
float32 fs[32];
float32 *fdp;
#else
float32 *fs;
#endif
int32 *fsi;
uint32 fsr;
int32 fpstate;
uint32 fpq[FPUQN * 2];
uint32 fpqn;
uint32 ftime;
uint32 flrd;
uint32 frd;
uint32 frs1;
uint32 frs2;
uint32 fpu_pres;
uint32 psr;
uint32 tbr;
uint32 wim;
uint32 g[8];
uint32 r[128];
uint32 y;
uint32 asr17;
uint32 pc, npc;
uint32 trap;
uint32 annul;
uint32 data;
uint32 inst;
uint32 asi;
uint32 err_mode;
uint32 breakpoint;
uint32 bptnum;
uint32 bphit;
uint32 bpts[BPT_MAX];
uint32 ltime;
uint32 hold;
uint32 fhold;
uint32 icnt;
uint32 histlen;
uint32 histind;
struct histype *histbuf;
float32 freq;
uint32 tottime;
uint32 ninst;
uint32 fholdt;
uint32 holdt;
uint32 icntt;
uint32 finst;
uint32 simstart;
uint32 starttime;
uint32 tlimit;
uint32 pwdtime;
uint32 nstore;
uint32 nload;
uint32 nannul;
uint32 nbranch;
uint32 ildreg;
uint32 ildtime;
int rett_err;
int jmpltime;
};
struct evcell {
void (*cfunc) ();
int32 arg;
uint32 time;
struct evcell *nxt;
};
struct estate {
struct evcell eq;
struct evcell *freeq;
uint32 simtime;
};
struct irqcell {
void (*callback) ();
int32 arg;
};
#define OK 0
#define TIME_OUT 1
#define BPT_HIT 2
#define ERROR 3
#define CTRL_C 4
extern void init_sim PARAMS ((void));
extern void reset PARAMS ((void));
extern void error_mode PARAMS ((uint32 pc));
extern void sim_halt PARAMS ((void));
extern void exit_sim PARAMS ((void));
extern void init_stdio PARAMS ((void));
extern void restore_stdio PARAMS ((void));
extern int memory_read PARAMS ((int32 asi, uint32 addr, uint32 *data,
int32 sz, int32 *ws));
extern int memory_write PARAMS ((int32 asi, uint32 addr, uint32 *data,
int32 sz, int32 *ws));
extern int sis_memory_write PARAMS ((uint32 addr, char *data,
uint32 length));
extern int sis_memory_read PARAMS ((uint32 addr, char *data,
uint32 length));
extern void set_regi PARAMS ((struct pstate *sregs, int32 reg,
uint32 rval));
extern void get_regi PARAMS ((struct pstate *sregs, int32 reg, char *buf));
extern int exec_cmd PARAMS ((struct pstate *sregs, char *cmd));
extern void reset_stat PARAMS ((struct pstate *sregs));
extern void show_stat PARAMS ((struct pstate *sregs));
extern void init_bpt PARAMS ((struct pstate *sregs));
extern void init_signals PARAMS ((void));
struct disassemble_info;
extern void dis_mem PARAMS ((uint32 addr, uint32 len,
struct disassemble_info *info));
extern void event PARAMS ((void (*cfunc) (), int32 arg, uint32 delta));
extern void set_int PARAMS ((int32 level, void (*callback) (), int32 arg));
extern void advance_time PARAMS ((struct pstate *sregs));
extern uint32 now PARAMS ((void));
extern int wait_for_irq PARAMS ((void));
extern int check_bpt PARAMS ((struct pstate *sregs));
extern void reset_all PARAMS ((void));
extern void sys_reset PARAMS ((void));
extern void sys_halt PARAMS ((void));
extern int bfd_load PARAMS ((char *fname));
extern int dispatch_instruction PARAMS ((struct pstate *sregs));
extern int execute_trap PARAMS ((struct pstate *sregs));
extern int check_interrupts PARAMS ((struct pstate *sregs));
extern void init_regs PARAMS ((struct pstate *sregs));
extern int run_sim PARAMS ((struct pstate *sregs,
unsigned int icount, int dis));
extern int get_accex PARAMS ((void));
extern void clear_accex PARAMS ((void));
extern void set_fsr PARAMS ((uint32 fsr));
extern void usage PARAMS ((void));
extern void gen_help PARAMS ((void));