notaz.gp2x.de
/
megadrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
testpico: check irq vector also
[megadrive.git]
/
testpico
/
sh2_main.c
diff --git
a/testpico/sh2_main.c
b/testpico/sh2_main.c
index
97ecd3a
..
1bd9b90
100644
(file)
--- a/
testpico/sh2_main.c
+++ b/
testpico/sh2_main.c
@@
-3,6
+3,15
@@
void spin(int loops);
u16 read_frt(void);
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;
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;
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();
default:
r[2/2]++; // error
mem_barrier();