diff options
author | edgar_igl <edgar_igl@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-09-22 20:51:28 +0000 |
---|---|---|
committer | edgar_igl <edgar_igl@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-09-22 20:51:28 +0000 |
commit | 28de16da38f20b3fe76fa80d10561c3a998342e2 (patch) | |
tree | cd05930d4e9a1e936e20ddf9c11a1d9d4f18c3b7 /target-cris/op_helper.c | |
parent | 4a6b819c09473acc362a9959603017a549d85ce3 (diff) |
CRIS: Improve ASID related TLB flushes.
* Speedup and correct ASID (PID) related TLB flushes.
* Use 64bit tcg load/stores to emulate movem.
* Remove unused helpers and other minor cleanups.
Signed-off-by: Edgar E. Iglesias <edgar@axis.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5302 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-cris/op_helper.c')
-rw-r--r-- | target-cris/op_helper.c | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/target-cris/op_helper.c b/target-cris/op_helper.c index fcf80705e9..d9ddc3ad55 100644 --- a/target-cris/op_helper.c +++ b/target-cris/op_helper.c @@ -91,7 +91,9 @@ void helper_raise_exception(uint32_t index) void helper_tlb_flush_pid(uint32_t pid) { #if !defined(CONFIG_USER_ONLY) - cris_mmu_flush_pid(env, pid); + pid &= 0xff; + if (pid != (env->pregs[PR_PID] & 0xff)) + cris_mmu_flush_pid(env, env->pregs[PR_PID]); #endif } @@ -100,11 +102,6 @@ void helper_dump(uint32_t a0, uint32_t a1, uint32_t a2) (fprintf(logfile, "%s: a0=%x a1=%x\n", __func__, a0, a1)); } -void helper_dummy(void) -{ - -} - /* Used by the tlb decoder. */ #define EXTRACT_FIELD(src, start, end) \ (((src) >> start) & ((1 << (end - start + 1)) - 1)) @@ -239,15 +236,6 @@ void helper_rfn(void) env->pregs[PR_CCS] |= M_FLAG; } -void helper_store(uint32_t a0) -{ - if (env->pregs[PR_CCS] & P_FLAG ) - { - cpu_abort(env, "cond_store_failed! pc=%x a0=%x\n", - env->pc, a0); - } -} - void do_unassigned_access(target_phys_addr_t addr, int is_write, int is_exec, int is_asi) { |