Statistics
| Branch: | Revision:

root / tests / tcg / test-i386-vm86.S @ c09015dd

History | View | Annotate | Download (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

    
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: