|
From: | Richard Henderson |
Subject: | Re: [RFC PATCH v5 04/22] target/arm: Implement ALLINT MSR (immediate) |
Date: | Thu, 29 Feb 2024 11:48:52 -1000 |
User-agent: | Mozilla Thunderbird |
On 2/29/24 03:10, Jinjie Ruan via wrote:
+static bool trans_MSR_i_ALLINT(DisasContext *s, arg_i *a) +{ + if (!dc_isar_feature(aa64_nmi, s) || s->current_el == 0) { + return false; + } + + if (a->imm == 0) { + clear_pstate_bits(PSTATE_ALLINT); + } else if (s->current_el > 1) { + set_pstate_bits(PSTATE_ALLINT); + } else { + gen_helper_msr_set_allint_el1(tcg_env); + } + + s->base.is_jmp = DISAS_TOO_MANY; + return true; +}
I just noticed one final item: for imm == 0, we need /* Exit the cpu loop to re-evaluate pending IRQs. */ s->base.is_jmp = DISAS_UPDATE_EXIT; like trans_MSR_i_DAIFCLEAR. r~
[Prev in Thread] | Current Thread | [Next in Thread] |