Commit 7d197d2d authored by Peter Maydell's avatar Peter Maydell
Browse files

target-arm: Fix IL bit reported for Thumb VFP and Neon traps



All Thumb Neon and VFP instructions are 32 bits, so the IL
bit in the syndrome register should be set. Pass false to the
syn_* function's is_16bit argument rather than s->thumb
so we report the correct IL bit.

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
Reviewed-by: default avatarSergey Fedorov <serge.fdrv@gmail.com>
Message-id: 1454683067-16001-4-git-send-email-peter.maydell@linaro.org
parent 4df32259
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -3077,7 +3077,7 @@ static int disas_vfp_insn(DisasContext *s, uint32_t insn)
     */
    if (s->fp_excp_el) {
        gen_exception_insn(s, 4, EXCP_UDEF,
                           syn_fp_access_trap(1, 0xe, s->thumb), s->fp_excp_el);
                           syn_fp_access_trap(1, 0xe, false), s->fp_excp_el);
        return 0;
    }

@@ -4399,7 +4399,7 @@ static int disas_neon_ls_insn(DisasContext *s, uint32_t insn)
     */
    if (s->fp_excp_el) {
        gen_exception_insn(s, 4, EXCP_UDEF,
                           syn_fp_access_trap(1, 0xe, s->thumb), s->fp_excp_el);
                           syn_fp_access_trap(1, 0xe, false), s->fp_excp_el);
        return 0;
    }

@@ -5137,7 +5137,7 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
     */
    if (s->fp_excp_el) {
        gen_exception_insn(s, 4, EXCP_UDEF,
                           syn_fp_access_trap(1, 0xe, s->thumb), s->fp_excp_el);
                           syn_fp_access_trap(1, 0xe, false), s->fp_excp_el);
        return 0;
    }