From b991dfcee512632c22d45a41b58b14c4ddc0630b Mon Sep 17 00:00:00 2001 From: "kaf24@localhost.localdomain" Date: Sat, 11 Nov 2006 01:16:40 +0000 Subject: [PATCH] [VMXASSIST] Support all data segments in mov_to_seg(). This patch lets Plan9 crash at the same location before the original patch by Stephen Tweedie. Signed-off-by: Steven Rostedt --- tools/firmware/vmxassist/vm86.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/tools/firmware/vmxassist/vm86.c b/tools/firmware/vmxassist/vm86.c index 3fd615097e..0cd0e23090 100644 --- a/tools/firmware/vmxassist/vm86.c +++ b/tools/firmware/vmxassist/vm86.c @@ -829,15 +829,33 @@ mov_to_seg(struct regs *regs, unsigned prefix, unsigned opc) goto fail; switch ((modrm & 0x38) >> 3) { + case 0: /* es */ + regs->ves = getreg16(regs, modrm); + saved_rm_regs.ves = 0; + oldctx.es_sel = regs->ves; + return 1; + + /* case 1: cs */ + + case 2: /* ss */ + regs->uss = getreg16(regs, modrm); + saved_rm_regs.uss = 0; + oldctx.ss_sel = regs->uss; + return 1; case 3: /* ds */ regs->vds = getreg16(regs, modrm); saved_rm_regs.vds = 0; oldctx.ds_sel = regs->vds; return 1; - case 0: /* es */ - regs->ves = getreg16(regs, modrm); - saved_rm_regs.ves = 0; - oldctx.es_sel = regs->ves; + case 4: /* fs */ + regs->vfs = getreg16(regs, modrm); + saved_rm_regs.vfs = 0; + oldctx.fs_sel = regs->vfs; + return 1; + case 5: /* gs */ + regs->vgs = getreg16(regs, modrm); + saved_rm_regs.vgs = 0; + oldctx.gs_sel = regs->vgs; return 1; } -- 2.30.2