target/arm: Remove TBFLAG_ANY.DEBUG_TARGET_EL
We no longer need this value during translation, as it is now handled within the helpers. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220609202901.1177572-15-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
f0d7c2054a
commit
8480e933ed
@ -3104,11 +3104,9 @@ FIELD(TBFLAG_ANY, BE_DATA, 3, 1)
|
|||||||
FIELD(TBFLAG_ANY, MMUIDX, 4, 4)
|
FIELD(TBFLAG_ANY, MMUIDX, 4, 4)
|
||||||
/* Target EL if we take a floating-point-disabled exception */
|
/* Target EL if we take a floating-point-disabled exception */
|
||||||
FIELD(TBFLAG_ANY, FPEXC_EL, 8, 2)
|
FIELD(TBFLAG_ANY, FPEXC_EL, 8, 2)
|
||||||
/* For A-profile only, target EL for debug exceptions. */
|
|
||||||
FIELD(TBFLAG_ANY, DEBUG_TARGET_EL, 10, 2)
|
|
||||||
/* Memory operations require alignment: SCTLR_ELx.A or CCR.UNALIGN_TRP */
|
/* Memory operations require alignment: SCTLR_ELx.A or CCR.UNALIGN_TRP */
|
||||||
FIELD(TBFLAG_ANY, ALIGN_MEM, 12, 1)
|
FIELD(TBFLAG_ANY, ALIGN_MEM, 10, 1)
|
||||||
FIELD(TBFLAG_ANY, PSTATE__IL, 13, 1)
|
FIELD(TBFLAG_ANY, PSTATE__IL, 11, 1)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Bit usage when in AArch32 state, both A- and M-profile.
|
* Bit usage when in AArch32 state, both A- and M-profile.
|
||||||
|
@ -11102,18 +11102,10 @@ static CPUARMTBFlags rebuild_hflags_m32(CPUARMState *env, int fp_el,
|
|||||||
return rebuild_hflags_common_32(env, fp_el, mmu_idx, flags);
|
return rebuild_hflags_common_32(env, fp_el, mmu_idx, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static CPUARMTBFlags rebuild_hflags_aprofile(CPUARMState *env)
|
|
||||||
{
|
|
||||||
CPUARMTBFlags flags = {};
|
|
||||||
|
|
||||||
DP_TBFLAG_ANY(flags, DEBUG_TARGET_EL, arm_debug_target_el(env));
|
|
||||||
return flags;
|
|
||||||
}
|
|
||||||
|
|
||||||
static CPUARMTBFlags rebuild_hflags_a32(CPUARMState *env, int fp_el,
|
static CPUARMTBFlags rebuild_hflags_a32(CPUARMState *env, int fp_el,
|
||||||
ARMMMUIdx mmu_idx)
|
ARMMMUIdx mmu_idx)
|
||||||
{
|
{
|
||||||
CPUARMTBFlags flags = rebuild_hflags_aprofile(env);
|
CPUARMTBFlags flags = {};
|
||||||
int el = arm_current_el(env);
|
int el = arm_current_el(env);
|
||||||
|
|
||||||
if (arm_sctlr(env, el) & SCTLR_A) {
|
if (arm_sctlr(env, el) & SCTLR_A) {
|
||||||
@ -11139,7 +11131,7 @@ static CPUARMTBFlags rebuild_hflags_a32(CPUARMState *env, int fp_el,
|
|||||||
static CPUARMTBFlags rebuild_hflags_a64(CPUARMState *env, int el, int fp_el,
|
static CPUARMTBFlags rebuild_hflags_a64(CPUARMState *env, int el, int fp_el,
|
||||||
ARMMMUIdx mmu_idx)
|
ARMMMUIdx mmu_idx)
|
||||||
{
|
{
|
||||||
CPUARMTBFlags flags = rebuild_hflags_aprofile(env);
|
CPUARMTBFlags flags = {};
|
||||||
ARMMMUIdx stage1 = stage_1_mmu_idx(mmu_idx);
|
ARMMMUIdx stage1 = stage_1_mmu_idx(mmu_idx);
|
||||||
uint64_t tcr = regime_tcr(env, mmu_idx)->raw_tcr;
|
uint64_t tcr = regime_tcr(env, mmu_idx)->raw_tcr;
|
||||||
uint64_t sctlr;
|
uint64_t sctlr;
|
||||||
|
@ -14645,7 +14645,6 @@ static void aarch64_tr_init_disas_context(DisasContextBase *dcbase,
|
|||||||
dc->ss_active = EX_TBFLAG_ANY(tb_flags, SS_ACTIVE);
|
dc->ss_active = EX_TBFLAG_ANY(tb_flags, SS_ACTIVE);
|
||||||
dc->pstate_ss = EX_TBFLAG_ANY(tb_flags, PSTATE__SS);
|
dc->pstate_ss = EX_TBFLAG_ANY(tb_flags, PSTATE__SS);
|
||||||
dc->is_ldex = false;
|
dc->is_ldex = false;
|
||||||
dc->debug_target_el = EX_TBFLAG_ANY(tb_flags, DEBUG_TARGET_EL);
|
|
||||||
|
|
||||||
/* Bound the number of insns to execute to those left on the page. */
|
/* Bound the number of insns to execute to those left on the page. */
|
||||||
bound = -(dc->base.pc_first | TARGET_PAGE_MASK) / 4;
|
bound = -(dc->base.pc_first | TARGET_PAGE_MASK) / 4;
|
||||||
|
@ -9350,7 +9350,6 @@ static void arm_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
|
|||||||
dc->v7m_lspact = EX_TBFLAG_M32(tb_flags, LSPACT);
|
dc->v7m_lspact = EX_TBFLAG_M32(tb_flags, LSPACT);
|
||||||
dc->mve_no_pred = EX_TBFLAG_M32(tb_flags, MVE_NO_PRED);
|
dc->mve_no_pred = EX_TBFLAG_M32(tb_flags, MVE_NO_PRED);
|
||||||
} else {
|
} else {
|
||||||
dc->debug_target_el = EX_TBFLAG_ANY(tb_flags, DEBUG_TARGET_EL);
|
|
||||||
dc->sctlr_b = EX_TBFLAG_A32(tb_flags, SCTLR__B);
|
dc->sctlr_b = EX_TBFLAG_A32(tb_flags, SCTLR__B);
|
||||||
dc->hstr_active = EX_TBFLAG_A32(tb_flags, HSTR_ACTIVE);
|
dc->hstr_active = EX_TBFLAG_A32(tb_flags, HSTR_ACTIVE);
|
||||||
dc->ns = EX_TBFLAG_A32(tb_flags, NS);
|
dc->ns = EX_TBFLAG_A32(tb_flags, NS);
|
||||||
|
@ -59,8 +59,6 @@ typedef struct DisasContext {
|
|||||||
*/
|
*/
|
||||||
uint32_t svc_imm;
|
uint32_t svc_imm;
|
||||||
int current_el;
|
int current_el;
|
||||||
/* Debug target exception level for single-step exceptions */
|
|
||||||
int debug_target_el;
|
|
||||||
GHashTable *cp_regs;
|
GHashTable *cp_regs;
|
||||||
uint64_t features; /* CPU features bits */
|
uint64_t features; /* CPU features bits */
|
||||||
bool aarch64;
|
bool aarch64;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user