File: ppc-asm.h

package info (click to toggle)
gccxml 0.9.0%2Bcvs20120420-4
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 81,352 kB
  • sloc: ansic: 780,439; cpp: 35,850; asm: 26,833; sh: 5,078; makefile: 4,702; lex: 589; awk: 566; perl: 334; yacc: 271; pascal: 86; python: 29
file content (164 lines) | stat: -rw-r--r-- 3,726 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
/* PowerPC asm definitions for GNU C.  */
/* Under winnt, 1) gas supports the following as names and 2) in particular
   defining "toc" breaks the FUNC_START macro as ".toc" becomes ".2" */

#define r0        0
#define sp        1
#define toc        2
#define r3        3
#define r4        4
#define r5        5
#define r6        6
#define r7        7
#define r8        8
#define r9        9
#define r10        10
#define r11        11
#define r12        12
#define r13        13
#define r14        14
#define r15        15
#define r16        16
#define r17        17
#define r18        18
#define r19     19
#define r20        20
#define r21        21
#define r22        22
#define r23        23
#define r24        24
#define r25        25
#define r26        26
#define r27        27
#define r28        28
#define r29        29
#define r30        30
#define r31        31

#define cr0        0
#define cr1        1
#define cr2        2
#define cr3        3
#define cr4        4
#define cr5        5
#define cr6        6
#define cr7        7

#define f0        0
#define f1        1
#define f2        2
#define f3        3
#define f4        4
#define f5        5
#define f6        6
#define f7        7
#define f8        8
#define f9        9
#define f10        10
#define f11        11
#define f12        12
#define f13        13
#define f14        14
#define f15        15
#define f16        16
#define f17        17
#define f18        18
#define f19     19
#define f20        20
#define f21        21
#define f22        22
#define f23        23
#define f24        24
#define f25        25
#define f26        26
#define f27        27
#define f28        28
#define f29        29
#define f30        30
#define f31        31

/*
 * Macros to glue together two tokens.
 */

#ifdef __STDC__
#define XGLUE(a,b) a##b
#else
#define XGLUE(a,b) a/**/b
#endif

#define GLUE(a,b) XGLUE(a,b)

/*
 * Macros to begin and end a function written in assembler.  If -mcall-aixdesc
 * or -mcall-nt, create a function descriptor with the given name, and create
 * the real function with one or two leading periods respectively.
 */

#if defined (__powerpc64__)
#define FUNC_NAME(name) GLUE(.,name)
#define JUMP_TARGET(name) FUNC_NAME(name)
#define FUNC_START(name) \
        .section ".opd","aw"; \
name: \
        .quad GLUE(.,name); \
        .quad .TOC.@tocbase; \
        .quad 0; \
        .previous; \
        .type GLUE(.,name),@function; \
        .globl name; \
        .globl GLUE(.,name); \
GLUE(.,name):

#define FUNC_END(name) \
GLUE(.L,name): \
        .size GLUE(.,name),GLUE(.L,name)-GLUE(.,name)

#elif defined(_CALL_AIXDESC)

#ifdef _RELOCATABLE
#define DESC_SECTION ".got2"
#else
#define DESC_SECTION ".got1"
#endif

#define FUNC_NAME(name) GLUE(.,name)
#define JUMP_TARGET(name) FUNC_NAME(name)
#define FUNC_START(name) \
        .section DESC_SECTION,"aw"; \
name: \
        .long GLUE(.,name); \
        .long _GLOBAL_OFFSET_TABLE_; \
        .long 0; \
        .previous; \
        .type GLUE(.,name),@function; \
        .globl name; \
        .globl GLUE(.,name); \
GLUE(.,name):

#define FUNC_END(name) \
GLUE(.L,name): \
        .size GLUE(.,name),GLUE(.L,name)-GLUE(.,name)

#else

#define FUNC_NAME(name) GLUE(__USER_LABEL_PREFIX__,name)
#if defined __PIC__ || defined __pic__
#define JUMP_TARGET(name) FUNC_NAME(name@plt)
#else
#define JUMP_TARGET(name) FUNC_NAME(name)
#endif
#define FUNC_START(name) \
        .type FUNC_NAME(name),@function; \
        .globl FUNC_NAME(name); \
FUNC_NAME(name):

#define FUNC_END(name) \
GLUE(.L,name): \
        .size FUNC_NAME(name),GLUE(.L,name)-FUNC_NAME(name)
#endif

#if defined __linux__ && !defined __powerpc64__
        .section .note.GNU-stack
        .previous
#endif