summaryrefslogtreecommitdiffstats
path: root/target-arm/internals.h
diff options
context:
space:
mode:
authorPeter Maydell2016-06-06 17:59:28 +0200
committerPeter Maydell2016-06-06 17:59:28 +0200
commit04ce861ea545477425ad9e045eec3f61c8a27df9 (patch)
tree6d4aaf1ca0a9f06d4059f7ad6148071bd57ad87d /target-arm/internals.h
parenttarget-arm: A64: Create Instruction Syndromes for Data Aborts (diff)
downloadqemu-04ce861ea545477425ad9e045eec3f61c8a27df9.tar.gz
qemu-04ce861ea545477425ad9e045eec3f61c8a27df9.tar.xz
qemu-04ce861ea545477425ad9e045eec3f61c8a27df9.zip
target-arm: Set IL bit in syndromes for insn abort, watchpoint, swstep
For some exception syndrome types, the IL bit should always be set. This includes the instruction abort, watchpoint and software step syndrome types; add the missing ARM_EL_IL bit to the syndrome values returned by syn_insn_abort(), syn_swstep() and syn_watchpoint(). Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> Message-id: 1463487258-27468-2-git-send-email-peter.maydell@linaro.org
Diffstat (limited to 'target-arm/internals.h')
-rw-r--r--target-arm/internals.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/target-arm/internals.h b/target-arm/internals.h
index a1258738d9..728ecbab6d 100644
--- a/target-arm/internals.h
+++ b/target-arm/internals.h
@@ -367,7 +367,7 @@ static inline uint32_t syn_fp_access_trap(int cv, int cond, bool is_16bit)
static inline uint32_t syn_insn_abort(int same_el, int ea, int s1ptw, int fsc)
{
return (EC_INSNABORT << ARM_EL_EC_SHIFT) | (same_el << ARM_EL_EC_SHIFT)
- | (ea << 9) | (s1ptw << 7) | fsc;
+ | ARM_EL_IL | (ea << 9) | (s1ptw << 7) | fsc;
}
static inline uint32_t syn_data_abort_no_iss(int same_el,
@@ -396,13 +396,13 @@ static inline uint32_t syn_data_abort_with_iss(int same_el,
static inline uint32_t syn_swstep(int same_el, int isv, int ex)
{
return (EC_SOFTWARESTEP << ARM_EL_EC_SHIFT) | (same_el << ARM_EL_EC_SHIFT)
- | (isv << 24) | (ex << 6) | 0x22;
+ | ARM_EL_IL | (isv << 24) | (ex << 6) | 0x22;
}
static inline uint32_t syn_watchpoint(int same_el, int cm, int wnr)
{
return (EC_WATCHPOINT << ARM_EL_EC_SHIFT) | (same_el << ARM_EL_EC_SHIFT)
- | (cm << 8) | (wnr << 6) | 0x22;
+ | ARM_EL_IL | (cm << 8) | (wnr << 6) | 0x22;
}
static inline uint32_t syn_breakpoint(int same_el)