]>
Commit | Line | Data |
---|---|---|
3a27ad0b FB |
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: | |
104 |