aboutsummaryrefslogtreecommitdiff
path: root/target-alpha/helper.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2016-09-03 11:32:35 -0700
committerRichard Henderson <rth@twiddle.net>2016-10-26 08:29:02 -0700
commit6a73ecf5cfcd39b7afb5d6a24174730eac49d4b5 (patch)
treeaea605ed47f998cda117cc02659475b6e1c77cee /target-alpha/helper.c
parent05188cc72f0399e99c92f608a8e7ca4c8e552c4b (diff)
target-alpha: Introduce MMU_PHYS_IDX
Rather than using helpers for physical accesses, use a mmu index. The primary cleanup is with store-conditional on physical addresses. Signed-off-by: Richard Henderson <rth@twiddle.net>
Diffstat (limited to 'target-alpha/helper.c')
-rw-r--r--target-alpha/helper.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/target-alpha/helper.c b/target-alpha/helper.c
index 85168b7ed1..9ba3e1a1b8 100644
--- a/target-alpha/helper.c
+++ b/target-alpha/helper.c
@@ -126,6 +126,14 @@ static int get_physical_address(CPUAlphaState *env, target_ulong addr,
int prot = 0;
int ret = MM_K_ACV;
+ /* Handle physical accesses. */
+ if (mmu_idx == MMU_PHYS_IDX) {
+ phys = addr;
+ prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
+ ret = -1;
+ goto exit;
+ }
+
/* Ensure that the virtual address is properly sign-extended from
the last implemented virtual address bit. */
if (saddr >> TARGET_VIRT_ADDR_SPACE_BITS != saddr >> 63) {