diff mbox

Add push es instruction test in test harness

Message ID 20090816005455.GB19989@mohd-laptop (mailing list archive)
State New, archived
Headers show

Commit Message

Mohammed Gamal Aug. 16, 2009, 12:54 a.m. UTC
Signed-off-by: Mohammed Gamal <m.gamal005@gmail.com>
---
 kvm/user/test/x86/realmode.c |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

Comments

Avi Kivity Aug. 16, 2009, 8:44 a.m. UTC | #1
On 08/16/2009 03:54 AM, Mohammed Gamal wrote:
> Signed-off-by: Mohammed Gamal<m.gamal005@gmail.com>
> ---
>   kvm/user/test/x86/realmode.c |   16 ++++++++++++++++
>   1 files changed, 16 insertions(+), 0 deletions(-)
>
> diff --git a/kvm/user/test/x86/realmode.c b/kvm/user/test/x86/realmode.c
> index 755b5d1..8db2c7a 100644
> --- a/kvm/user/test/x86/realmode.c
> +++ b/kvm/user/test/x86/realmode.c
> @@ -468,6 +468,21 @@ void test_long_jmp()
>   		print_serial("Long JMP Test: FAIL\n");
>   }
>
> +void test_push_es()
> +{
> +	struct regs inregs = { 0 }, outregs;
> +	
> +	MK_INSN(push_es, "mov $0x1234, %ax\n\t"
> +			 "mov %ax, %es\n\t"
> +			 "push %es\n\t"
> +			 "movw (%esp), %bx \n\t");
> +	exec_in_big_real_mode(&inregs,&outregs,
> +			      insn_push_es,
> +			      insn_push_es_end - insn_push_es);
> +	if(!regs_equal(&inregs,&outregs, R_AX|R_BX|R_SP) || outregs.eax != 0x1234)
>    

You need to check bx here, otherwise the test will always succeed.

> +		print_serial("Push ES Test: FAIL\n");
> +}
> +
>    
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/kvm/user/test/x86/realmode.c b/kvm/user/test/x86/realmode.c
index 755b5d1..8db2c7a 100644
--- a/kvm/user/test/x86/realmode.c
+++ b/kvm/user/test/x86/realmode.c
@@ -468,6 +468,21 @@  void test_long_jmp()
 		print_serial("Long JMP Test: FAIL\n");
 }
 
+void test_push_es()
+{
+	struct regs inregs = { 0 }, outregs;
+	
+	MK_INSN(push_es, "mov $0x1234, %ax\n\t"
+			 "mov %ax, %es\n\t"
+			 "push %es\n\t"
+			 "movw (%esp), %bx \n\t"); 
+	exec_in_big_real_mode(&inregs, &outregs,
+			      insn_push_es,
+			      insn_push_es_end - insn_push_es);
+	if(!regs_equal(&inregs, &outregs, R_AX|R_BX|R_SP) || outregs.eax != 0x1234)
+		print_serial("Push ES Test: FAIL\n");
+}
+
 void test_null(void)
 {
 	struct regs inregs = { 0 }, outregs;
@@ -492,6 +507,7 @@  void start(void)
 	test_call();
 	/* long jmp test uses call near so test it after testing call */
 	test_long_jmp();
+	test_push_es();
 
 	exit(0);
 }