diff options
Diffstat (limited to 'target-sh4/helper.c')
-rw-r--r-- | target-sh4/helper.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/target-sh4/helper.c b/target-sh4/helper.c index 5ab505aedd..1839c96dde 100644 --- a/target-sh4/helper.c +++ b/target-sh4/helper.c @@ -28,6 +28,38 @@ #include "cpu.h" #include "exec-all.h" +#if defined(CONFIG_USER_ONLY) + +void do_interrupt (CPUState *env) +{ + env->exception_index = -1; +} + +int cpu_sh4_handle_mmu_fault(CPUState * env, target_ulong address, int rw, + int is_user, int is_softmmu) +{ + env->tea = address; + switch (rw) { + case 0: + env->exception_index = 0x0a0; + break; + case 1: + env->exception_index = 0x0c0; + break; + case 2: + env->exception_index = 0x0a0; + break; + } + return 1; +} + +target_ulong cpu_get_phys_page_debug(CPUState * env, target_ulong addr) +{ + return addr; +} + +#else /* !CONFIG_USER_ONLY */ + #define MMU_OK 0 #define MMU_ITLB_MISS (-1) #define MMU_ITLB_MULTIPLE (-2) @@ -396,3 +428,14 @@ int cpu_sh4_handle_mmu_fault(CPUState * env, target_ulong address, int rw, return tlb_set_page(env, address, physical, prot, is_user, is_softmmu); } + +target_ulong cpu_get_phys_page_debug(CPUState * env, target_ulong addr) +{ + target_ulong physical; + int prot; + + get_physical_address(env, &physical, &prot, addr, PAGE_READ, 0); + return physical; +} + +#endif |