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