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

« back to all changes in this revision

Viewing changes to avcall/avcall-arm.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 "asmarm.h"
 
2
// Generated by gcc 2.6.3 for ARM/RISCiX
 
3
rfp     .req    r9
 
4
sl      .req    r10
 
5
fp      .req    r11
 
6
ip      .req    r12
 
7
sp      .req    r13
 
8
lr      .req    r14
 
9
pc      .req    r15
 
10
.text
 
11
        .align  0
 
12
        .global C(__builtin_avcall)
 
13
        DECLARE_FUNCTION(__builtin_avcall)
 
14
C(__builtin_avcall:)
 
15
        // args = 0, pretend = 0, frame = 1024
 
16
        // frameC(needed) = 0, current_function_anonymous_args = 0
 
17
        stmfd   sp!, {r4, lr}
 
18
        mov     ip, $4
 
19
        sub     sp, sp, $1024
 
20
        mov     r4, r0
 
21
        ldr     r3, [r4, $20]
 
22
        sub     r3, r3, $32
 
23
        rsb     r3, r4, r3
 
24
        mov     r0, r3, asr $2
 
25
        cmp     ip, r0
 
26
        bge     L3
 
27
        add     r1, r4, $16
 
28
        add     r2, sp, $16
 
29
L5:
 
30
        ldr     r3, [r1, $32]
 
31
        add     r1, r1, $4
 
32
        str     r3, [r2, $-16]
 
33
        add     ip, ip, $1
 
34
        cmp     ip, r0
 
35
        add     r2, r2, $4
 
36
        blt     L5
 
37
L3:
 
38
        ldr     r0, [r4, $32]
 
39
        ldr     r3, [r4, $44]
 
40
        ldr     r2, [r4, $40]
 
41
        ldr     r1, [r4, $36]
 
42
        mov     lr, pc
 
43
        ldr     pc, [r4, $0]
 
44
        mov     ip, r0
 
45
        ldr     r3, [r4, $12]
 
46
        cmp     r3, $1
 
47
        beq     L8
 
48
        cmp     r3, $0
 
49
        beq     L60
 
50
        cmp     r3, $2
 
51
        beq     L61
 
52
        cmp     r3, $3
 
53
        beq     L61
 
54
        cmp     r3, $4
 
55
        beq     L61
 
56
        cmp     r3, $5
 
57
        beq     L62
 
58
        cmp     r3, $6
 
59
        beq     L62
 
60
        cmp     r3, $7
 
61
        beq     L60
 
62
        cmp     r3, $8
 
63
        beq     L60
 
64
        cmp     r3, $9
 
65
        beq     L60
 
66
        cmp     r3, $10
 
67
        beq     L60
 
68
        ldr     r2, [r4, $12]
 
69
        sub     r3, r2, $11
 
70
        cmp     r3, $1
 
71
        bls     L63
 
72
        cmp     r2, $13
 
73
        ldreq   r3, [r4, $8]
 
74
        streq   r0, [r3, $0]    // float
 
75
        beq     L8
 
76
L31:
 
77
        cmp     r2, $14
 
78
        ldreq   r3, [r4, $8]
 
79
        stmeqia r3, {r0, r1}    // double
 
80
        beq     L8
 
81
L33:
 
82
        cmp     r2, $15
 
83
        beq     L60
 
84
        cmp     r2, $16
 
85
        bne     L8
 
86
        ldr     r3, [r4, $4]
 
87
        tst     r3, $1
 
88
        beq     L38
 
89
        ldr     r3, [r4, $16]
 
90
        cmp     r3, $1
 
91
        ldreq   r2, [r4, $8]
 
92
        ldreqb  r3, [ip, $0]
 
93
        streqb  r3, [r2, $0]
 
94
        beq     L8
 
95
L39:
 
96
        cmp     r3, $2
 
97
        bne     L41
 
98
        ldr     r2, [r4, $8]
 
99
        ldr     r3, [ip, $0]    // movhi
 
100
        strb    r3, [r2, $0]
 
101
        mov     r3, r3, asr $8
 
102
        strb    r3, [r2, $1]
 
103
        b       L8
 
104
L41:
 
105
        cmp     r3, $4
 
106
        ldreq   r2, [r4, $8]
 
107
        ldreq   r3, [ip, $0]
 
108
        streq   r3, [r2, $0]
 
109
        beq     L8
 
110
L43:
 
111
        cmp     r3, $8
 
112
        bne     L45
 
113
        ldr     r2, [r4, $8]
 
114
        ldr     r3, [ip, $0]
 
115
        str     r3, [r2, $0]
 
116
        ldr     r2, [r4, $8]
 
117
        ldr     r3, [ip, $4]
 
118
        str     r3, [r2, $4]
 
119
        b       L8
 
120
L45:
 
121
        add     r3, r3, $3
 
122
        mov     r1, r3, lsr $2
 
123
        sub     r1, r1, $1
 
124
        cmp     r1, $0
 
125
        blt     L8
 
126
L49:
 
127
        ldr     r2, [r4, $8]
 
128
        ldr     r3, [ip, r1, asl $2]
 
129
        str     r3, [r2, r1, asl $2]
 
130
        sub     r1, r1, $1
 
131
        cmp     r1, $0
 
132
        bge     L49
 
133
        b       L8
 
134
L38:
 
135
        tst     r3, $512
 
136
        beq     L8
 
137
        ldr     r3, [r4, $16]
 
138
        cmp     r3, $1
 
139
        bne     L53
 
140
L61:
 
141
        ldr     r3, [r4, $8]
 
142
        strb    ip, [r3, $0]
 
143
        b       L8
 
144
L53:
 
145
        cmp     r3, $2
 
146
        bne     L55
 
147
L62:
 
148
        ldr     r2, [r4, $8]
 
149
        strb    ip, [r2, $0]
 
150
        mov     r3, ip, asr $8
 
151
        strb    r3, [r2, $1]
 
152
        b       L8
 
153
L55:
 
154
        cmp     r3, $4
 
155
        bne     L57
 
156
L60:
 
157
        ldr     r3, [r4, $8]
 
158
        str     ip, [r3, $0]
 
159
        b       L8
 
160
L57:
 
161
        cmp     r3, $8
 
162
        bne     L8
 
163
L63:
 
164
        ldr     r3, [r4, $8]
 
165
        str     ip, [r3, $0]
 
166
        ldr     r3, [r4, $8]
 
167
        str     r1, [r3, $4]
 
168
L8:
 
169
        mov     r0, $0
 
170
        add     sp, sp, $1024
 
171
        ldmfd   sp!, {r4, pc}^