From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:36928) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q9p7i-0006jE-1b for qemu-devel@nongnu.org; Tue, 12 Apr 2011 21:44:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q9m5j-0002ZY-0x for qemu-devel@nongnu.org; Tue, 12 Apr 2011 18:29:48 -0400 Received: from mail.serverraum.org ([78.47.150.89]:53648) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q9m5i-0002S3-RG for qemu-devel@nongnu.org; Tue, 12 Apr 2011 18:29:46 -0400 From: Michael Walle Date: Wed, 13 Apr 2011 00:29:33 +0200 Message-Id: <1302647376-26764-2-git-send-email-michael@walle.cc> In-Reply-To: <1302647376-26764-1-git-send-email-michael@walle.cc> References: <1302647376-26764-1-git-send-email-michael@walle.cc> Subject: [Qemu-devel] [PATCH 1/4] lm32: fix exception handling List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: "Edgar E. Iglesias" , Michael Walle Global interrupt enable bit is already saved within the exception handler helper routine. Thus remove extra code in translation routines. Additionally, debug exceptions has always DEBA as base address. Signed-off-by: Michael Walle --- target-lm32/helper.c | 6 +----- target-lm32/translate.c | 26 -------------------------- 2 files changed, 1 insertions(+), 31 deletions(-) diff --git a/target-lm32/helper.c b/target-lm32/helper.c index 318e2cf..4f3e7e0 100644 --- a/target-lm32/helper.c +++ b/target-lm32/helper.c @@ -76,11 +76,7 @@ void do_interrupt(CPUState *env) env->regs[R_BA] = env->pc; env->ie |= (env->ie & IE_IE) ? IE_BIE : 0; env->ie &= ~IE_IE; - if (env->dc & DC_RE) { - env->pc = env->deba + (env->exception_index * 32); - } else { - env->pc = env->eba + (env->exception_index * 32); - } + env->pc = env->deba + (env->exception_index * 32); log_cpu_state_mask(CPU_LOG_INT, env, 0); break; default: diff --git a/target-lm32/translate.c b/target-lm32/translate.c index ccdf959..2cfa253 100644 --- a/target-lm32/translate.c +++ b/target-lm32/translate.c @@ -614,36 +614,10 @@ static void dec_scall(DisasContext *dc) t0 = tcg_temp_new(); l1 = gen_new_label(); - /* save IE.IE */ - tcg_gen_andi_tl(t0, cpu_ie, IE_IE); - - /* IE.IE = 0 */ - tcg_gen_andi_tl(cpu_ie, cpu_ie, ~IE_IE); - if (dc->imm5 == 7) { - /* IE.EIE = IE.IE */ - tcg_gen_ori_tl(cpu_ie, cpu_ie, IE_EIE); - tcg_gen_brcondi_tl(TCG_COND_EQ, t0, IE_IE, l1); - tcg_gen_andi_tl(cpu_ie, cpu_ie, ~IE_EIE); - gen_set_label(l1); - - /* gpr[ea] = PC */ - tcg_gen_movi_tl(cpu_R[R_EA], dc->pc); - tcg_temp_free(t0); - tcg_gen_movi_tl(cpu_pc, dc->pc); t_gen_raise_exception(dc, EXCP_SYSTEMCALL); } else { - /* IE.BIE = IE.IE */ - tcg_gen_ori_tl(cpu_ie, cpu_ie, IE_BIE); - tcg_gen_brcondi_tl(TCG_COND_EQ, t0, IE_IE, l1); - tcg_gen_andi_tl(cpu_ie, cpu_ie, ~IE_BIE); - gen_set_label(l1); - - /* gpr[ba] = PC */ - tcg_gen_movi_tl(cpu_R[R_BA], dc->pc); - tcg_temp_free(t0); - tcg_gen_movi_tl(cpu_pc, dc->pc); t_gen_raise_exception(dc, EXCP_BREAKPOINT); } -- 1.7.2.3