aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoredgar_igl <edgar_igl@c046a42c-6fe2-441c-8c8c-71466251a162>2009-01-04 15:45:17 +0000
committeredgar_igl <edgar_igl@c046a42c-6fe2-441c-8c8c-71466251a162>2009-01-04 15:45:17 +0000
commit80e1b265f4505149ba256ab6e18be942830072d0 (patch)
tree08c51dbd4bfe1a273fbdc29abdd8e11b3f255513
parentbf91ada56ab8ef6c6d80f401c879cc53a39a390b (diff)
CRIS: Dont flush kernel protected pages when modifying $pid.
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6161 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--target-cris/mmu.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/target-cris/mmu.c b/target-cris/mmu.c
index 408a99c72c..9ae398db6d 100644
--- a/target-cris/mmu.c
+++ b/target-cris/mmu.c
@@ -295,7 +295,7 @@ void cris_mmu_flush_pid(CPUState *env, uint32_t pid)
unsigned int idx;
uint32_t lo, hi;
uint32_t tlb_vpn;
- int tlb_pid, tlb_g, tlb_v, tlb_k;
+ int tlb_pid, tlb_g, tlb_v;
unsigned int set;
unsigned int mmu;
@@ -311,11 +311,8 @@ void cris_mmu_flush_pid(CPUState *env, uint32_t pid)
tlb_pid = EXTRACT_FIELD(hi, 0, 7);
tlb_g = EXTRACT_FIELD(lo, 4, 4);
tlb_v = EXTRACT_FIELD(lo, 3, 3);
- tlb_k = EXTRACT_FIELD(lo, 2, 2);
- /* Kernel protected areas need to be flushed
- as well. */
- if (tlb_v && !tlb_g && (tlb_pid == pid || tlb_k)) {
+ if (tlb_v && !tlb_g && (tlb_pid == pid)) {
vaddr = tlb_vpn << TARGET_PAGE_BITS;
D(fprintf(logfile,
"flush pid=%x vaddr=%x\n",