[kvm-devel] [PATCH] make distinction between repeat prefixes F3 and F2

2007-11-22 Thread Guillaume Thouvenin
Hello,

  CMPS and SCAS instructions accept repeat prefixes F3 and F2. So in
order to emulate those prefixed instructions we need to be able to know
if prefixes are REP/REPE/REPZ or REPNE/REPNZ. Currently kvm doesn't make
this distinction. This patch introduces this distinction.

Signed-off-by: Guillaume Thouvenin [EMAIL PROTECTED]

---

 drivers/kvm/x86_emulate.c |4 +++-
 drivers/kvm/x86_emulate.h |4 
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
index bebdcee..f8e7200 100644
--- a/drivers/kvm/x86_emulate.c
+++ b/drivers/kvm/x86_emulate.c
@@ -824,8 +824,10 @@ x86_decode_insn(struct x86_emulate_ctxt *ctxt, struct 
x86_emulate_ops *ops)
c-lock_prefix = 1;
break;
case 0xf2:  /* REPNE/REPNZ */
+   c-rep_prefix = REPNE_REPNZ;
+   break;
case 0xf3:  /* REP/REPE/REPZ */
-   c-rep_prefix = 1;
+   c-rep_prefix = REP_REPE_REPZ;
break;
default:
goto done_prefixes;
diff --git a/drivers/kvm/x86_emulate.h b/drivers/kvm/x86_emulate.h
index 31aa3e1..5ce4c0c 100644
--- a/drivers/kvm/x86_emulate.h
+++ b/drivers/kvm/x86_emulate.h
@@ -161,6 +161,10 @@ struct x86_emulate_ctxt {
struct decode_cache decode;
 };
 
+/* Repeat String Operation Prefix */
+#define REP_REPE_REPZ  1
+#define REPNE_REPNZ2
+
 /* Execution mode, passed to the emulator. */
 #define X86EMUL_MODE_REAL 0/* Real mode. */
 #define X86EMUL_MODE_PROT16   2/* 16-bit protected mode. */

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] make distinction between repeat prefixes F3 and F2

2007-11-22 Thread Avi Kivity
Guillaume Thouvenin wrote:
 Hello,

   CMPS and SCAS instructions accept repeat prefixes F3 and F2. So in
 order to emulate those prefixed instructions we need to be able to know
 if prefixes are REP/REPE/REPZ or REPNE/REPNZ. Currently kvm doesn't make
 this distinction. This patch introduces this distinction.
   

Applied, thanks.

-- 
error compiling committee.c: too many arguments to function


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] make distinction between repeat prefixes F3 and F2

2007-11-22 Thread Amit Shah
* Guillaume Thouvenin wrote:
 Hello,

   CMPS and SCAS instructions accept repeat prefixes F3 and F2. So in
 order to emulate those prefixed instructions we need to be able to know
 if prefixes are REP/REPE/REPZ or REPNE/REPNZ. Currently kvm doesn't make
 this distinction. This patch introduces this distinction.

 Signed-off-by: Guillaume Thouvenin [EMAIL PROTECTED]

 ---

  drivers/kvm/x86_emulate.c |4 +++-
  drivers/kvm/x86_emulate.h |4 
  2 files changed, 7 insertions(+), 1 deletions(-)

 diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
 index bebdcee..f8e7200 100644
 --- a/drivers/kvm/x86_emulate.c
 +++ b/drivers/kvm/x86_emulate.c
 @@ -824,8 +824,10 @@ x86_decode_insn(struct x86_emulate_ctxt *ctxt, struct
 x86_emulate_ops *ops) c-lock_prefix = 1;
   break;
   case 0xf2:  /* REPNE/REPNZ */
 + c-rep_prefix = REPNE_REPNZ;
 + break;
   case 0xf3:  /* REP/REPE/REPZ */
 - c-rep_prefix = 1;
 + c-rep_prefix = REP_REPE_REPZ;
   break;
   default:
   goto done_prefixes;
 diff --git a/drivers/kvm/x86_emulate.h b/drivers/kvm/x86_emulate.h
 index 31aa3e1..5ce4c0c 100644
 --- a/drivers/kvm/x86_emulate.h
 +++ b/drivers/kvm/x86_emulate.h
 @@ -161,6 +161,10 @@ struct x86_emulate_ctxt {
   struct decode_cache decode;
  };

 +/* Repeat String Operation Prefix */
 +#define REP_REPE_REPZ  1
 +#define REPNE_REPNZ2

Can you just rename this to REP and REPNE?

Does this fix the problems you saw with openbsd?

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] make distinction between repeat prefixes F3 and F2

2007-11-22 Thread Guillaume Thouvenin
On Thu, 22 Nov 2007 17:27:55 +0530
Amit Shah [EMAIL PROTECTED] wrote:
 
 Can you just rename this to REP and REPNE?

Yes I can. I send the new patch.
 
 Does this fix the problems you saw with openbsd?

No not yet. It will help to make the difference between REPE prefix and
REPNE prefix because both can be added to the CMPS and SCAS
instruction. To be able to boot OpenBSD41 properly we need to emulate
CMPS. 

I replaced CMPS by a NOP instruction and it allows me to boot
openbsd but it's not really an acceptable solution, it was just to
see if that the emulation of CMPS instruction was the problem.


Guillaume

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] make distinction between repeat prefixes F3 and F2

2007-11-22 Thread Guillaume Thouvenin
CMPS and SCAS instructions accept repeat prefixes REPE and REPNE. So in
order to emulate those prefixed instructions we need to be able to know
if prefixes are REP/REPE/REPZ or REPNE/REPNZ. Currently kvm doesn't
make this distinction. This patch introduces this distinction.

Signed-off-by: Guillaume Thouvenin [EMAIL PROTECTED]
---

 drivers/kvm/x86_emulate.c |4 +++-
 drivers/kvm/x86_emulate.h |4 
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
index bebdcee..3eae1b1 100644
--- a/drivers/kvm/x86_emulate.c
+++ b/drivers/kvm/x86_emulate.c
@@ -824,8 +824,10 @@ x86_decode_insn(struct x86_emulate_ctxt *ctxt, struct 
x86_emulate_ops *ops)
c-lock_prefix = 1;
break;
case 0xf2:  /* REPNE/REPNZ */
+   c-rep_prefix = REPNE;
+   break;
case 0xf3:  /* REP/REPE/REPZ */
-   c-rep_prefix = 1;
+   c-rep_prefix = REP;
break;
default:
goto done_prefixes;
diff --git a/drivers/kvm/x86_emulate.h b/drivers/kvm/x86_emulate.h
index 31aa3e1..2252989 100644
--- a/drivers/kvm/x86_emulate.h
+++ b/drivers/kvm/x86_emulate.h
@@ -161,6 +161,10 @@ struct x86_emulate_ctxt {
struct decode_cache decode;
 };
 
+/* Repeat String Operation Prefix */
+#define REP1
+#define REPNE  2
+
 /* Execution mode, passed to the emulator. */
 #define X86EMUL_MODE_REAL 0/* Real mode. */
 #define X86EMUL_MODE_PROT16   2/* 16-bit protected mode. */

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] make distinction between repeat prefixes F3 and F2

2007-11-22 Thread Amit Shah
* Guillaume Thouvenin wrote:
 On Thu, 22 Nov 2007 17:27:55 +0530

 Amit Shah [EMAIL PROTECTED] wrote:
  Can you just rename this to REP and REPNE?

 Yes I can. I send the new patch.

  Does this fix the problems you saw with openbsd?

 No not yet. It will help to make the difference between REPE prefix and
 REPNE prefix because both can be added to the CMPS and SCAS
 instruction. To be able to boot OpenBSD41 properly we need to emulate
 CMPS.

 I replaced CMPS by a NOP instruction and it allows me to boot
 openbsd but it's not really an acceptable solution, it was just to
 see if that the emulation of CMPS instruction was the problem.

OK, that sounds great!

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel


Re: [kvm-devel] [PATCH] make distinction between repeat prefixes F3 and F2

2007-11-22 Thread Avi Kivity
Guillaume Thouvenin wrote:
 On Thu, 22 Nov 2007 17:27:55 +0530
 Amit Shah [EMAIL PROTECTED] wrote:
  
   
 Can you just rename this to REP and REPNE?
 

 Yes I can. I send the new patch.
   

Too late, merged it already.

  
   
 Does this fix the problems you saw with openbsd?
 

 No not yet. It will help to make the difference between REPE prefix and
 REPNE prefix because both can be added to the CMPS and SCAS
 instruction. To be able to boot OpenBSD41 properly we need to emulate
 CMPS. 

 I replaced CMPS by a NOP instruction and it allows me to boot
 openbsd but it's not really an acceptable solution, it was just to
 see if that the emulation of CMPS instruction was the problem.
   

What is cmps accessing?  VGA memory?


-- 
error compiling committee.c: too many arguments to function


-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel