On 8/21/19 5:23 AM, Bastian Koppelmann wrote: > @@ -3928,7 +3937,7 @@ static void decode_sr_system(DisasContext *ctx) > ctx->base.is_jmp = DISAS_NORETURN; > break; > case OPC2_16_SR_DEBUG: > - /* raise EXCP_DEBUG */ > + generate_qemu_excp(ctx, EXCP_DEBUG); > break; > case OPC2_16_SR_FRET: > gen_fret(ctx); > @@ -8354,7 +8363,7 @@ static void decode_sys_interrupts(DisasContext *ctx) > > switch (op2) { > case OPC2_32_SYS_DEBUG: > - /* raise EXCP_DEBUG */ > + generate_qemu_excp(ctx, EXCP_DEBUG); > break; > case OPC2_32_SYS_DISABLE: > tcg_gen_andi_tl(cpu_ICR, cpu_ICR, ~MASK_ICR_IE_1_3);
This is not correct -- EXCP_DEBUG is an internal qemu exception. The manual I have only describes the ISA and does not describe what a "Debug Event" would be. I note that you're missing the DBGSR.DE check. I also note that whatever a "Debug Event" is, RFM appears to be the return from it. So one can deduce some things about what it should be. r~