On Mon, 2016-12-26 at 00:49 +0900, Masami Hiramatsu wrote:
On Fri, 23 Dec 2016 17:37:43 -0800 Ricardo Neri <ricardo.neri-calderon(a)linux.intel.com> wrote:
+static int __identify_insn(struct insn *insn) +{ + /* by getting modrm we also get the opcode */ + insn_get_modrm(insn); + if (insn->opcode.bytes[0] != 0xf) + return -EINVAL; + + if (insn->opcode.bytes[1] == 0x1) { + switch (X86_MODRM_REG(insn->modrm.value)) { + case 0: + return UMIP_SGDT; + case 1: + return UMIP_SIDT; + case 4: + return UMIP_SMSW; + default: + return -EINVAL; + } + } else if (insn->opcode.bytes[1] == 0x0) { + if (X86_MODRM_REG(insn->modrm.value) == 0) + return UMIP_SLDT; + else if (X86_MODRM_REG(insn->modrm.value) == 1) + return UMIP_STR; + else + return -EINVAL; + }
gcc detected an error here, you may need return "-EINVAL".
I will make this change. I removed this EINVAL at the last minute as it didn't look right. It was indeed right. Thanks and BR, Ricardo
Thanks,