Lines Matching refs:msr
144 return !!(env->msr & ((target_ulong)1 << MSR_LE)); in insn_need_byteswap()
193 static int powerpc_reset_wakeup(CPUPPCState *env, int excp, target_ulong *msr) in powerpc_reset_wakeup() argument
199 *msr |= SRR1_WS_NOLOSS; in powerpc_reset_wakeup()
207 *msr |= SRR1_WAKERESET; in powerpc_reset_wakeup()
210 *msr |= SRR1_WAKEEE; in powerpc_reset_wakeup()
213 *msr |= SRR1_WAKEDEC; in powerpc_reset_wakeup()
216 *msr |= SRR1_WAKEDBELL; in powerpc_reset_wakeup()
219 *msr |= SRR1_WAKEHDBELL; in powerpc_reset_wakeup()
222 *msr |= SRR1_WAKEHMI; in powerpc_reset_wakeup()
225 *msr |= SRR1_WAKEHVI; in powerpc_reset_wakeup()
290 static void ppc_excp_apply_ail(PowerPCCPU *cpu, int excp, target_ulong msr, in ppc_excp_apply_ail() argument
295 bool mmu_all_on = ((msr >> MSR_IR) & 1) && ((msr >> MSR_DR) & 1); in ppc_excp_apply_ail()
296 bool hv_escalation = !(msr & MSR_HVB) && (*new_msr & MSR_HVB); in ppc_excp_apply_ail()
393 target_ulong msr) in powerpc_set_excp_state() argument
397 assert((msr & env->msr_mask) == msr); in powerpc_set_excp_state()
407 env->msr = msr; in powerpc_set_excp_state()
468 if (FIELD_EX64(env->msr, MSR, ME)) { in powerpc_mcheck_checkstop()
479 target_ulong msr, new_msr, vector; in powerpc_excp_40x() local
483 msr = env->msr & ~0x783f0000ULL; in powerpc_excp_40x()
486 new_msr = env->msr & (((target_ulong)1 << MSR_ME)); in powerpc_excp_40x()
516 trace_ppc_excp_isi(msr, env->nip); in powerpc_excp_40x()
525 if (!FIELD_EX64_FE(env->msr) || !FIELD_EX64(env->msr, MSR, FP)) { in powerpc_excp_40x()
580 env->spr[srr1] = msr; in powerpc_excp_40x()
587 target_ulong msr, new_msr, vector; in powerpc_excp_6xx() local
590 msr = env->msr & ~0x783f0000ULL; in powerpc_excp_6xx()
593 new_msr = env->msr & ((target_ulong)1 << MSR_ME); in powerpc_excp_6xx()
619 trace_ppc_excp_isi(msr, env->nip); in powerpc_excp_6xx()
620 msr |= env->error_code; in powerpc_excp_6xx()
636 if (!FIELD_EX64_FE(env->msr) || !FIELD_EX64(env->msr, MSR, FP)) { in powerpc_excp_6xx()
645 msr |= 0x00100000; in powerpc_excp_6xx()
649 msr |= 0x00080000; in powerpc_excp_6xx()
652 msr |= 0x00040000; in powerpc_excp_6xx()
655 msr |= 0x00020000; in powerpc_excp_6xx()
680 if (FIELD_EX64(env->msr, MSR, POW)) { in powerpc_excp_6xx()
699 msr |= env->crf[0] << 28; in powerpc_excp_6xx()
700 msr |= env->error_code; /* key, D/I, S/L bits */ in powerpc_excp_6xx()
702 msr |= ((env->last_way + 1) & (env->nb_ways - 1)) << 17; in powerpc_excp_6xx()
723 env->spr[SPR_SRR1] = msr; in powerpc_excp_6xx()
730 target_ulong msr, new_msr, vector; in powerpc_excp_7xx() local
733 msr = env->msr & ~0x783f0000ULL; in powerpc_excp_7xx()
736 new_msr = env->msr & ((target_ulong)1 << MSR_ME); in powerpc_excp_7xx()
760 trace_ppc_excp_isi(msr, env->nip); in powerpc_excp_7xx()
761 msr |= env->error_code; in powerpc_excp_7xx()
777 if (!FIELD_EX64_FE(env->msr) || !FIELD_EX64(env->msr, MSR, FP)) { in powerpc_excp_7xx()
786 msr |= 0x00100000; in powerpc_excp_7xx()
790 msr |= 0x00080000; in powerpc_excp_7xx()
793 msr |= 0x00040000; in powerpc_excp_7xx()
796 msr |= 0x00020000; in powerpc_excp_7xx()
839 if (FIELD_EX64(env->msr, MSR, POW)) { in powerpc_excp_7xx()
851 msr |= env->crf[0] << 28; in powerpc_excp_7xx()
852 msr |= env->error_code; /* key, D/I, S/L bits */ in powerpc_excp_7xx()
854 msr |= ((env->last_way + 1) & (env->nb_ways - 1)) << 17; in powerpc_excp_7xx()
873 env->spr[SPR_SRR1] = msr; in powerpc_excp_7xx()
880 target_ulong msr, new_msr, vector; in powerpc_excp_74xx() local
883 msr = env->msr & ~0x783f0000ULL; in powerpc_excp_74xx()
886 new_msr = env->msr & ((target_ulong)1 << MSR_ME); in powerpc_excp_74xx()
910 trace_ppc_excp_isi(msr, env->nip); in powerpc_excp_74xx()
911 msr |= env->error_code; in powerpc_excp_74xx()
927 if (!FIELD_EX64_FE(env->msr) || !FIELD_EX64(env->msr, MSR, FP)) { in powerpc_excp_74xx()
936 msr |= 0x00100000; in powerpc_excp_74xx()
940 msr |= 0x00080000; in powerpc_excp_74xx()
943 msr |= 0x00040000; in powerpc_excp_74xx()
946 msr |= 0x00020000; in powerpc_excp_74xx()
989 if (FIELD_EX64(env->msr, MSR, POW)) { in powerpc_excp_74xx()
1017 env->spr[SPR_SRR1] = msr; in powerpc_excp_74xx()
1024 target_ulong msr, new_msr, vector; in powerpc_excp_booke() local
1031 msr = env->msr; in powerpc_excp_booke()
1034 new_msr = env->msr & ((target_ulong)1 << MSR_ME); in powerpc_excp_booke()
1073 env->spr[SPR_BOOKE_CSRR1] = msr; in powerpc_excp_booke()
1080 trace_ppc_excp_isi(msr, env->nip); in powerpc_excp_booke()
1094 if (!FIELD_EX64_FE(env->msr) || !FIELD_EX64(env->msr, MSR, FP)) { in powerpc_excp_booke()
1103 msr |= 0x00100000; in powerpc_excp_booke()
1108 msr |= 0x00080000; in powerpc_excp_booke()
1112 msr |= 0x00040000; in powerpc_excp_booke()
1116 msr |= 0x00020000; in powerpc_excp_booke()
1158 env->spr[SPR_BOOKE_CSRR1] = msr; in powerpc_excp_booke()
1176 if (FIELD_EX64(env->msr, MSR, POW)) { in powerpc_excp_booke()
1203 env->spr[srr1] = msr; in powerpc_excp_booke()
1324 target_ulong msr, new_msr, vector; in powerpc_excp_books() local
1328 msr = env->msr & ~0x783f0000ULL; in powerpc_excp_books()
1334 new_msr = env->msr & (((target_ulong)1 << MSR_ME) | MSR_HVB); in powerpc_excp_books()
1341 excp = powerpc_reset_wakeup(env, excp, &msr); in powerpc_excp_books()
1363 msr |= PPC_BIT(34); in powerpc_excp_books()
1380 msr |= env->error_code; in powerpc_excp_books()
1387 trace_ppc_excp_isi(msr, env->nip); in powerpc_excp_books()
1388 msr |= env->error_code; in powerpc_excp_books()
1401 new_msr |= env->msr & ((target_ulong)1 << MSR_RI); in powerpc_excp_books()
1422 if (!FIELD_EX64_FE(env->msr) || !FIELD_EX64(env->msr, MSR, FP)) { in powerpc_excp_books()
1431 msr |= 0x00100000; in powerpc_excp_books()
1435 msr |= 0x00080000; in powerpc_excp_books()
1438 msr |= 0x00040000; in powerpc_excp_books()
1441 msr |= 0x00020000; in powerpc_excp_books()
1473 msr |= lev << 20; in powerpc_excp_books()
1483 new_msr |= env->msr & ((target_ulong)1 << MSR_EE); in powerpc_excp_books()
1484 new_msr |= env->msr & ((target_ulong)1 << MSR_RI); in powerpc_excp_books()
1489 env->ctr = msr; in powerpc_excp_books()
1496 if (FIELD_EX64(env->msr, MSR, POW)) { in powerpc_excp_books()
1498 msr |= 0x10000; in powerpc_excp_books()
1508 if (FIELD_EX64(env->msr, MSR, POW)) { in powerpc_excp_books()
1516 msr |= env->error_code; in powerpc_excp_books()
1524 msr |= env->error_code; in powerpc_excp_books()
1533 new_msr |= env->msr & ((target_ulong)1 << MSR_RI); in powerpc_excp_books()
1547 new_msr |= env->msr & ((target_ulong)1 << MSR_RI); in powerpc_excp_books()
1561 new_msr |= env->msr & ((target_ulong)1 << MSR_RI); in powerpc_excp_books()
1572 powerpc_set_excp_state(cpu, env->spr[SPR_EBBHR], env->msr); in powerpc_excp_books()
1598 env->spr[srr1] = msr; in powerpc_excp_books()
1612 ppc_excp_apply_ail(cpu, excp, msr, &new_msr, &vector); in powerpc_excp_books()
1712 bool msr_ee = FIELD_EX64(env->msr, MSR, EE) || env->resume_as_sreset; in p7_next_unmasked_interrupt()
1730 if ((msr_ee || !FIELD_EX64_HV(env->msr)) && hdice) { in p7_next_unmasked_interrupt()
1741 if ((msr_ee && !(heic && FIELD_EX64_HV(env->msr) && in p7_next_unmasked_interrupt()
1742 !FIELD_EX64(env->msr, MSR, PR))) || in p7_next_unmasked_interrupt()
1743 (env->has_hv_mode && !FIELD_EX64_HV(env->msr) && !lpes0)) { in p7_next_unmasked_interrupt()
1805 bool msr_ee = FIELD_EX64(env->msr, MSR, EE) || env->resume_as_sreset; in p8_next_unmasked_interrupt()
1823 if ((msr_ee || !FIELD_EX64_HV(env->msr)) && hdice) { in p8_next_unmasked_interrupt()
1834 if ((msr_ee && !(heic && FIELD_EX64_HV(env->msr) && in p8_next_unmasked_interrupt()
1835 !FIELD_EX64(env->msr, MSR, PR))) || in p8_next_unmasked_interrupt()
1836 (env->has_hv_mode && !FIELD_EX64_HV(env->msr) && !lpes0)) { in p8_next_unmasked_interrupt()
1860 if (FIELD_EX64(env->msr, MSR, PR) && in p8_next_unmasked_interrupt()
1884 if (!heic || !FIELD_EX64_HV(env->msr) || in p9_interrupt_powersave()
1885 FIELD_EX64(env->msr, MSR, PR)) { in p9_interrupt_powersave()
1931 bool msr_ee = FIELD_EX64(env->msr, MSR, EE) || env->resume_as_sreset; in p9_next_unmasked_interrupt()
1960 if ((msr_ee || !FIELD_EX64_HV(env->msr)) && hdice) { in p9_next_unmasked_interrupt()
1970 if ((msr_ee || !FIELD_EX64_HV(env->msr)) && hvice) { in p9_next_unmasked_interrupt()
1980 if ((msr_ee && !(heic && FIELD_EX64_HV(env->msr) && in p9_next_unmasked_interrupt()
1981 !FIELD_EX64(env->msr, MSR, PR))) || in p9_next_unmasked_interrupt()
1982 (env->has_hv_mode && !FIELD_EX64_HV(env->msr) && !lpes0)) { in p9_next_unmasked_interrupt()
2006 if (FIELD_EX64(env->msr, MSR, PR) && in p9_next_unmasked_interrupt()
2059 async_deliver = FIELD_EX64(env->msr, MSR, EE) || env->resume_as_sreset; in ppc_next_unmasked_interrupt()
2065 if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hdice) { in ppc_next_unmasked_interrupt()
2075 if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hvice) { in ppc_next_unmasked_interrupt()
2085 if ((async_deliver && !(heic && FIELD_EX64_HV(env->msr) && in ppc_next_unmasked_interrupt()
2086 !FIELD_EX64(env->msr, MSR, PR))) || in ppc_next_unmasked_interrupt()
2087 (env->has_hv_mode && !FIELD_EX64_HV(env->msr) && !lpes0)) { in ppc_next_unmasked_interrupt()
2091 if (FIELD_EX64(env->msr, MSR, CE)) { in ppc_next_unmasked_interrupt()
2136 if (FIELD_EX64(env->msr, MSR, PR) && in ppc_next_unmasked_interrupt()
2302 !FIELD_EX64(env->msr, MSR, EE)) { in p9_deliver_interrupt()
2515 target_ulong msr = 0; in ppc_cpu_do_fwnmi_machine_check() local
2521 msr = (1ULL << MSR_ME); in ppc_cpu_do_fwnmi_machine_check()
2522 msr |= env->msr & (1ULL << MSR_SF); in ppc_cpu_do_fwnmi_machine_check()
2524 msr |= (1ULL << MSR_LE); in ppc_cpu_do_fwnmi_machine_check()
2530 powerpc_set_excp_state(cpu, vector, msr); in ppc_cpu_do_fwnmi_machine_check()
2644 static void do_rfi(CPUPPCState *env, target_ulong nip, target_ulong msr) in do_rfi() argument
2647 msr &= ~(1ULL << MSR_POW); in do_rfi()
2651 msr &= ~(1ULL << MSR_TGPR); in do_rfi()
2655 if (!msr_is_64bit(env, msr)) { in do_rfi()
2663 hreg_store_msr(env, msr, 1); in do_rfi()
2664 trace_ppc_excp_rfi(env->nip, env->msr); in do_rfi()
2706 target_ulong msr = env->msr; in helper_rfebb() local
2722 if (!msr_is_64bit(env, msr)) { in helper_rfebb()
2759 if (FIELD_EX64(env->msr, MSR, PR)) { in do_ebb()
2915 if (env->msr & R_MSR_PR_MASK) { \
2919 } else if (!(env->msr & R_MSR_HV_MASK)) { \
2923 } else if (!(env->msr & R_MSR_S_MASK)) { \
3262 return env->msr & ((target_ulong)1 << MSR_PR); in ppc_cpu_debug_check_breakpoint()
3264 return (!(env->msr & ((target_ulong)1 << MSR_PR)) && in ppc_cpu_debug_check_breakpoint()
3265 !(env->msr & ((target_ulong)1 << MSR_HV))); in ppc_cpu_debug_check_breakpoint()
3267 return (!(env->msr & ((target_ulong)1 << MSR_PR)) && in ppc_cpu_debug_check_breakpoint()
3268 (env->msr & ((target_ulong)1 << MSR_HV))); in ppc_cpu_debug_check_breakpoint()
3292 if ((env->msr & ((target_ulong)1 << MSR_PR)) && !pr) { in ppc_cpu_debug_check_watchpoint()
3294 } else if ((env->msr & ((target_ulong)1 << MSR_HV)) && !hv) { in ppc_cpu_debug_check_watchpoint()
3301 if (env->msr & ((target_ulong)1 << MSR_DR)) { in ppc_cpu_debug_check_watchpoint()