diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2004-04-25 17:56:08 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2004-04-25 17:56:08 +0000 |
commit | 658138bcbcde308472bc6980957b6b9dbd9348f3 (patch) | |
tree | 7e11021fa3b9f8f4477604b90598146bce7ea7ce | |
parent | 1190935d98ec8a8e2e2438858bee8bd5e49ee324 (diff) |
flush insn support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@743 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r-- | target-sparc/exec.h | 1 | ||||
-rw-r--r-- | target-sparc/op.c | 4 | ||||
-rw-r--r-- | target-sparc/translate.c | 9 |
3 files changed, 13 insertions, 1 deletions
diff --git a/target-sparc/exec.h b/target-sparc/exec.h index 72e4588f69..6b49ca79af 100644 --- a/target-sparc/exec.h +++ b/target-sparc/exec.h @@ -13,4 +13,5 @@ register uint32_t T2 asm(AREG3); void cpu_lock(void); void cpu_unlock(void); void cpu_loop_exit(void); +void helper_flush(target_ulong addr); #endif diff --git a/target-sparc/op.c b/target-sparc/op.c index 1ce3f95094..946c11ec4c 100644 --- a/target-sparc/op.c +++ b/target-sparc/op.c @@ -683,3 +683,7 @@ void OPPROTO op_generic_branch(void) FORCE_RET(); } +void OPPROTO op_flush_T0(void) +{ + helper_flush(T0); +} diff --git a/target-sparc/translate.c b/target-sparc/translate.c index 41decb18ff..bcc810b208 100644 --- a/target-sparc/translate.c +++ b/target-sparc/translate.c @@ -650,7 +650,8 @@ static void disas_sparc_insn(DisasContext * dc) } goto jmp_insn; case 0x3b: /* flush */ - /* nothing to do */ + gen_op_add_T1_T0(); + gen_op_flush_T0(); break; case 0x3c: /* save */ save_state(dc); @@ -878,3 +879,9 @@ target_ulong cpu_get_phys_page_debug(CPUState *env, target_ulong addr) { return addr; } + +void helper_flush(target_ulong addr) +{ + addr &= ~7; + tb_invalidate_page_range(addr, addr + 8); +} |