mirror of https://gitlab.com/qemu-project/qemu
target-s390x: add a cpu_mmu_idx_to_asc function
Use constants to define the MMU indexes, and add a function to do the reverse conversion of cpu_mmu_index. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
a1f12d855b
commit
4decd76d71
|
@ -302,15 +302,20 @@ static inline CPU_DoubleU *get_freg(CPUS390XState *cs, int nr)
|
||||||
#define CR0_LOWPROT 0x0000000010000000ULL
|
#define CR0_LOWPROT 0x0000000010000000ULL
|
||||||
#define CR0_EDAT 0x0000000000800000ULL
|
#define CR0_EDAT 0x0000000000800000ULL
|
||||||
|
|
||||||
|
/* MMU */
|
||||||
|
#define MMU_PRIMARY_IDX 0
|
||||||
|
#define MMU_SECONDARY_IDX 1
|
||||||
|
#define MMU_HOME_IDX 2
|
||||||
|
|
||||||
static inline int cpu_mmu_index (CPUS390XState *env)
|
static inline int cpu_mmu_index (CPUS390XState *env)
|
||||||
{
|
{
|
||||||
switch (env->psw.mask & PSW_MASK_ASC) {
|
switch (env->psw.mask & PSW_MASK_ASC) {
|
||||||
case PSW_ASC_PRIMARY:
|
case PSW_ASC_PRIMARY:
|
||||||
return 0;
|
return MMU_PRIMARY_IDX;
|
||||||
case PSW_ASC_SECONDARY:
|
case PSW_ASC_SECONDARY:
|
||||||
return 1;
|
return MMU_SECONDARY_IDX;
|
||||||
case PSW_ASC_HOME:
|
case PSW_ASC_HOME:
|
||||||
return 2;
|
return MMU_HOME_IDX;
|
||||||
case PSW_ASC_ACCREG:
|
case PSW_ASC_ACCREG:
|
||||||
/* Fallthrough: access register mode is not yet supported */
|
/* Fallthrough: access register mode is not yet supported */
|
||||||
default:
|
default:
|
||||||
|
@ -318,6 +323,20 @@ static inline int cpu_mmu_index (CPUS390XState *env)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline uint64_t cpu_mmu_idx_to_asc(int mmu_idx)
|
||||||
|
{
|
||||||
|
switch (mmu_idx) {
|
||||||
|
case MMU_PRIMARY_IDX:
|
||||||
|
return PSW_ASC_PRIMARY;
|
||||||
|
case MMU_SECONDARY_IDX:
|
||||||
|
return PSW_ASC_SECONDARY;
|
||||||
|
case MMU_HOME_IDX:
|
||||||
|
return PSW_ASC_HOME;
|
||||||
|
default:
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static inline void cpu_get_tb_cpu_state(CPUS390XState* env, target_ulong *pc,
|
static inline void cpu_get_tb_cpu_state(CPUS390XState* env, target_ulong *pc,
|
||||||
target_ulong *cs_base, int *flags)
|
target_ulong *cs_base, int *flags)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue