~ubuntu-branches/debian/squeeze/ffcall/squeeze

« back to all changes in this revision

Viewing changes to callback/vacall_r/vacall-i386-macro.S

  • Committer: Bazaar Package Importer
  • Author(s): Christoph Egger
  • Date: 2010-06-26 15:29:30 UTC
  • mfrom: (5.1.1 experimental)
  • Revision ID: james.westby@ubuntu.com-20100626152930-c09y01gk3szcnykn
Tags: 1.10+cvs20100619-2
Ship to unstable

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "asmi386.h"
 
2
TEXT()
 
3
        ALIGN(2)
 
4
GLOBL(C(__vacall_r))
 
5
        DECLARE_FUNCTION(__vacall_r)
 
6
FUNBEGIN(__vacall_r)
 
7
        INSN2(sub,l     ,NUM(36),R(esp))
 
8
        INSN2(mov,l     ,NUM(0),X4 MEM(esp))
 
9
        INSN2(lea,l     ,X4 MEM_DISP(esp,44),R(ecx))
 
10
        INSN2(mov,l     ,R(ecx),X4 MEM_DISP(esp,4))
 
11
        INSN2(mov,l     ,NUM(0),X4 MEM_DISP(esp,8))
 
12
        INSN2(mov,l     ,NUM(0),X4 MEM_DISP(esp,12))
 
13
        INSN2(mov,l     ,R(ebx),X4 MEM_DISP(esp,32))
 
14
        INSN2(mov,l     ,R(esp),R(edx))
 
15
        INSN1(push,l    ,R(edx))
 
16
        INSN2(mov,l     ,X4 MEM_DISP(esp,44),R(ecx))
 
17
        INSN2(mov,l     ,X4 MEM_DISP(ecx,4),R(edx))
 
18
        INSN1(push,l    ,R(edx))
 
19
        INSN2(mov,l     ,X4 MEM_DISP(esp,48),R(ecx))
 
20
        INSN2(mov,l     ,X4 MEM(ecx),R(edx))
 
21
        INSN1(call,_    ,INDIR(R(edx)))
 
22
        INSN2(add,l     ,NUM(8),R(esp))
 
23
        INSN2(cmp,l     ,NUM(0),X4 MEM_DISP(esp,12))
 
24
        INSN1(je,_      ,L3)
 
25
        INSN2(cmp,l     ,NUM(1),X4 MEM_DISP(esp,12))
 
26
        INSN1(je,_      ,L45)
 
27
        INSN2(cmp,l     ,NUM(2),X4 MEM_DISP(esp,12))
 
28
        INSN1(jne,_     ,L6)
 
29
L45:
 
30
        INSN2MOVX(movs,b        ,X1 MEM_DISP(esp,24),R(eax))
 
31
        INSN1(jmp,_     ,L3)
 
32
L6:
 
33
        INSN2(cmp,l     ,NUM(3),X4 MEM_DISP(esp,12))
 
34
        INSN1(jne,_     ,L8)
 
35
        INSN2MOVX(movz,b        ,X1 MEM_DISP(esp,24),R(eax))
 
36
        INSN1(jmp,_     ,L3)
 
37
L8:
 
38
        INSN2(cmp,l     ,NUM(4),X4 MEM_DISP(esp,12))
 
39
        INSN1(jne,_     ,L10)
 
40
        INSN2MOVX(movs,w        ,X2 MEM_DISP(esp,24),R(eax))
 
41
        INSN1(jmp,_     ,L3)
 
42
L10:
 
43
        INSN2(cmp,l     ,NUM(5),X4 MEM_DISP(esp,12))
 
44
        INSN1(jne,_     ,L12)
 
45
        INSN2MOVX(movz,w        ,X2 MEM_DISP(esp,24),R(eax))
 
46
        INSN1(jmp,_     ,L3)
 
47
L12:
 
48
        INSN2(cmp,l     ,NUM(6),X4 MEM_DISP(esp,12))
 
49
        INSN1(je,_      ,L46)
 
50
        INSN2(cmp,l     ,NUM(7),X4 MEM_DISP(esp,12))
 
51
        INSN1(je,_      ,L46)
 
52
        INSN2(cmp,l     ,NUM(8),X4 MEM_DISP(esp,12))
 
53
        INSN1(je,_      ,L46)
 
54
        INSN2(cmp,l     ,NUM(9),X4 MEM_DISP(esp,12))
 
55
        INSN1(je,_      ,L46)
 
56
        INSN2(mov,l     ,X4 MEM_DISP(esp,12),R(edx))
 
57
        INSN2(add,l     ,NUM(-10),R(edx))
 
58
        INSN2(cmp,l     ,NUM(1),R(edx))
 
59
        INSN1(ja,_      ,L22)
 
60
        INSN2(mov,l     ,X4 MEM_DISP(esp,24),R(eax))
 
61
        INSN2(mov,l     ,X4 MEM_DISP(esp,28),R(edx))
 
62
        INSN1(jmp,_     ,L3)
 
63
L22:
 
64
        INSN2(cmp,l     ,NUM(12),X4 MEM_DISP(esp,12))
 
65
        INSN1(jne,_     ,L24)
 
66
        INSN1(fld,s     ,X4 MEM_DISP(esp,24))
 
67
        INSN1(jmp,_     ,L3)
 
68
L24:
 
69
        INSN2(cmp,l     ,NUM(13),X4 MEM_DISP(esp,12))
 
70
        INSN1(jne,_     ,L26)
 
71
        INSN1(fld,l     ,X8 MEM_DISP(esp,24))
 
72
        INSN1(jmp,_     ,L3)
 
73
L26:
 
74
        INSN2(cmp,l     ,NUM(14),X4 MEM_DISP(esp,12))
 
75
        INSN1(jne,_     ,L28)
 
76
L46:
 
77
        INSN2(mov,l     ,X4 MEM_DISP(esp,24),R(eax))
 
78
        INSN1(jmp,_     ,L3)
 
79
L28:
 
80
        INSN2(cmp,l     ,NUM(15),X4 MEM_DISP(esp,12))
 
81
        INSN1(jne,_     ,L3)
 
82
        INSN2(test,b    ,NUM(1),X1 MEM(esp))
 
83
        INSN1(jne,_     ,L47)
 
84
        INSN2(test,b    ,NUM(4),X1 MEM_DISP(esp,1))
 
85
        INSN1(je,_      ,L33)
 
86
        INSN2(cmp,l     ,NUM(1),X4 MEM_DISP(esp,16))
 
87
        INSN1(jne,_     ,L34)
 
88
        INSN2(mov,l     ,X4 MEM_DISP(esp,8),R(edx))
 
89
        INSN2MOVX(movz,b        ,X1 MEM(edx),R(eax))
 
90
        INSN1(jmp,_     ,L3)
 
91
L34:
 
92
        INSN2(cmp,l     ,NUM(2),X4 MEM_DISP(esp,16))
 
93
        INSN1(jne,_     ,L37)
 
94
        INSN2(mov,l     ,X4 MEM_DISP(esp,8),R(edx))
 
95
        INSN2MOVX(movz,w        ,X2 MEM(edx),R(eax))
 
96
        INSN1(jmp,_     ,L3)
 
97
L37:
 
98
        INSN2(cmp,l     ,NUM(4),X4 MEM_DISP(esp,16))
 
99
        INSN1(jne,_     ,L39)
 
100
        INSN2(mov,l     ,X4 MEM_DISP(esp,8),R(edx))
 
101
        INSN2(mov,l     ,X4 MEM(edx),R(eax))
 
102
        INSN1(jmp,_     ,L3)
 
103
L39:
 
104
        INSN2(cmp,l     ,NUM(8),X4 MEM_DISP(esp,16))
 
105
        INSN1(jne,_     ,L33)
 
106
        INSN2(mov,l     ,X4 MEM_DISP(esp,8),R(edx))
 
107
        INSN2(mov,l     ,X4 MEM(edx),R(eax))
 
108
        INSN2(mov,l     ,X4 MEM_DISP(esp,8),R(edx))
 
109
        INSN2(mov,l     ,X4 MEM_DISP(edx,4),R(edx))
 
110
        INSN1(jmp,_     ,L3)
 
111
L33:
 
112
        INSN2(test,b    ,NUM(24),X1 MEM(esp))
 
113
        INSN1(jne,_     ,L42)
 
114
        INSN2(add,l     ,NUM(36),R(esp))
 
115
        ret NUM(8)
 
116
L42:
 
117
        INSN2(test,b    ,NUM(16),X1 MEM(esp))
 
118
        INSN1(je,_      ,L3)
 
119
L47:
 
120
        INSN2(mov,l     ,X4 MEM_DISP(esp,8),R(eax))
 
121
L3:
 
122
        INSN2(test,b    ,NUM(2),X1 MEM_DISP(esp,1))
 
123
        INSN1(je,_      ,L44)
 
124
        INSN2(mov,l     ,X4 MEM_DISP(esp,36),R(ecx))
 
125
        INSN2(mov,l     ,X4 MEM_DISP(esp,4),R(esp))
 
126
        INSN1(jmp,_     ,INDIR(R(ecx)))
 
127
L44:
 
128
        INSN2(add,l     ,NUM(36),R(esp))
 
129
        ret NUM(4)
 
130
        INSN2(add,l     ,NUM(36),R(esp))
 
131
        ret
 
132
FUNEND()
 
133