xray_trampoline_powerpc64_asm.S revision 317021
1	.text
2	.abiversion 2
3	.globl	__xray_FunctionEntry
4	.p2align	4
5__xray_FunctionEntry:
6	std 0, 16(1)
7	stdu 1, -408(1)
8# Spill r3-r10, f1-f13, and vsr34-vsr45, which are parameter registers.
9# If this appears to be slow, the caller needs to pass in number of generic,
10# floating point, and vector parameters, so that we only spill those live ones.
11	std 3, 32(1)
12	ld 3, 400(1) # FuncId
13	std 4, 40(1)
14	std 5, 48(1)
15	std 6, 56(1)
16	std 7, 64(1)
17	std 8, 72(1)
18	std 9, 80(1)
19	std 10, 88(1)
20	addi 4, 1, 96
21	stxsdx 1, 0, 4
22	addi 4, 1, 104
23	stxsdx 2, 0, 4
24	addi 4, 1, 112
25	stxsdx 3, 0, 4
26	addi 4, 1, 120
27	stxsdx 4, 0, 4
28	addi 4, 1, 128
29	stxsdx 5, 0, 4
30	addi 4, 1, 136
31	stxsdx 6, 0, 4
32	addi 4, 1, 144
33	stxsdx 7, 0, 4
34	addi 4, 1, 152
35	stxsdx 8, 0, 4
36	addi 4, 1, 160
37	stxsdx 9, 0, 4
38	addi 4, 1, 168
39	stxsdx 10, 0, 4
40	addi 4, 1, 176
41	stxsdx 11, 0, 4
42	addi 4, 1, 184
43	stxsdx 12, 0, 4
44	addi 4, 1, 192
45	stxsdx 13, 0, 4
46	addi 4, 1, 200
47	stxvd2x 34, 0, 4
48	addi 4, 1, 216
49	stxvd2x 35, 0, 4
50	addi 4, 1, 232
51	stxvd2x 36, 0, 4
52	addi 4, 1, 248
53	stxvd2x 37, 0, 4
54	addi 4, 1, 264
55	stxvd2x 38, 0, 4
56	addi 4, 1, 280
57	stxvd2x 39, 0, 4
58	addi 4, 1, 296
59	stxvd2x 40, 0, 4
60	addi 4, 1, 312
61	stxvd2x 41, 0, 4
62	addi 4, 1, 328
63	stxvd2x 42, 0, 4
64	addi 4, 1, 344
65	stxvd2x 43, 0, 4
66	addi 4, 1, 360
67	stxvd2x 44, 0, 4
68	addi 4, 1, 376
69	stxvd2x 45, 0, 4
70	std 2, 392(1)
71	mflr 0
72	std 0, 400(1)
73
74	li 4, 0
75	bl _ZN6__xray23CallXRayPatchedFunctionEi13XRayEntryType
76	nop
77
78	addi 4, 1, 96
79	lxsdx 1, 0, 4
80	addi 4, 1, 104
81	lxsdx 2, 0, 4
82	addi 4, 1, 112
83	lxsdx 3, 0, 4
84	addi 4, 1, 120
85	lxsdx 4, 0, 4
86	addi 4, 1, 128
87	lxsdx 5, 0, 4
88	addi 4, 1, 136
89	lxsdx 6, 0, 4
90	addi 4, 1, 144
91	lxsdx 7, 0, 4
92	addi 4, 1, 152
93	lxsdx 8, 0, 4
94	addi 4, 1, 160
95	lxsdx 9, 0, 4
96	addi 4, 1, 168
97	lxsdx 10, 0, 4
98	addi 4, 1, 176
99	lxsdx 11, 0, 4
100	addi 4, 1, 184
101	lxsdx 12, 0, 4
102	addi 4, 1, 192
103	lxsdx 13, 0, 4
104	addi 4, 1, 200
105	lxvd2x 34, 0, 4
106	addi 4, 1, 216
107	lxvd2x 35, 0, 4
108	addi 4, 1, 232
109	lxvd2x 36, 0, 4
110	addi 4, 1, 248
111	lxvd2x 37, 0, 4
112	addi 4, 1, 264
113	lxvd2x 38, 0, 4
114	addi 4, 1, 280
115	lxvd2x 39, 0, 4
116	addi 4, 1, 296
117	lxvd2x 40, 0, 4
118	addi 4, 1, 312
119	lxvd2x 41, 0, 4
120	addi 4, 1, 328
121	lxvd2x 42, 0, 4
122	addi 4, 1, 344
123	lxvd2x 43, 0, 4
124	addi 4, 1, 360
125	lxvd2x 44, 0, 4
126	addi 4, 1, 376
127	lxvd2x 45, 0, 4
128	ld 0, 400(1)
129	mtlr 0
130	ld 2, 392(1)
131	ld 3, 32(1)
132	ld 4, 40(1)
133	ld 5, 48(1)
134	ld 6, 56(1)
135	ld 7, 64(1)
136	ld 8, 72(1)
137	ld 9, 80(1)
138	ld 10, 88(1)
139
140	addi 1, 1, 408
141	ld 0, 16(1)
142	blr
143
144	.globl	__xray_FunctionExit
145	.p2align	4
146__xray_FunctionExit:
147	std 0, 16(1)
148	ld 0, -8(1) # FuncId
149	stdu 1, -72(1)
150# Spill r3, f1, and vsr34, the return value registers.
151	std 3, 32(1)
152	mr 3, 0
153	addi 4, 1, 40
154	stxsdx 1, 0, 4
155	addi 4, 1, 48
156	stxvd2x 34, 0, 4
157	mflr 0
158	std 0, 64(1)
159	li 4, 1
160	bl _ZN6__xray23CallXRayPatchedFunctionEi13XRayEntryType
161	nop
162	ld 0, 64(1)
163	mtlr 0
164	ld 3, 32(1)
165	addi 4, 1, 40
166	lxsdx 1, 0, 4
167	addi 4, 1, 48
168	lxvd2x 34, 0, 4
169	addi 1, 1, 72
170	ld 0, 16(1)
171	blr
172