X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=cpu%2Fsh2%2Fsh2.h;h=22b3bc58f18f3e6aada0c245e981935030b50f19;hb=679af8a3f466a2a4a20f58e4181a231fb73e9836;hp=404c19eacdc1241f943770f157f4eb489078b0b8;hpb=98da48e4181441545c6a66e622f845ab33b34e5b;p=picodrive.git diff --git a/cpu/sh2/sh2.h b/cpu/sh2/sh2.h index 404c19e..22b3bc5 100644 --- a/cpu/sh2/sh2.h +++ b/cpu/sh2/sh2.h @@ -13,32 +13,37 @@ void p32x_sh2_write32(unsigned int a, unsigned int d, int id); typedef struct { - unsigned int r[16]; + unsigned int r[16]; // 00 + unsigned int pc; // 40 unsigned int ppc; - unsigned int pc; unsigned int pr; unsigned int sr; - unsigned int gbr, vbr; - unsigned int mach, macl; + unsigned int gbr, vbr; // 50 + unsigned int mach, macl; // 58 + // interpreter stuff + int icount; // 60 cycles left in current timeslice unsigned int ea; unsigned int delay; unsigned int test_irq; + // drc stuff + void **pc_hashtab; // 70 + + // common int pending_irl; int pending_int_irq; // internal irq int pending_int_vector; void (*irq_callback)(int id, int level); int is_slave; - int icount; // cycles left in current timeslice unsigned int cycles_aim; // subtract sh2_icount to get global counter unsigned int cycles_done; } SH2; extern SH2 *sh2; // active sh2 -void sh2_init(SH2 *sh2, int is_slave); +int sh2_init(SH2 *sh2, int is_slave); void sh2_reset(SH2 *sh2); void sh2_irl_irq(SH2 *sh2, int level); void sh2_internal_irq(SH2 *sh2, int level, int vector);