aboutsummaryrefslogtreecommitdiff
path: root/target-sparc
diff options
context:
space:
mode:
authorIgor V. Kovalenko <igor.v.kovalenko@gmail.com>2010-06-02 00:12:22 +0400
committerBlue Swirl <blauwirbel@gmail.com>2010-06-02 20:03:16 +0000
commit9168b3a545fae3db8ad0ee7de872c4302651ba7f (patch)
treedf218213ad70d2a8697da64fcb343ccc5296ab66 /target-sparc
parentd9b73e47a3d596c5b33802597ec5bd91ef3348e2 (diff)
sparc64: fix tag access register on mmu traps
- set mmu tag access register on FAULT and PROT traps as well Signed-off-by: Igor V. Kovalenko <igor.v.kovalenko@gmail.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Diffstat (limited to 'target-sparc')
-rw-r--r--target-sparc/helper.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/target-sparc/helper.c b/target-sparc/helper.c
index 96a22f3475..aa1fd632cc 100644
--- a/target-sparc/helper.c
+++ b/target-sparc/helper.c
@@ -495,6 +495,9 @@ static int get_physical_address_data(CPUState *env,
env->dmmu.sfsr |= (fault_type << 7);
env->dmmu.sfar = address; /* Fault address register */
+
+ env->dmmu.tag_access = (address & ~0x1fffULL) | context;
+
return 1;
}
}
@@ -544,6 +547,8 @@ static int get_physical_address_code(CPUState *env,
env->immu.sfsr |= (is_user << 3) | 1;
env->exception_index = TT_TFAULT;
+ env->immu.tag_access = (address & ~0x1fffULL) | context;
+
DPRINTF_MMU("TFAULT at %" PRIx64 " context %" PRIx64 "\n",
address, context);