On Mon, 29 Jul 2013, Maciej W. Rozycki wrote: > > Decode trap instructions during the handling of an EXCP_BREAK or EXCP_TRAP > > according to the current ISA mode. > > > > Signed-off-by: Kwok Cheung Yeung <[email protected]> > > --- > > linux-user/main.c | 46 +++++++++++++++++++++++++++++++++++++++++++--- > > 1 file changed, 43 insertions(+), 3 deletions(-) > > > > v2->v3: Handle microMIPS and MIPS16e instructions when processing > > EXCP_BREAK. > > > > diff --git a/linux-user/main.c b/linux-user/main.c > > index 7f15d3d..b137216 100644 > > --- a/linux-user/main.c > > +++ b/linux-user/main.c > > @@ -2348,7 +2348,31 @@ done_syscall: > > abi_ulong trap_instr; > > unsigned int code; > > > > - ret = get_user_ual(trap_instr, env->active_tc.PC); > > + if (env->hflags & MIPS_HFLAG_M16) { > > + if (env->insn_flags & ASE_MICROMIPS) { > > + /* microMIPS mode */ > > + abi_ulong instr[2]; > > + > > + ret = get_user_u16(instr[0], env->active_tc.PC) || > > + get_user_u16(instr[1], env->active_tc.PC + > > 2); > > + > > + trap_instr = (instr[0] << 16) | instr[1]; > > You need to tell 16-bit and 32-bit microMIPS BREAK instructions apart > somehow.
I can see the broken change was actually applied -- Kwok, did you have a chance to have a look at making a fix? Maciej
