VirtualBox

source: vbox/trunk/src/recompiler/tests/test-i386-vm86.S@ 62639

最後變更 在這個檔案從62639是 36140,由 vboxsync 提交於 14 年 前

rem: Re-synced to svn://svn.savannah.nongnu.org/qemu/trunk@5495 (repo UUID c046a42c-6fe2-441c-8c8c-71466251a162).

  • 屬性 svn:eol-style 設為 native
檔案大小: 1.8 KB
 
1 .code16
2 .globl vm86_code_start
3 .globl vm86_code_end
4
5#define GET_OFFSET(x) ((x) - vm86_code_start + 0x100)
6
7vm86_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
75int90_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
91int90_msg:
92 .string "INT90 started\n$"
93
94hello_world:
95 .string "Hello VM86 world\n$"
96
97IF_msg:
98 .string "VM86 IF test\n$"
99
100IF_msg1:
101 .string "If you see a diff here, your Linux kernel is buggy, please update to 2.4.20 kernel\n$"
102
103vm86_code_end:
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette