2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / config / rs6000 / ppc-asm.h
blob74e14836286f43df4f22c1bf03e6f0a0a032d19a
1 /* PowerPC asm definitions for GNU C. */
2 /* Under winnt, 1) gas supports the following as names and 2) in particular
3 defining "toc" breaks the FUNC_START macro as ".toc" becomes ".2" */
5 #define r0 0
6 #define sp 1
7 #define toc 2
8 #define r3 3
9 #define r4 4
10 #define r5 5
11 #define r6 6
12 #define r7 7
13 #define r8 8
14 #define r9 9
15 #define r10 10
16 #define r11 11
17 #define r12 12
18 #define r13 13
19 #define r14 14
20 #define r15 15
21 #define r16 16
22 #define r17 17
23 #define r18 18
24 #define r19 19
25 #define r20 20
26 #define r21 21
27 #define r22 22
28 #define r23 23
29 #define r24 24
30 #define r25 25
31 #define r26 26
32 #define r27 27
33 #define r28 28
34 #define r29 29
35 #define r30 30
36 #define r31 31
38 #define cr0 0
39 #define cr1 1
40 #define cr2 2
41 #define cr3 3
42 #define cr4 4
43 #define cr5 5
44 #define cr6 6
45 #define cr7 7
47 #define f0 0
48 #define f1 1
49 #define f2 2
50 #define f3 3
51 #define f4 4
52 #define f5 5
53 #define f6 6
54 #define f7 7
55 #define f8 8
56 #define f9 9
57 #define f10 10
58 #define f11 11
59 #define f12 12
60 #define f13 13
61 #define f14 14
62 #define f15 15
63 #define f16 16
64 #define f17 17
65 #define f18 18
66 #define f19 19
67 #define f20 20
68 #define f21 21
69 #define f22 22
70 #define f23 23
71 #define f24 24
72 #define f25 25
73 #define f26 26
74 #define f27 27
75 #define f28 28
76 #define f29 29
77 #define f30 30
78 #define f31 31
81 * Macros to glue together two tokens.
84 #ifdef __STDC__
85 #define XGLUE(a,b) a##b
86 #else
87 #define XGLUE(a,b) a/**/b
88 #endif
90 #define GLUE(a,b) XGLUE(a,b)
93 * Macros to begin and end a function written in assembler. If -mcall-aixdesc
94 * or -mcall-nt, create a function descriptor with the given name, and create
95 * the real function with one or two leading periods respectively.
98 #if defined (__powerpc64__)
99 #define FUNC_NAME(name) GLUE(.,name)
100 #define JUMP_TARGET(name) FUNC_NAME(name)
101 #define FUNC_START(name) \
102 .section ".opd","aw"; \
103 name: \
104 .quad GLUE(.,name); \
105 .quad .TOC.@tocbase; \
106 .quad 0; \
107 .previous; \
108 .type GLUE(.,name),@function; \
109 .globl name; \
110 .globl GLUE(.,name); \
111 GLUE(.,name):
113 #define FUNC_END(name) \
114 GLUE(.L,name): \
115 .size GLUE(.,name),GLUE(.L,name)-GLUE(.,name)
117 #elif defined(_CALL_AIXDESC)
119 #ifdef _RELOCATABLE
120 #define DESC_SECTION ".got2"
121 #else
122 #define DESC_SECTION ".got1"
123 #endif
125 #define FUNC_NAME(name) GLUE(.,name)
126 #define JUMP_TARGET(name) FUNC_NAME(name)
127 #define FUNC_START(name) \
128 .section DESC_SECTION,"aw"; \
129 name: \
130 .long GLUE(.,name); \
131 .long _GLOBAL_OFFSET_TABLE_; \
132 .long 0; \
133 .previous; \
134 .type GLUE(.,name),@function; \
135 .globl name; \
136 .globl GLUE(.,name); \
137 GLUE(.,name):
139 #define FUNC_END(name) \
140 GLUE(.L,name): \
141 .size GLUE(.,name),GLUE(.L,name)-GLUE(.,name)
143 #else
145 #define FUNC_NAME(name) GLUE(__USER_LABEL_PREFIX__,name)
146 #if defined __PIC__ || defined __pic__
147 #define JUMP_TARGET(name) FUNC_NAME(name@plt)
148 #else
149 #define JUMP_TARGET(name) FUNC_NAME(name)
150 #endif
151 #define FUNC_START(name) \
152 .type FUNC_NAME(name),@function; \
153 .globl FUNC_NAME(name); \
154 FUNC_NAME(name):
156 #define FUNC_END(name) \
157 GLUE(.L,name): \
158 .size FUNC_NAME(name),GLUE(.L,name)-FUNC_NAME(name)
159 #endif
161 #if defined __linux__ && !defined __powerpc64__
162 .section .note.GNU-stack
163 .previous
164 #endif