Hi James, On 26/09/2014 13:44, James Hogan wrote: > Hi Leon, > > On 27/06/14 16:21, Leon Alrae wrote: >> @@ -1215,6 +1217,8 @@ const struct mips_opcode mips_builtin_opcodes[] = >> them first. The assemblers uses a hash table based on the >> instruction name anyhow. */ >> /* name, args, match, mask, pinfo, >> membership */ >> +{"ll", "t,o(b)", 0x7c000036, 0xfc00003f, LDD|RD_b|WR_t, 0, >> I32R6}, >> +{"sc", "t,o(b)", 0x7c000026, 0xfc00003f, LDD|RD_b|WR_t, 0, >> I32R6}, > > Doesn't bit 6 need to be 0 too for these, so mask should be 0xfc00007f?
Yes, good spot. > Again, do these strictly have to be at the beginning? I know sc aliases > dmod.g, but that's right at the end of the table. > >> @@ -15121,7 +15144,8 @@ static void decode_opc (CPUMIPSState *env, >> DisasContext *ctx) >> break; >> case OPC_DDIV_G_2E ... OPC_DDIVU_G_2E: >> case OPC_DMULT_G_2E ... OPC_DMULTU_G_2E: >> - case OPC_DMOD_G_2E ... OPC_DMODU_G_2E: >> + case OPC_DMODU_G_2E: >> + check_insn_opc_removed(ctx, ISA_MIPS32R6); > > AFAICT you remove this check_insn_opc_removed line again in patch 6, so > I don't think you need to add it here. Yeah, I wrote this line before I decided to split SPECIAL* into separate functions. I will remove it as it is not needed. Thanks, Leon