x86emul: drop pointless and add useful default cases

There's no point in having default cases when all possible values have
respective case statements, or when there's just a "break" statement.

Otoh the two main switch() statements better get default cases added,
just to cover the case of someone altering one of the two lookup arrays
without suitably changing these switch statements.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
Jan Beulich committed 2016-07-05 11:17:25 +02:00
1 parent f86eabea5d
commit a800e4f611
1 file changed
+21 -13
+21 -13
View File
@@ -1379,7 +1379,6 @@ decode_segment(uint8_t modrm_reg)
case 3: return x86_seg_ds;
case 4: return x86_seg_fs;
case 5: return x86_seg_gs;
default: break;
}
return decode_segment_failed;
}
@@ -1503,6 +1502,19 @@ int x86emul_unhandleable_rw(
return X86EMUL_UNHANDLEABLE;
}
static void internal_error(const char *which, uint8_t byte,
const struct cpu_user_regs *regs)
{
#ifdef __XEN__
static bool_t logged;
if ( !test_and_set_bool(logged) )
gprintk(XENLOG_ERR, "Internal error: %s/%02x [%04x:%08lx]\n",
which, byte, regs->cs, regs->eip);
#endif
ASSERT_UNREACHABLE();
}
int
x86_emulate(
struct x86_emulate_ctxt *ctxt,
@@ -2996,8 +3008,6 @@ x86_emulate(
case 7: /* fdivr */
emulate_fpu_insn_memsrc("fdivrs", src.val);
break;
default:
goto cannot_emulate;
}
}
break;
@@ -3128,8 +3138,6 @@ x86_emulate(
case 7: /* fidivr m32i */
emulate_fpu_insn_memsrc("fidivrl", src.val);
break;
default:
goto cannot_emulate;
}
}
break;
@@ -3352,8 +3360,6 @@ x86_emulate(
case 7: /* fidivr m16i */
emulate_fpu_insn_memsrc("fidivrs", src.val);
break;
default:
goto cannot_emulate;
}
}
break;
@@ -3431,8 +3437,6 @@ x86_emulate(
dst.type = OP_MEM;
emulate_fpu_insn_memdst("fistpll", dst.val);
break;
default:
goto cannot_emulate;
}
}
break;
@@ -3750,8 +3754,6 @@ x86_emulate(
}
break;
}
default:
goto cannot_emulate;
}
break;
@@ -3845,10 +3847,12 @@ x86_emulate(
goto push;
case 7:
generate_exception_if(1, EXC_UD, -1);
default:
goto cannot_emulate;
}
break;
default:
internal_error("primary", b, ctxt->regs);
goto cannot_emulate;
}
writeback:
@@ -4815,6 +4819,10 @@ x86_emulate(
break;
}
break;
default:
internal_error("secondary", b, ctxt->regs);
goto cannot_emulate;
}
goto writeback;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.