6 static void do_cmd(u16 cmd, u16 r[6], u32 is_slave)
15 v = read16(&r[4/2]) ^ (is_slave << 15);
53 asm("stc gbr, %0" : "=r"(d));
57 asm("stc vbr, %0" : "=r"(d));
67 void main_c(u32 is_slave)
69 u16 *r = (u16 *)0x20004000;
76 cmd = read16(&r[0x20/2]);
78 cmdr = read16(&r[0x20/2]);
80 || cmd != cmdr // documented as "normal" case
81 || ((cmd & 0x8000) ^ (is_slave << 15))
82 || cmd == 0x4d5f) { // 'M_' from BIOS
87 do_cmd(cmd, &r[0x20/2], is_slave);
88 write16(&r[0x20/2], 0);
92 // vim:ts=4:sw=4:expandtab