}
+ pfile->mode |= O_LARGEFILE;
+
+
pfile->filp = filp_open(path, pfile->mode, 0);
- if (pfile->filp == NULL) {
+ if (IS_ERR(pfile->filp)) {
printk("Cannot open file: %s\n", path);
return NULL;
}
}
if (has_sib_byte) {
- instr_cursor += 1;
struct sib_byte * sib = (struct sib_byte *)(instr_cursor);
int scale = 0x1 << sib->scale;
case 5:
if (modrm->mod != 0) {
base_addr += ADDR_MASK(gprs->rbp, 4);
+ } else {
+ mod_mode = DISP32;
+ base_addr = 0;
}
break;
case 6:
}
if (has_sib_byte) {
- instr_cursor += 1;
struct sib_byte * sib = (struct sib_byte *)(instr_cursor);
int scale = 0x1 << sib->scale;
uint8_t index_val = sib->index;
case 5:
if (modrm->mod != 0) {
base_addr += gprs->rbp;
+ } else {
+ mod_mode = DISP32;
+ base_addr = 0;
}
break;
case 6:
if (info->vcpu_id == 0) {
info->core_run_state = CORE_RUNNING;
- info->vm_info->run_state = VM_RUNNING;
} else {
PrintDebug("SVM core %u (on %u): Waiting for core initialization\n", info->vcpu_id, info->pcpu_id);
return -1;
}
+ vm->run_state = VM_RUNNING;
+
// Spawn off threads for each core.
// We work backwards, so that core 0 is always started last.
for (i = 0, vcore_id = vm->num_cores - 1; (i < MAX_CORES) && (vcore_id >= 0); i++) {
if (vmx_info->state == VMX_UNLAUNCHED) {
vmx_info->state = VMX_LAUNCHED;
-
- info->vm_info->run_state = VM_RUNNING;
ret = v3_vmx_launch(&(info->vm_regs), info, &(info->ctrl_regs));
} else {
V3_ASSERT(vmx_info->state != VMX_UNLAUNCHED);
if (info->vcpu_id == 0) {
info->core_run_state = CORE_RUNNING;
- info->vm_info->run_state = VM_RUNNING;
} else {
PrintDebug("VMX core %u: Waiting for core initialization\n", info->vcpu_id);