X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_decoder.c;h=4b88e67617e29781f59c5a896c995e7eae832984;hb=123a1ba27ea09c8fa77a1b36ce625b43d7c48b14;hp=54c77c431d889242ca3bcc8c0cc498e886414136;hpb=da0f0deecf22754656bad2a95640461ec3ac4f1d;p=palacios.git diff --git a/palacios/src/palacios/vmm_decoder.c b/palacios/src/palacios/vmm_decoder.c index 54c77c4..4b88e67 100644 --- a/palacios/src/palacios/vmm_decoder.c +++ b/palacios/src/palacios/vmm_decoder.c @@ -22,90 +22,90 @@ int v3_opcode_cmp(const uchar_t * op1, const uchar_t * op2) { - if (op1[0] != op2[0]) { - return op1[0] - op2[0];; - } else { - return memcmp(op1 + 1, op2 + 1, op1[0]); - } + if (op1[0] != op2[0]) { + return op1[0] - op2[0];; + } else { + return memcmp(op1 + 1, op2 + 1, op1[0]); + } } void v3_get_prefixes(uchar_t * instr, struct x86_prefixes * prefixes) { - while (1) { - switch (*instr) { - case 0xF0: // lock - prefixes->lock = 1; - break; - - case 0xF2: // REPNE/REPNZ - prefixes->repnz = 1; - prefixes->repne = 1; - break; - - case 0xF3: // REP or REPE/REPZ - prefixes->rep = 1; - prefixes->repe = 1; - prefixes->repz = 1; - break; - - case 0x2E: // CS override or Branch hint not taken (with Jcc instrs) - prefixes->cs_override = 1; - prefixes->br_not_taken = 1; - break; - - case 0x36: // SS override - prefixes->ss_override = 1; - break; - - case 0x3E: // DS override or Branch hint taken (with Jcc instrs) - prefixes->ds_override = 1; - prefixes->br_taken = 1; - break; - - case 0x26: // ES override - prefixes->es_override = 1; - break; - - case 0x64: // FS override - prefixes->fs_override = 1; - break; + while (1) { + switch (*instr) { + case 0xF0: // lock + prefixes->lock = 1; + break; + + case 0xF2: // REPNE/REPNZ + prefixes->repnz = 1; + prefixes->repne = 1; + break; + + case 0xF3: // REP or REPE/REPZ + prefixes->rep = 1; + prefixes->repe = 1; + prefixes->repz = 1; + break; + + case 0x2E: // CS override or Branch hint not taken (with Jcc instrs) + prefixes->cs_override = 1; + prefixes->br_not_taken = 1; + break; + + case 0x36: // SS override + prefixes->ss_override = 1; + break; + + case 0x3E: // DS override or Branch hint taken (with Jcc instrs) + prefixes->ds_override = 1; + prefixes->br_taken = 1; + break; + + case 0x26: // ES override + prefixes->es_override = 1; + break; + + case 0x64: // FS override + prefixes->fs_override = 1; + break; - case 0x65: // GS override - prefixes->gs_override = 1; - break; + case 0x65: // GS override + prefixes->gs_override = 1; + break; - case 0x66: // operand size override - prefixes->op_size = 1; - break; + case 0x66: // operand size override + prefixes->op_size = 1; + break; - case 0x67: // address size override - prefixes->addr_size = 1; - break; + case 0x67: // address size override + prefixes->addr_size = 1; + break; - default: - return; - } + default: + return; + } - instr++; - } + instr++; + } } void v3_strip_rep_prefix(uchar_t * instr, int length) { - int read_ctr = 0; - int write_ctr = 0; - int found = 0; - - while (read_ctr < length) { - if ((!found) && - ( (instr[read_ctr] == 0xF2) || - (instr[read_ctr] == 0xF3))) { - read_ctr++; - found = 1; - } else { - instr[write_ctr] = instr[read_ctr]; - write_ctr++; - read_ctr++; + int read_ctr = 0; + int write_ctr = 0; + int found = 0; + + while (read_ctr < length) { + if ((!found) && + ( (instr[read_ctr] == 0xF2) || + (instr[read_ctr] == 0xF3))) { + read_ctr++; + found = 1; + } else { + instr[write_ctr] = instr[read_ctr]; + write_ctr++; + read_ctr++; + } } - } }