~ahs3/+junk/cq-qemu

« back to all changes in this revision

Viewing changes to tests/test-i386-vm86.S

  • Committer: Al Stone
  • Date: 2012-02-09 01:17:20 UTC
  • Revision ID: albert.stone@canonical.com-20120209011720-tztl7ik3qayz80p4
first commit to bzr for qemu

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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: