]> git.proxmox.com Git - mirror_qemu.git/blob - tests/test-i386-vm86.S
8575ae7ca289e7d06ed9649e913f5f3553756921
[mirror_qemu.git] / tests / test-i386-vm86.S
1 .code16
2 .globl vm86_code_start
3 .globl vm86_code_end
4
5 #define GET_OFFSET(x) ((x) - vm86_code_start + 0x100)
6
7 vm86_code_start:
8 movw $GET_OFFSET(hello_world), %dx
9 movb $0x09, %ah
10 int $0x21
11
12 /* prepare int 0x90 vector */
13 xorw %ax, %ax
14 movw %ax, %es
15 es movw $GET_OFFSET(int90_test), 0x90 * 4
16 es movw %cs, 0x90 * 4 + 2
17
18 /* launch int 0x90 */
19
20 int $0x90
21
22 /* test IF support */
23 movw $GET_OFFSET(IF_msg), %dx
24 movb $0x09, %ah
25 int $0x21
26
27 pushf
28 popw %dx
29 movb $0xff, %ah
30 int $0x21
31
32 cli
33 pushf
34 popw %dx
35 movb $0xff, %ah
36 int $0x21
37
38 sti
39 pushfl
40 popl %edx
41 movb $0xff, %ah
42 int $0x21
43
44 #if 0
45 movw $GET_OFFSET(IF_msg1), %dx
46 movb $0x09, %ah
47 int $0x21
48
49 pushf
50 movw %sp, %bx
51 andw $~0x200, (%bx)
52 popf
53 #else
54 cli
55 #endif
56
57 pushf
58 popw %dx
59 movb $0xff, %ah
60 int $0x21
61
62 pushfl
63 movw %sp, %bx
64 orw $0x200, (%bx)
65 popfl
66
67 pushfl
68 popl %edx
69 movb $0xff, %ah
70 int $0x21
71
72 movb $0x00, %ah
73 int $0x21
74
75 int90_test:
76 pushf
77 pop %dx
78 movb $0xff, %ah
79 int $0x21
80
81 movw %sp, %bx
82 movw 4(%bx), %dx
83 movb $0xff, %ah
84 int $0x21
85
86 movw $GET_OFFSET(int90_msg), %dx
87 movb $0x09, %ah
88 int $0x21
89 iret
90
91 int90_msg:
92 .string "INT90 started\n$"
93
94 hello_world:
95 .string "Hello VM86 world\n$"
96
97 IF_msg:
98 .string "VM86 IF test\n$"
99
100 IF_msg1:
101 .string "If you see a diff here, your Linux kernel is buggy, please update to 2.4.20 kernel\n$"
102
103 vm86_code_end: