diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2005-01-03 23:43:32 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2005-01-03 23:43:32 +0000 |
commit | 0fa85d43d47151e71e63754e419340bfcff97e80 (patch) | |
tree | ee797bd86bf4c5e0b6e33b462248da86408ce12c /target-sparc/helper.c | |
parent | b4ff59872759eb491313ae4248732d9a2acc1299 (diff) |
64 bit target support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1195 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-sparc/helper.c')
-rw-r--r-- | target-sparc/helper.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/target-sparc/helper.c b/target-sparc/helper.c index 76ad643ebb..5fc1da1a83 100644 --- a/target-sparc/helper.c +++ b/target-sparc/helper.c @@ -62,7 +62,7 @@ void cpu_unlock(void) NULL, it means that the function was called in C code (i.e. not from generated code or from helper.c) */ /* XXX: fix it to restore all registers */ -void tlb_fill(unsigned long addr, int is_write, int is_user, void *retaddr) +void tlb_fill(target_ulong addr, int is_write, int is_user, void *retaddr) { TranslationBlock *tb; int ret; @@ -282,6 +282,15 @@ void set_cwp(int new_cwp) env->regwptr = env->regbase + (new_cwp * 16); } +void cpu_set_cwp(CPUState *env1, int new_cwp) +{ + CPUState *saved_env; + saved_env = env; + env = env1; + set_cwp(new_cwp); + env = saved_env; +} + /* * Begin execution of an interruption. is_int is TRUE if coming from * the int instruction. next_eip is the EIP value AFTER the interrupt @@ -318,8 +327,7 @@ void do_interrupt(int intno, int is_int, int error_code, #endif #if !defined(CONFIG_USER_ONLY) if (env->psret == 0) { - fprintf(logfile, "Trap while interrupts disabled, Error state!\n"); - qemu_system_shutdown_request(); + cpu_abort(cpu_single_env, "Trap while interrupts disabled, Error state"); return; } #endif |