X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=testpico%2Fsh2_main.c;h=1bd9b909d617fb96f2c07ff52af04560d6bbf94e;hb=6474d733133dc605ee02e4e2e02f025c41d202df;hp=97ecd3a895d2b58206434bccba2ba0d83494d2a8;hpb=06d7984c0110c58104633dc4359fa7a8343bac11;p=megadrive.git diff --git a/testpico/sh2_main.c b/testpico/sh2_main.c index 97ecd3a..1bd9b90 100644 --- a/testpico/sh2_main.c +++ b/testpico/sh2_main.c @@ -3,6 +3,15 @@ void spin(int loops); u16 read_frt(void); +// comm area map: +// 00-01: cmd +// 02-03: error +// 04-07: arg0/response +// 08-0b: arg1 +// 0c: last_irq_vec_master +// 0d: last_irq_vec_slave +// 0e: exception_index_master +// 0f: exception_index_slave static void do_cmd(u16 cmd, u16 r[6], u32 is_slave) { u32 *rl = (u32 *)r; @@ -49,6 +58,14 @@ static void do_cmd(u16 cmd, u16 r[6], u32 is_slave) d = read32(&rl[8/4]); write32(a, d); break; + case CMD_GETGBR: + asm("stc gbr, %0" : "=r"(d)); + write32(&rl[4/4], d); + break; + case CMD_GETVBR: + asm("stc vbr, %0" : "=r"(d)); + write32(&rl[4/4], d); + break; default: r[2/2]++; // error mem_barrier();