target/hppa: Export function hppa_set_ior_and_isr()
Move functionality to set IOR and ISR on fault into own function. This will be used by follow-up patches. Signed-off-by: Helge Deller <deller@gmx.de> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
		| @@ -385,6 +385,7 @@ void hppa_cpu_dump_state(CPUState *cs, FILE *f, int); | ||||
| #ifndef CONFIG_USER_ONLY | ||||
| void hppa_ptlbe(CPUHPPAState *env); | ||||
| hwaddr hppa_cpu_get_phys_page_debug(CPUState *cs, vaddr addr); | ||||
| void hppa_set_ior_and_isr(CPUHPPAState *env, vaddr addr, bool mmu_disabled); | ||||
| bool hppa_cpu_tlb_fill(CPUState *cs, vaddr address, int size, | ||||
|                        MMUAccessType access_type, int mmu_idx, | ||||
|                        bool probe, uintptr_t retaddr); | ||||
|   | ||||
| @@ -305,14 +305,8 @@ hwaddr hppa_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) | ||||
|     return excp == EXCP_DTLB_MISS ? -1 : phys; | ||||
| } | ||||
|  | ||||
| G_NORETURN static void | ||||
| raise_exception_with_ior(CPUHPPAState *env, int excp, uintptr_t retaddr, | ||||
|                          vaddr addr, bool mmu_disabled) | ||||
| void hppa_set_ior_and_isr(CPUHPPAState *env, vaddr addr, bool mmu_disabled) | ||||
| { | ||||
|     CPUState *cs = env_cpu(env); | ||||
|  | ||||
|     cs->exception_index = excp; | ||||
|  | ||||
|     if (env->psw & PSW_Q) { | ||||
|         /* | ||||
|          * For pa1.x, the offset and space never overlap, and so we | ||||
| @@ -339,16 +333,23 @@ raise_exception_with_ior(CPUHPPAState *env, int excp, uintptr_t retaddr, | ||||
|                  */ | ||||
|                 uint64_t b; | ||||
|  | ||||
|                 cpu_restore_state(cs, retaddr); | ||||
|  | ||||
|                 b = env->unwind_breg ? env->gr[env->unwind_breg] : 0; | ||||
|                 b >>= (env->psw & PSW_W ? 62 : 30); | ||||
|                 env->cr[CR_IOR] |= b << 62; | ||||
|  | ||||
|                 cpu_loop_exit(cs); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| G_NORETURN static void | ||||
| raise_exception_with_ior(CPUHPPAState *env, int excp, uintptr_t retaddr, | ||||
|                          vaddr addr, bool mmu_disabled) | ||||
| { | ||||
|     CPUState *cs = env_cpu(env); | ||||
|  | ||||
|     cs->exception_index = excp; | ||||
|     hppa_set_ior_and_isr(env, addr, mmu_disabled); | ||||
|  | ||||
|     cpu_loop_exit_restore(cs, retaddr); | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user