File: vacall-armhf-linux.s

package info (click to toggle)
ffcall 2.1-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 5,808 kB
  • sloc: asm: 43,409; ansic: 23,224; sh: 5,383; makefile: 1,517; cpp: 2
file content (144 lines) | stat: -rw-r--r-- 2,691 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
	.arch armv7-a
	.eabi_attribute 28, 1
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 1
	.eabi_attribute 30, 2
	.eabi_attribute 34, 1
	.eabi_attribute 18, 4
	.file	"vacall-armhf.c"
	.text
	.align	2
	.global	vacall_receiver
	.syntax unified
	.arm
	.fpu vfpv3-d16
	.type	vacall_receiver, %function
vacall_receiver:
	@ args = 20, pretend = 16, frame = 176
	@ frame_needed = 1, uses_anonymous_args = 0
	sub	sp, sp, #16
	mov	ip, #0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	add	lr, fp, #4
	movw	r4, #:lower16:vacall_function
	movt	r4, #:upper16:vacall_function
	sub	sp, sp, #176
	add	r5, fp, #20
	stm	lr, {r0, r1, r2, r3}
	sub	r0, fp, #188
	vstr.32	s0, [fp, #-144]
	str	lr, [fp, #-156]
	str	ip, [fp, #-188]
	vstr.32	s1, [fp, #-140]
	str	ip, [fp, #-152]
	str	r5, [fp, #-172]
	vstr.32	s2, [fp, #-136]
	vstr.32	s3, [fp, #-132]
	vstr.32	s4, [fp, #-128]
	vstr.32	s5, [fp, #-124]
	vstr.32	s6, [fp, #-120]
	vstr.32	s7, [fp, #-116]
	vstr.32	s8, [fp, #-112]
	vstr.32	s9, [fp, #-108]
	vstr.32	s10, [fp, #-104]
	vstr.32	s11, [fp, #-100]
	vstr.32	s12, [fp, #-96]
	vstr.32	s13, [fp, #-92]
	vstr.32	s14, [fp, #-88]
	vstr.32	s15, [fp, #-84]
	vstr.64	d0, [fp, #-76]
	vstr.64	d1, [fp, #-68]
	vstr.64	d2, [fp, #-60]
	vstr.64	d3, [fp, #-52]
	vstr.64	d4, [fp, #-44]
	vstr.64	d5, [fp, #-36]
	vstr.64	d6, [fp, #-28]
	ldr	r3, [r4]
	str	ip, [fp, #-148]
	vstr.64	d7, [fp, #-20]
	str	ip, [fp, #-168]
	strb	ip, [fp, #-164]
	blx	r3
	ldrb	r3, [fp, #-164]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L1
	cmp	r3, #1
	beq	.L25
	cmp	r3, #2
	ldrsbeq	r0, [fp, #-180]
	beq	.L1
	cmp	r3, #3
	beq	.L25
	cmp	r3, #4
	ldrsheq	r0, [fp, #-180]
	beq	.L1
	cmp	r3, #5
	ldrheq	r0, [fp, #-180]
	beq	.L1
	cmp	r3, #6
	beq	.L27
	cmp	r3, #7
	beq	.L27
	cmp	r3, #8
	beq	.L27
	cmp	r3, #9
	beq	.L27
	sub	r2, r3, #10
	cmp	r2, #1
	bls	.L29
	cmp	r3, #12
	vldreq.32	s0, [fp, #-180]
	beq	.L1
	cmp	r3, #13
	vldreq.64	d0, [fp, #-180]
	beq	.L1
	cmp	r3, #14
	beq	.L27
	cmp	r3, #15
	bne	.L1
	ldr	r3, [fp, #-188]
	tst	r3, #1024
	beq	.L1
	ldr	r3, [fp, #-160]
	cmp	r3, #1
	beq	.L30
	cmp	r3, #2
	ldr	r3, [fp, #-168]
	ldrheq	r0, [r3]
	ldrne	r0, [r3]
.L1:
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, lr}
	add	sp, sp, #16
	bx	lr
.L25:
	ldrb	r0, [fp, #-180]	@ zero_extendqisi2
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, lr}
	add	sp, sp, #16
	bx	lr
.L27:
	ldr	r0, [fp, #-180]
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, lr}
	add	sp, sp, #16
	bx	lr
.L29:
	ldr	r0, [fp, #-180]
	ldr	r1, [fp, #-176]
	b	.L1
.L30:
	ldr	r3, [fp, #-168]
	ldrb	r0, [r3]	@ zero_extendqisi2
	b	.L1
	.size	vacall_receiver, .-vacall_receiver
	.ident	"GCC: (GNU) 6.3.0"
	.section	.note.GNU-stack,"",%progbits