FSF GCC merge 02/23/03
[official-gcc.git] / gcc / config / rs6000 / ppc-asm.h
blob2822e18a31ad6e0e147d5df9ed9d517dde4490c3
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 #ifdef _RELOCATABLE
99 #define DESC_SECTION ".got2"
100 #else
101 #define DESC_SECTION ".got1"
102 #endif
104 #if defined(_CALL_AIXDESC)
105 #define FUNC_NAME(name) GLUE(.,name)
106 #define JUMP_TARGET(name) FUNC_NAME(name)
107 #define FUNC_START(name) \
108 .section DESC_SECTION,"aw"; \
109 name: \
110 .long GLUE(.,name); \
111 .long _GLOBAL_OFFSET_TABLE_; \
112 .long 0; \
113 .previous; \
114 .type GLUE(.,name),@function; \
115 .globl name; \
116 .globl GLUE(.,name); \
117 GLUE(.,name):
119 #define FUNC_END(name) \
120 GLUE(.L,name): \
121 .size GLUE(.,name),GLUE(.L,name)-GLUE(.,name)
123 #elif defined (__powerpc64__)
124 #define FUNC_NAME(name) GLUE(.,name)
125 #define JUMP_TARGET(name) FUNC_NAME(name)
126 #define FUNC_START(name) \
127 .section ".opd","aw"; \
128 name: \
129 .quad GLUE(.,name); \
130 .quad .TOC.@tocbase; \
131 .quad 0; \
132 .previous; \
133 .type GLUE(.,name),@function; \
134 .globl name; \
135 .globl GLUE(.,name); \
136 GLUE(.,name):
138 #define FUNC_END(name) \
139 GLUE(.L,name): \
140 .size GLUE(.,name),GLUE(.L,name)-GLUE(.,name)
142 #else
143 #define FUNC_NAME(name) GLUE(__USER_LABEL_PREFIX__,name)
144 #if defined __PIC__ || defined __pic__
145 #define JUMP_TARGET(name) FUNC_NAME(name@plt)
146 #else
147 #define JUMP_TARGET(name) FUNC_NAME(name)
148 #endif
149 #define FUNC_START(name) \
150 .type FUNC_NAME(name),@function; \
151 .globl FUNC_NAME(name); \
152 FUNC_NAME(name):
154 #define FUNC_END(name) \
155 GLUE(.L,name): \
156 .size FUNC_NAME(name),GLUE(.L,name)-FUNC_NAME(name)
157 #endif