Statistics
| Branch: | Revision:

root / tests / test-i386-code16.S @ 7aaabde7

History | View | Annotate | Download (1.3 kB)

1 e5918247 bellard
        .code16
2 e5918247 bellard
        .globl code16_start
3 e5918247 bellard
        .globl code16_end
4 e5918247 bellard
5 e5918247 bellard
CS_SEG = 0xf
6 e5918247 bellard
7 e5918247 bellard
code16_start:
8 e5918247 bellard
9 e5918247 bellard
        .globl code16_func1
10 3b46e624 ths
11 e5918247 bellard
        /* basic test */
12 e5918247 bellard
code16_func1 = . - code16_start
13 e5918247 bellard
        mov $1, %eax
14 e5918247 bellard
        data32 lret
15 e5918247 bellard
16 e5918247 bellard
/* test push/pop in 16 bit mode */
17 e5918247 bellard
        .globl code16_func2
18 e5918247 bellard
code16_func2 = . - code16_start
19 e5918247 bellard
        xor %eax, %eax
20 e5918247 bellard
        mov $0x12345678, %ebx
21 e5918247 bellard
        movl %esp, %ecx
22 e5918247 bellard
        push %bx
23 e5918247 bellard
        subl %esp, %ecx
24 e5918247 bellard
        pop %ax
25 e5918247 bellard
        data32 lret
26 e5918247 bellard
27 3b46e624 ths
/* test various jmp opcodes */
28 e5918247 bellard
        .globl code16_func3
29 e5918247 bellard
code16_func3 = . - code16_start
30 e5918247 bellard
        jmp 1f
31 e5918247 bellard
        nop
32 e5918247 bellard
1:
33 e5918247 bellard
        mov $4, %eax
34 e5918247 bellard
        mov $0x12345678, %ebx
35 e5918247 bellard
        xor %bx, %bx
36 e5918247 bellard
        jz 2f
37 e5918247 bellard
        add $2, %ax
38 e5918247 bellard
2:
39 3b46e624 ths
40 e5918247 bellard
        call myfunc
41 3b46e624 ths
42 e5918247 bellard
        lcall $CS_SEG, $(myfunc2 - code16_start)
43 e5918247 bellard
44 e5918247 bellard
        ljmp $CS_SEG, $(myjmp1 - code16_start)
45 e5918247 bellard
myjmp1_next:
46 e5918247 bellard
47 e5918247 bellard
        cs lcall myfunc2_addr - code16_start
48 e5918247 bellard
49 e5918247 bellard
        cs ljmp myjmp2_addr - code16_start
50 e5918247 bellard
myjmp2_next:
51 e5918247 bellard
52 e5918247 bellard
        data32 lret
53 3b46e624 ths
54 e5918247 bellard
myfunc2_addr:
55 e5918247 bellard
        .short myfunc2 - code16_start
56 e5918247 bellard
        .short CS_SEG
57 e5918247 bellard
58 e5918247 bellard
myjmp2_addr:
59 e5918247 bellard
        .short myjmp2 - code16_start
60 e5918247 bellard
        .short CS_SEG
61 e5918247 bellard
62 e5918247 bellard
myjmp1:
63 e5918247 bellard
        add $8, %ax
64 e5918247 bellard
        jmp myjmp1_next
65 e5918247 bellard
66 e5918247 bellard
myjmp2:
67 e5918247 bellard
        add $16, %ax
68 e5918247 bellard
        jmp myjmp2_next
69 e5918247 bellard
70 e5918247 bellard
myfunc:
71 e5918247 bellard
        add $1, %ax
72 e5918247 bellard
        ret
73 e5918247 bellard
74 e5918247 bellard
myfunc2:
75 e5918247 bellard
        add $4, %ax
76 e5918247 bellard
        lret
77 e5918247 bellard
78 e5918247 bellard
79 e5918247 bellard
code16_end: