aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sim/aarch64/simulator.c40
1 files changed, 26 insertions, 14 deletions
diff --git a/sim/aarch64/simulator.c b/sim/aarch64/simulator.c
index 3dba1b7..8825819 100644
--- a/sim/aarch64/simulator.c
+++ b/sim/aarch64/simulator.c
@@ -129,11 +129,11 @@ expand_logical_immediate (uint32_t S, uint32_t R, uint32_t N)
/* Replicate the value according to SIMD size. */
switch (simd_size)
{
- case 2: imm = (imm << 2) | imm;
- case 4: imm = (imm << 4) | imm;
- case 8: imm = (imm << 8) | imm;
- case 16: imm = (imm << 16) | imm;
- case 32: imm = (imm << 32) | imm;
+ case 2: imm = (imm << 2) | imm; ATTRIBUTE_FALLTHROUGH;
+ case 4: imm = (imm << 4) | imm; ATTRIBUTE_FALLTHROUGH;
+ case 8: imm = (imm << 8) | imm; ATTRIBUTE_FALLTHROUGH;
+ case 16: imm = (imm << 16) | imm; ATTRIBUTE_FALLTHROUGH;
+ case 32: imm = (imm << 32) | imm; ATTRIBUTE_FALLTHROUGH;
case 64: break;
default: return 0;
}
@@ -2040,12 +2040,12 @@ extreg32 (sim_cpu *cpu, unsigned int lo, Extension extension)
{
case UXTB: return aarch64_get_reg_u8 (cpu, lo, NO_SP);
case UXTH: return aarch64_get_reg_u16 (cpu, lo, NO_SP);
- case UXTW: /* Fall through. */
+ case UXTW: ATTRIBUTE_FALLTHROUGH;
case UXTX: return aarch64_get_reg_u32 (cpu, lo, NO_SP);
case SXTB: return aarch64_get_reg_s8 (cpu, lo, NO_SP);
case SXTH: return aarch64_get_reg_s16 (cpu, lo, NO_SP);
- case SXTW: /* Fall through. */
- case SXTX: /* Fall through. */
+ case SXTW: ATTRIBUTE_FALLTHROUGH;
+ case SXTX: ATTRIBUTE_FALLTHROUGH;
default: return aarch64_get_reg_s32 (cpu, lo, NO_SP);
}
}
@@ -3346,7 +3346,7 @@ do_vec_MOV_immediate (sim_cpu *cpu)
case 0xa: /* 16-bit, shift by 8. */
val <<= 8;
- /* Fall through. */
+ ATTRIBUTE_FALLTHROUGH;
case 0x8: /* 16-bit, no shift. */
for (i = 0; i < (full ? 8 : 4); i++)
aarch64_set_vec_u16 (cpu, vd, i, val);
@@ -3355,7 +3355,7 @@ do_vec_MOV_immediate (sim_cpu *cpu)
case 0xd: /* 32-bit, mask shift by 16. */
val <<= 8;
val |= 0xFF;
- /* Fall through. */
+ ATTRIBUTE_FALLTHROUGH;
case 0xc: /* 32-bit, mask shift by 8. */
val <<= 8;
val |= 0xFF;
@@ -3416,6 +3416,7 @@ do_vec_MVNI (sim_cpu *cpu)
case 0xa: /* 16-bit, 8 bit shift. */
val <<= 8;
+ ATTRIBUTE_FALLTHROUGH;
case 0x8: /* 16-bit, no shift. */
val = ~ val;
for (i = 0; i < (full ? 8 : 4); i++)
@@ -3425,6 +3426,7 @@ do_vec_MVNI (sim_cpu *cpu)
case 0xd: /* 32-bit, mask shift by 16. */
val <<= 8;
val |= 0xFF;
+ ATTRIBUTE_FALLTHROUGH;
case 0xc: /* 32-bit, mask shift by 8. */
val <<= 8;
val |= 0xFF;
@@ -4691,6 +4693,8 @@ do_vec_SCVTF (sim_cpu *cpu)
aarch64_get_vec_##SOURCE##64 (cpu, vm, i) \
? -1ULL : 0); \
return; \
+ default: \
+ HALT_UNALLOC; \
} \
} \
while (0)
@@ -4726,6 +4730,8 @@ do_vec_SCVTF (sim_cpu *cpu)
aarch64_get_vec_##SOURCE##64 (cpu, vn, i) \
CMP 0 ? -1ULL : 0); \
return; \
+ default: \
+ HALT_UNALLOC; \
} \
} \
while (0)
@@ -5316,6 +5322,7 @@ do_vec_sub_long (sim_cpu *cpu)
{
case 2: /* SSUBL2. */
bias = 2;
+ ATTRIBUTE_FALLTHROUGH;
case 0: /* SSUBL. */
switch (size)
{
@@ -5349,6 +5356,7 @@ do_vec_sub_long (sim_cpu *cpu)
case 3: /* USUBL2. */
bias = 2;
+ ATTRIBUTE_FALLTHROUGH;
case 1: /* USUBL. */
switch (size)
{
@@ -5811,6 +5819,7 @@ do_vec_xtl (sim_cpu *cpu)
{
case 2: /* SXTL2, SSHLL2. */
bias = 2;
+ ATTRIBUTE_FALLTHROUGH;
case 0: /* SXTL, SSHLL. */
if (INSTR (21, 21))
{
@@ -5851,6 +5860,7 @@ do_vec_xtl (sim_cpu *cpu)
case 3: /* UXTL2, USHLL2. */
bias = 2;
+ ATTRIBUTE_FALLTHROUGH;
case 1: /* UXTL, USHLL. */
if (INSTR (21, 21))
{
@@ -8568,6 +8578,7 @@ dexSimpleFPIntegerConvert (sim_cpu *cpu)
case 1: scvtd32 (cpu); return;
case 2: scvtf (cpu); return;
case 3: scvtd (cpu); return;
+ default: HALT_UNALLOC;
}
case 6: /* FMOV GR, Vec. */
@@ -8593,6 +8604,7 @@ dexSimpleFPIntegerConvert (sim_cpu *cpu)
case 1: fcvtszd32 (cpu); return;
case 2: fcvtszs (cpu); return;
case 3: fcvtszd (cpu); return;
+ default: HALT_UNALLOC;
}
case 25: do_fcvtzu (cpu); return;
@@ -9186,7 +9198,7 @@ do_scalar_FCM (sim_cpu *cpu)
case 3: /* 011 */
val1 = fabs (val1);
val2 = fabs (val2);
- /* Fall through. */
+ ATTRIBUTE_FALLTHROUGH;
case 2: /* 010 */
result = val1 >= val2;
break;
@@ -9194,7 +9206,7 @@ do_scalar_FCM (sim_cpu *cpu)
case 7: /* 111 */
val1 = fabs (val1);
val2 = fabs (val2);
- /* Fall through. */
+ ATTRIBUTE_FALLTHROUGH;
case 6: /* 110 */
result = val1 > val2;
break;
@@ -9219,7 +9231,7 @@ do_scalar_FCM (sim_cpu *cpu)
case 3: /* 011 */
val1 = fabsf (val1);
val2 = fabsf (val2);
- /* Fall through. */
+ ATTRIBUTE_FALLTHROUGH;
case 2: /* 010 */
result = val1 >= val2;
break;
@@ -9227,7 +9239,7 @@ do_scalar_FCM (sim_cpu *cpu)
case 7: /* 111 */
val1 = fabsf (val1);
val2 = fabsf (val2);
- /* Fall through. */
+ ATTRIBUTE_FALLTHROUGH;
case 6: /* 110 */
result = val1 > val2;
break;