diff mbox

fix realmode.c emulator test

Message ID 20100301141446.GM16909@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Gleb Natapov March 1, 2010, 2:14 p.m. UTC
None
diff mbox

Patch

diff --git a/kvm/user/test/x86/realmode.c b/kvm/user/test/x86/realmode.c
index 9bf6cb0..bc6b27f 100644
--- a/kvm/user/test/x86/realmode.c
+++ b/kvm/user/test/x86/realmode.c
@@ -87,7 +87,7 @@  static void exec_in_big_real_mode(const struct regs *inregs,
 		"xchg %%esp, %[save]+24 \n\t"
 		"xchg %%ebp, %[save]+28 \n\t"
 
-		"test_insn: . = . + 16\n\t"
+		"test_insn: . = . + 32\n\t"
 		"test_insn_end: \n\t"
 
 		"xchg %%eax, %[save]+0 \n\t"
@@ -134,10 +134,10 @@  int regs_equal(const struct regs *r1, const struct regs *r2, int ignore)
 
 #define MK_INSN(name, str)                         \
 	asm (				           \
-		".pushsection \".text\" \n\t"	   \
+		".text 1\n\t"                      \
 		"insn_" #name ": " str " \n\t"	   \
 		"insn_" #name "_end: \n\t"	   \
-		".popsection \n\t"		   \
+		".text\n\t"                        \
 		);				   \
 	extern u8 insn_##name[], insn_##name##_end[]
 
@@ -293,25 +293,31 @@  void test_io(void)
 {
 	struct regs inregs = { 0 }, outregs;
 	MK_INSN(io_test1, "mov $0xff, %al \n\t"
-		          "out %al, $0x10 \n\t"
-			  "in $0x10, %al \n\t");
+		          "out %al, $0xe0 \n\t"
+		          "mov $0x00, %al \n\t"
+			  "in $0xe0, %al \n\t");
 	MK_INSN(io_test2, "mov $0xffff, %ax \n\t"
-			  "out %ax, $0x10 \n\t"
-			  "in $0x10, %ax \n\t");
+			  "out %ax, $0xe0 \n\t"
+			  "mov $0x0000, %ax \n\t"
+			  "in $0xe0, %ax \n\t");
 	MK_INSN(io_test3, "mov $0xffffffff, %eax \n\t"
-			  "out %eax, $0x10 \n\t"
-			  "in $0x10, %eax \n\t");
-	MK_INSN(io_test4, "mov $0x10, %dx \n\t"
+			  "out %eax, $0xe0 \n\t"
+			  "mov $0x000000, %eax \n\t"
+			  "in $0xe0, %eax \n\t");
+	MK_INSN(io_test4, "mov $0xe0, %dx \n\t"
 			  "mov $0xff, %al \n\t"
 			  "out %al, %dx \n\t"
+			  "mov $0x00, %al \n\t"
 			  "in %dx, %al \n\t");
-	MK_INSN(io_test5, "mov $0x10, %dx \n\t"
+	MK_INSN(io_test5, "mov $0xe0, %dx \n\t"
 			  "mov $0xffff, %ax \n\t"
 			  "out %ax, %dx \n\t"
+			  "mov $0x0000, %ax \n\t"
 			  "in %dx, %ax \n\t");
-	MK_INSN(io_test6, "mov $0x10, %dx \n\t"
+	MK_INSN(io_test6, "mov $0xe0, %dx \n\t"
 			  "mov $0xffffffff, %eax \n\t"
 			  "out %eax, %dx \n\t"
+			  "mov $0x00000000, %eax \n\t"
 			  "in %dx, %eax \n\t");
 
 	exec_in_big_real_mode(&inregs, &outregs,