diff options
author | Peter Maydell | 2016-02-11 12:17:31 +0100 |
---|---|---|
committer | Peter Maydell | 2016-02-11 12:17:31 +0100 |
commit | 3f208fd76bcc91a8506681bb8472f2398fe6f487 (patch) | |
tree | bc3d1894f35937be8e3c75a77e79d687fa7d8c21 /target-arm/op_helper.c | |
parent | target-arm: Update arm_generate_debug_exceptions() to handle EL2/EL3 (diff) | |
download | qemu-3f208fd76bcc91a8506681bb8472f2398fe6f487.tar.gz qemu-3f208fd76bcc91a8506681bb8472f2398fe6f487.tar.xz qemu-3f208fd76bcc91a8506681bb8472f2398fe6f487.zip |
target-arm: Add isread parameter to CPAccessFns
System registers might have access requirements which need to
be described via a CPAccessFn and which differ for reads and
writes. For this to be possible we need to pass the access
function a parameter to tell it whether the access being checked
is a read or a write.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Reviewed-by: Sergey Fedorov <serge.fdrv@gmail.com>
Message-id: 1454506721-11843-6-git-send-email-peter.maydell@linaro.org
Diffstat (limited to 'target-arm/op_helper.c')
-rw-r--r-- | target-arm/op_helper.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/target-arm/op_helper.c b/target-arm/op_helper.c index a5ee65fe2f..313c0f8bd7 100644 --- a/target-arm/op_helper.c +++ b/target-arm/op_helper.c @@ -457,7 +457,8 @@ void HELPER(set_user_reg)(CPUARMState *env, uint32_t regno, uint32_t val) } } -void HELPER(access_check_cp_reg)(CPUARMState *env, void *rip, uint32_t syndrome) +void HELPER(access_check_cp_reg)(CPUARMState *env, void *rip, uint32_t syndrome, + uint32_t isread) { const ARMCPRegInfo *ri = rip; int target_el; @@ -471,7 +472,7 @@ void HELPER(access_check_cp_reg)(CPUARMState *env, void *rip, uint32_t syndrome) return; } - switch (ri->accessfn(env, ri)) { + switch (ri->accessfn(env, ri, isread)) { case CP_ACCESS_OK: return; case CP_ACCESS_TRAP: |