Adds cld/std, cli/sti, and clc instructions to the test harness.

Signed-off-by: Mohammed Gamal <[EMAIL PROTECTED]>
---
 user/test/x86/realmode.c |   40 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/user/test/x86/realmode.c b/user/test/x86/realmode.c
index 906be09..904ef21 100644
--- a/user/test/x86/realmode.c
+++ b/user/test/x86/realmode.c
@@ -172,6 +172,45 @@ void test_mov_imm(const struct regs *inregs, struct regs 
*outregs)
                print_serial("mov test 5: FAIL\n");
 }
 
+void test_eflags_insn(struct regs *inregs, struct regs *outregs)
+{
+       MK_INSN(clc, "clc");
+       MK_INSN(cli, "cli");
+       MK_INSN(sti, "sti");
+       MK_INSN(cld, "cld");
+       MK_INSN(std, "std");
+
+       exec_in_big_real_mode(inregs, outregs,
+                             insn_clc,
+                             insn_clc_end - insn_clc);
+       if(outregs->eflags & 1)
+               print_serial("clc test: FAIL\n");
+       
+       exec_in_big_real_mode(inregs, outregs,
+                             insn_cli,
+                             insn_cli_end - insn_cli);
+       if(outregs->eflags & (1 << 9))
+               print_serial("cli test: FAIL\n");
+
+       exec_in_big_real_mode(inregs, outregs,
+                             insn_sti,
+                             insn_sti_end - insn_sti);
+       if(!(outregs->eflags & (1 << 9)))
+               print_serial("sti test: FAIL\n");
+
+       exec_in_big_real_mode(inregs, outregs,
+                             insn_cld,
+                             insn_cld_end - insn_cld);
+       if(outregs->eflags & (1 << 10))
+               print_serial("cld test: FAIL\n");
+
+       exec_in_big_real_mode(inregs, outregs,
+                             insn_std,
+                             insn_std_end - insn_std);
+       if(!(outregs->eflags & (1 << 10)))
+               print_serial("std test: FAIL\n");
+}
+
 void start(void)
 {
        struct regs inregs = { 0 }, outregs;
@@ -181,6 +220,7 @@ void start(void)
        if (!regs_equal(&inregs, &outregs, 0))
                print_serial("null test: FAIL\n");
        test_mov_imm(&inregs, &outregs);
+       test_eflags_insn(&inregs, &outregs);
        exit(0);
 }
 
-- 
1.5.4.3


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

Reply via email to