Chameleon

Chameleon Svn Source Tree

Root/branches/ErmaC/Trunk/i386/include/mach/ppc/sdt_isa.h

1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22/*
23 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
25 */
26
27#ifndef _MACH_PPC_SDT_ISA_H
28#define_MACH_PPC_SDT_ISA_H
29
30/* #pragma ident"@(#)sdt.h1.705/06/08 SMI" */
31
32/*
33 * Only define when testing. This makes the calls into actual calls to
34 * test functions.
35 */
36/* #define DTRACE_CALL_TEST */
37
38#define DTRACE_STRINGIFY(s) #s
39#define DTRACE_TOSTRING(s) DTRACE_STRINGIFY(s)
40
41#define DTRACE_LABEL(p, n)\
42"__dtrace_probe$" DTRACE_TOSTRING(__LINE__) DTRACE_STRINGIFY(_##p##___##n) ":""\n\t"
43
44#ifdef DTRACE_CALL_TEST
45
46#define DTRACE_CALL(p,n)\
47DTRACE_LABEL(p,n)\
48DTRACE_CALL_INSN(p,n)
49
50#else/* !DTRACE_CALL_TEST */
51
52#define DTRACE_CALL(p,n)\
53DTRACE_LABEL(p,n)\
54DTRACE_NOPS
55
56#endif/* !DTRACE_CALL_TEST */
57
58#ifdef __ppc__
59
60#define DTRACE_NOPS\
61"nop""\n\t"
62
63#define DTRACE_CALL_INSN(p,n)\
64"bl _dtracetest" DTRACE_STRINGIFY(_##p##_##n)"\n\t"
65
66#define ARG1_EXTENT1
67#define ARGS2_EXTENT2
68#define ARGS3_EXTENT3
69#define ARGS4_EXTENT4
70#define ARGS5_EXTENT5
71#define ARGS6_EXTENT6
72#define ARGS7_EXTENT7
73#define ARGS8_EXTENT8
74#define ARGS9_EXTENT9
75#define ARGS10_EXTENT10
76
77#define DTRACE_CALL0ARGS(provider, name)\
78asm volatile (\
79 DTRACE_CALL(provider, name)\
80 "# eat trailing nl+tab from DTRACE_CALL"\
81 :\
82 :\
83);
84
85#define DTRACE_CALL1ARG(provider, name)\
86asm volatile ("subi r1,r1,0x20""\n\t"\
87 "lwz r3,0x0(%0)""\n\t"\
88 DTRACE_CALL(provider, name)\
89 "addi r1,r1,0x20"\
90 :\
91 : "b" (__dtrace_args)\
92 : "memory", "r3"\
93);
94
95#define DTRACE_CALL2ARGS(provider, name)\
96asm volatile ("subi r1,r1,0x20""\n\t"\
97 "lwz r3,0x0(%0)""\n\t"\
98 "lwz r4,0x4(%0)""\n\t"\
99 DTRACE_CALL(provider, name)\
100 "addi r1,r1,0x20"\
101 :\
102 : "b" (__dtrace_args)\
103 : "memory", "r3", "r4"\
104);
105
106#define DTRACE_CALL3ARGS(provider, name)\
107asm volatile ("subi r1,r1,0x30""\n\t"\
108 "lwz r3,0x0(%0)""\n\t"\
109 "lwz r4,0x4(%0)""\n\t"\
110 "lwz r5,0x8(%0)""\n\t"\
111 DTRACE_CALL(provider, name)\
112 "addi r1,r1,0x30"\
113 :\
114 : "b" (__dtrace_args)\
115 : "memory", "r3", "r4", "r5"\
116);
117
118#define DTRACE_CALL4ARGS(provider, name)\
119asm volatile ("subi r1,r1,0x30""\n\t"\
120 "lwz r3,0x0(%0)""\n\t"\
121 "lwz r4,0x4(%0)""\n\t"\
122 "lwz r5,0x8(%0)""\n\t"\
123 "lwz r6,0xc(%0)""\n\t"\
124 DTRACE_CALL(provider, name)\
125 "addi r1,r1,0x30"\
126 :\
127 : "b" (__dtrace_args)\
128 : "memory", "r3", "r4", "r5", "r6"\
129);
130
131#define DTRACE_CALL5ARGS(provider, name)\
132asm volatile ("subi r1,r1,0x30""\n\t"\
133 "lwz r3,0x0(%0)""\n\t"\
134 "lwz r4,0x4(%0)""\n\t"\
135 "lwz r5,0x8(%0)""\n\t"\
136 "lwz r6,0xc(%0)""\n\t"\
137 "lwz r7,0x10(%0)""\n\t"\
138 DTRACE_CALL(provider, name)\
139 "addi r1,r1,0x30"\
140 :\
141 : "b" (__dtrace_args)\
142 : "memory", "r3", "r4", "r5", "r6", "r7"\
143);
144
145#define DTRACE_CALL6ARGS(provider, name)\
146asm volatile ("subi r1,r1,0x30""\n\t"\
147 "lwz r3,0x0(%0)""\n\t"\
148 "lwz r4,0x4(%0)""\n\t"\
149 "lwz r5,0x8(%0)""\n\t"\
150 "lwz r6,0xc(%0)""\n\t"\
151 "lwz r7,0x10(%0)""\n\t"\
152 "lwz r8,0x14(%0)""\n\t"\
153 DTRACE_CALL(provider, name)\
154 "addi r1,r1,0x30"\
155 :\
156 : "b" (__dtrace_args)\
157 : "memory", "r3", "r4", "r5", "r6", "r7", "r8"\
158);
159
160#define DTRACE_CALL7ARGS(provider, name)\
161asm volatile ("subi r1,r1,0x40""\n\t"\
162 "lwz r3,0x0(%0)""\n\t"\
163 "lwz r4,0x4(%0)""\n\t"\
164 "lwz r5,0x8(%0)""\n\t"\
165 "lwz r6,0xc(%0)""\n\t"\
166 "lwz r7,0x10(%0)""\n\t"\
167 "lwz r8,0x14(%0)""\n\t"\
168 "lwz r9,0x18(%0)""\n\t"\
169 DTRACE_CALL(provider, name)\
170 "addi r1,r1,0x40"\
171 :\
172 : "b" (__dtrace_args)\
173 : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9"\
174);
175
176#define DTRACE_CALL8ARGS(provider, name)\
177asm volatile ("subi r1,r1,0x40""\n\t"\
178 "lwz r3,0x0(%0)""\n\t"\
179 "lwz r4,0x4(%0)""\n\t"\
180 "lwz r5,0x8(%0)""\n\t"\
181 "lwz r6,0xc(%0)""\n\t"\
182 "lwz r7,0x10(%0)""\n\t"\
183 "lwz r8,0x14(%0)""\n\t"\
184 "lwz r9,0x18(%0)""\n\t"\
185 "lwz r10,0x1c(%0)""\n\t"\
186 DTRACE_CALL(provider, name)\
187 "addi r1,r1,0x40"\
188 :\
189 : "b" (__dtrace_args)\
190 : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10"\
191);
192
193#define DTRACE_CALL9ARGS(provider, name)\
194asm volatile ("subi r1,r1,0x40""\n\t"\
195 "lwz r3,0x0(%0)""\n\t"\
196 "lwz r4,0x4(%0)""\n\t"\
197 "lwz r5,0x8(%0)""\n\t"\
198 "lwz r6,0xc(%0)""\n\t"\
199 "lwz r7,0x10(%0)""\n\t"\
200 "lwz r8,0x14(%0)""\n\t"\
201 "lwz r9,0x18(%0)""\n\t"\
202 "lwz r10,0x1c(%0)""\n\t"\
203 "lwz r11,0x20(%0)""\n\t"\
204 "stw r11,0x38(r1)""\n\t"\
205 DTRACE_CALL(provider, name)\
206 "addi r1,r1,0x40"\
207 :\
208 : "b" (__dtrace_args)\
209 : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11"\
210);
211
212#define DTRACE_CALL10ARGS(provider, name)\
213asm volatile ("subi r1,r1,0x40""\n\t"\
214 "lwz r3,0x0(%0)""\n\t"\
215 "lwz r4,0x4(%0)""\n\t"\
216 "lwz r5,0x8(%0)""\n\t"\
217 "lwz r6,0xc(%0)""\n\t"\
218 "lwz r7,0x10(%0)""\n\t"\
219 "lwz r8,0x14(%0)""\n\t"\
220 "lwz r9,0x18(%0)""\n\t"\
221 "lwz r10,0x1c(%0)""\n\t"\
222 "lwz r11,0x20(%0)""\n\t"\
223 "lwz r12,0x24(%0)""\n\t"\
224 "stw r11,0x38(r1)""\n\t"\
225 "stw r12,0x3c(r1)""\n\t"\
226 DTRACE_CALL(provider, name)\
227 "addi r1,r1,0x40"\
228 :\
229 : "b" (__dtrace_args)\
230 : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"\
231);
232
233#endif // __ppc__
234
235#ifdef __ppc64__
236
237#define DTRACE_NOPS\
238"nop""\n\t"
239
240#define DTRACE_CALL_INSN(p,n)\
241"bl _dtracetest" DTRACE_STRINGIFY(_##p##_##n)"\n\t"
242
243#define ARG1_EXTENT1
244#define ARGS2_EXTENT2
245#define ARGS3_EXTENT3
246#define ARGS4_EXTENT4
247#define ARGS5_EXTENT5
248#define ARGS6_EXTENT6
249#define ARGS7_EXTENT7
250#define ARGS8_EXTENT8
251#define ARGS9_EXTENT9
252#define ARGS10_EXTENT10
253
254#define DTRACE_CALL0ARGS(provider, name)\
255asm volatile ("subi r1,r1,0x30""\n\t"\
256 DTRACE_CALL(provider, name)\
257 "addi r1,r1,0x30"\
258 :\
259 :\
260 :\
261);
262
263#define DTRACE_CALL1ARG(provider, name)\
264asm volatile ("ld r3,0x0(%0)""\n\t"\
265 "subi r1,r1,0x38""\n\t"\
266 DTRACE_CALL(provider, name)\
267 "addi r1,r1,0x38"\
268 :\
269 : "b" (__dtrace_args)\
270 : "memory", "r3"\
271);
272
273#define DTRACE_CALL2ARGS(provider, name)\
274asm volatile ("subi r1,r1,0x40""\n\t"\
275 "ld r3,0x0(%0)""\n\t"\
276 "ld r4,0x8(%0)""\n\t"\
277 DTRACE_CALL(provider, name)\
278 "addi r1,r1,0x40"\
279 :\
280 : "b" (__dtrace_args)\
281 : "memory", "r3", "r4"\
282);
283
284#define DTRACE_CALL3ARGS(provider, name)\
285asm volatile ("subi r1,r1,0x48""\n\t"\
286 "ld r3,0x0(%0)""\n\t"\
287 "ld r4,0x8(%0)""\n\t"\
288 "ld r5,0x10(%0)""\n\t"\
289 DTRACE_CALL(provider, name)\
290 "addi r1,r1,0x48"\
291 :\
292 : "b" (__dtrace_args)\
293 : "memory", "r3", "r4", "r5"\
294);
295
296#define DTRACE_CALL4ARGS(provider, name)\
297asm volatile ("subi r1,r1,0x50""\n\t"\
298 "ld r3,0x0(%0)""\n\t"\
299 "ld r4,0x8(%0)""\n\t"\
300 "ld r5,0x10(%0)""\n\t"\
301 "ld r6,0x18(%0)""\n\t"\
302 DTRACE_CALL(provider, name)\
303 "addi r1,r1,0x50"\
304 :\
305 : "b" (__dtrace_args)\
306 : "memory", "r3", "r4", "r5", "r6"\
307);
308
309#define DTRACE_CALL5ARGS(provider, name)\
310asm volatile ("subi r1,r1,0x58""\n\t"\
311 "ld r3,0x0(%0)""\n\t"\
312 "ld r4,0x8(%0)""\n\t"\
313 "ld r5,0x10(%0)""\n\t"\
314 "ld r6,0x18(%0)""\n\t"\
315 "ld r7,0x20(%0)""\n\t"\
316 DTRACE_CALL(provider, name)\
317 "addi r1,r1,0x58"\
318 :\
319 : "b" (__dtrace_args)\
320 : "memory", "r3", "r4", "r5", "r6", "r7"\
321);
322
323#define DTRACE_CALL6ARGS(provider, name)\
324asm volatile ("subi r1,r1,0x60""\n\t"\
325 "ld r3,0x0(%0)""\n\t"\
326 "ld r4,0x8(%0)""\n\t"\
327 "ld r5,0x10(%0)""\n\t"\
328 "ld r6,0x18(%0)""\n\t"\
329 "ld r7,0x20(%0)""\n\t"\
330 "ld r8,0x28(%0)""\n\t"\
331 DTRACE_CALL(provider, name)\
332 "addi r1,r1,0x60"\
333 :\
334 : "b" (__dtrace_args)\
335 : "memory", "r3", "r4", "r5", "r6", "r7", "r8"\
336);
337
338#define DTRACE_CALL7ARGS(provider, name)\
339asm volatile ("subi r1,r1,0x68""\n\t"\
340 "ld r3,0x0(%0)""\n\t"\
341 "ld r4,0x8(%0)""\n\t"\
342 "ld r5,0x10(%0)""\n\t"\
343 "ld r6,0x18(%0)""\n\t"\
344 "ld r7,0x20(%0)""\n\t"\
345 "ld r8,0x28(%0)""\n\t"\
346 "ld r9,0x30(%0)""\n\t"\
347 DTRACE_CALL(provider, name)\
348 "addi r1,r1,0x68"\
349 :\
350 : "b" (__dtrace_args)\
351 : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9"\
352);
353
354#define DTRACE_CALL8ARGS(provider, name)\
355asm volatile ("subi r1,r1,0x70""\n\t"\
356 "ld r3,0x0(%0)""\n\t"\
357 "ld r4,0x8(%0)""\n\t"\
358 "ld r5,0x10(%0)""\n\t"\
359 "ld r6,0x18(%0)""\n\t"\
360 "ld r7,0x20(%0)""\n\t"\
361 "ld r8,0x28(%0)""\n\t"\
362 "ld r9,0x30(%0)""\n\t"\
363 "ld r10,0x38(%0)""\n\t"\
364 DTRACE_CALL(provider, name)\
365 "addi r1,r1,0x70"\
366 :\
367 : "b" (__dtrace_args)\
368 : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10"\
369);
370
371#define DTRACE_CALL9ARGS(provider, name)\
372asm volatile ("subi r1,r1,0x78""\n\t"\
373 "ld r3,0x0(%0)""\n\t"\
374 "ld r4,0x8(%0)""\n\t"\
375 "ld r5,0x10(%0)""\n\t"\
376 "ld r6,0x18(%0)""\n\t"\
377 "ld r7,0x20(%0)""\n\t"\
378 "ld r8,0x28(%0)""\n\t"\
379 "ld r9,0x30(%0)""\n\t"\
380 "ld r10,0x38(%0)""\n\t"\
381 "ld r11,0x40(%0)""\n\t"\
382 "std r11,0x70(r1)""\n\t"\
383 DTRACE_CALL(provider, name)\
384 "addi r1,r1,0x78"\
385 :\
386 : "b" (__dtrace_args)\
387 : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11"\
388);
389
390#define DTRACE_CALL10ARGS(provider, name)\
391asm volatile ("subi r1,r1,0x80""\n\t"\
392 "ld r3,0x0(%0)""\n\t"\
393 "ld r4,0x8(%0)""\n\t"\
394 "ld r5,0x10(%0)""\n\t"\
395 "ld r6,0x18(%0)""\n\t"\
396 "ld r7,0x20(%0)""\n\t"\
397 "ld r8,0x28(%0)""\n\t"\
398 "ld r9,0x30(%0)""\n\t"\
399 "ld r10,0x38(%0)""\n\t"\
400 "ld r11,0x40(%0)""\n\t"\
401 "ld r12,0x48(%0)""\n\t"\
402 "std r11,0x70(r1)""\n\t"\
403 "std r12,0x78(r1)""\n\t"\
404 DTRACE_CALL(provider, name)\
405 "addi r1,r1,0x80"\
406 :\
407 : "b" (__dtrace_args)\
408 : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"\
409);
410
411#endif // __ppc64__
412
413#endif/* _MACH_PPC_SDT_ISA_H */
414

Archive Download this file

Revision: 1622