On Wed, Jul 4, 2012 at 10:23 AM, Jia Liu <pro...@gmail.com> wrote: > Hi Blue, > > On Wed, Jul 4, 2012 at 2:48 AM, Blue Swirl <blauwir...@gmail.com> wrote: >> On Sun, Jul 1, 2012 at 2:45 AM, Jia Liu <pro...@gmail.com> wrote: >>> + switch (op0) { >>> + case 0x00: /* l.j */ >>> + LOG_DIS("l.j %d\n", N26); >>> + case 0x01: /* l.jal */ >>> + LOG_DIS("l.jal %d\n", N26); >>> + case 0x03: /* l.bnf */ >>> + LOG_DIS("l.bnf %d\n", N26); >>> + case 0x04: /* l.bf */ >>> + LOG_DIS("l.bf %d\n", N26); >>> + >>> + gen_jump(dc, N26, 0, op0); >> >> The cases 0x00 to 0x03 will fall through to this case, calling LOG_DIS >> one to four times. > > Sorry, I can't find a better path. Is this code OK? > > switch (op0) { > case 0x00: /* l.j */ > case 0x01: /* l.jal */ > case 0x03: /* l.bnf */ > case 0x04: /* l.bf */ > LOG_DIS("l.j/l.jal/l.bnf/l.bf %d\n", N26); > > gen_jump(dc, N26, 0, op0); >
or is this code OK? switch (op0) { case 0x00: /* l.j */ LOG_DIS("l.j %d\n", N26); gen_jump(dc, N26, 0, op0); break; case 0x01: /* l.jal */ LOG_DIS("l.jal %d\n", N26); gen_jump(dc, N26, 0, op0); break; case 0x03: /* l.bnf */ LOG_DIS("l.bnf %d\n", N26); gen_jump(dc, N26, 0, op0); break; case 0x04: /* l.bf */ LOG_DIS("l.bf %d\n", N26); gen_jump(dc, N26, 0, op0); break; >>> + >>> + case 0x11: /* l.jr */ >>> + LOG_DIS("l.jr r%d\n", rb); >>> + case 0x12: /* l.jalr */ >>> + LOG_DIS("l.jalr r%d\n", rb); >>> + >>> + gen_jump(dc, 0, rb, op0); >> >> Also here. >> > > And, this? > case 0x11: /* l.jr */ gen_jump(dc, 0, rb, op0); break; case 0x12: /* l.jalr */ LOG_DIS("l.jr r%d\n", rb); gen_jump(dc, 0, rb, op0); break; >>> +static void dec_sys(DisasContext *dc, uint32_t insn) >>> +{ >>> + uint32_t op0; >>> + /*uint32_t K16;*/ >>> + op0 = field(insn, 16, 8); >>> + /*K16 = field(insn, 0, 16);*/ >>> + >>> + switch (op0) { >>> + case 0x000: /* l.sys */ >>> + /*LOG_DIS("l.sys %d\n", K16);*/ >> >> Why commented out? > > When I build QEMU, I got a error msg like "unused var K16, treat > warnings as errors". > I didn't find a better way to handle it, so, commented it. > >> >>> + tcg_gen_movi_tl(cpu_pc, dc->pc); >>> + gen_exception(dc, EXCP_SYSCALL); >>> + dc->is_jmp = DISAS_UPDATE; >>> + break; >>> + >>> + case 0x100: /* l.trap */ >>> + /*LOG_DIS("l.trap %d\n", K16);*/ >> >> Ditto >> > > And, commented it here. > >>> + tcg_gen_movi_tl(cpu_pc, dc->pc); >>> + gen_exception(dc, EXCP_TRAP); >>> + break; >>> + > > Regards, > Jia. Regards, Jia.