00001
00002
00003
00004
00005 #if !defined(__WINNT__)
00006 #define r0 0
00007 #define sp 1
00008 #define toc 2
00009 #define r3 3
00010 #define r4 4
00011 #define r5 5
00012 #define r6 6
00013 #define r7 7
00014 #define r8 8
00015 #define r9 9
00016 #define r10 10
00017 #define r11 11
00018 #define r12 12
00019 #define r13 13
00020 #define r14 14
00021 #define r15 15
00022 #define r16 16
00023 #define r17 17
00024 #define r18 18
00025 #define r19 19
00026 #define r20 20
00027 #define r21 21
00028 #define r22 22
00029 #define r23 23
00030 #define r24 24
00031 #define r25 25
00032 #define r26 26
00033 #define r27 27
00034 #define r28 28
00035 #define r29 29
00036 #define r30 30
00037 #define r31 31
00038
00039 #define cr0 0
00040 #define cr1 1
00041 #define cr2 2
00042 #define cr3 3
00043 #define cr4 4
00044 #define cr5 5
00045 #define cr6 6
00046 #define cr7 7
00047
00048 #define f0 0
00049 #define f1 1
00050 #define f2 2
00051 #define f3 3
00052 #define f4 4
00053 #define f5 5
00054 #define f6 6
00055 #define f7 7
00056 #define f8 8
00057 #define f9 9
00058 #define f10 10
00059 #define f11 11
00060 #define f12 12
00061 #define f13 13
00062 #define f14 14
00063 #define f15 15
00064 #define f16 16
00065 #define f17 17
00066 #define f18 18
00067 #define f19 19
00068 #define f20 20
00069 #define f21 21
00070 #define f22 22
00071 #define f23 23
00072 #define f24 24
00073 #define f25 25
00074 #define f26 26
00075 #define f27 27
00076 #define f28 28
00077 #define f29 29
00078 #define f30 30
00079 #define f31 31
00080 #endif
00081
00082
00083
00084
00085
00086 #ifdef __STDC__
00087 #define XGLUE(a,b) a##b
00088 #else
00089 #define XGLUE(a,b) ab
00090 #endif
00091
00092 #define GLUE(a,b) XGLUE(a,b)
00093
00094
00095
00096
00097
00098
00099
00100 #ifdef _RELOCATABLE
00101 #define DESC_SECTION ".got2"
00102 #else
00103 #define DESC_SECTION ".got1"
00104 #endif
00105
00106 #if defined(_CALL_AIXDESC)
00107 #define FUNC_NAME(name) GLUE(.,name)
00108 #define JUMP_TARGET(name) FUNC_NAME(name)
00109 #define FUNC_START(name) \
00110 .section DESC_SECTION,"aw"; \
00111 name: \
00112 .long GLUE(.,name); \
00113 .long _GLOBAL_OFFSET_TABLE_; \
00114 .long 0; \
00115 .previous; \
00116 .type GLUE(.,name),@function; \
00117 .globl name; \
00118 .globl GLUE(.,name); \
00119 GLUE(.,name):
00120
00121 #define FUNC_END(name) \
00122 GLUE(.L,name): \
00123 .size GLUE(.,name),GLUE(.L,name)-GLUE(.,name)
00124
00125 #elif defined(__WINNT__)
00126 #define FUNC_NAME(name) GLUE(..,name)
00127 #define JUMP_TARGET(name) FUNC_NAME(name)
00128 #define FUNC_START(name) \
00129 .pdata; \
00130 .align 2; \
00131 .ualong GLUE(..,name),GLUE(name,.e),0,0,GLUE(..,name); \
00132 .reldata; \
00133 name: \
00134 .ualong GLUE(..,name),.toc; \
00135 .section .text; \
00136 .globl name; \
00137 .globl GLUE(..,name); \
00138 GLUE(..,name):
00139
00140 #define FUNC_END(name) \
00141 GLUE(name,.e): ; \
00142 GLUE(FE_MOT_RESVD..,name):
00143
00144 #elif defined(_CALL_NT)
00145 #define FUNC_NAME(name) GLUE(..,name)
00146 #define JUMP_TARGET(name) FUNC_NAME(name)
00147 #define FUNC_START(name) \
00148 .section DESC_SECTION,"aw"; \
00149 name: \
00150 .long GLUE(..,name); \
00151 .long _GLOBAL_OFFSET_TABLE_; \
00152 .previous; \
00153 .type GLUE(..,name),@function; \
00154 .globl name; \
00155 .globl GLUE(..,name); \
00156 GLUE(..,name):
00157
00158 #define FUNC_END(name) \
00159 GLUE(.L,name): \
00160 .size GLUE(..,name),GLUE(.L,name)-GLUE(..,name)
00161
00162 #elif defined (__powerpc64__)
00163 #define FUNC_NAME(name) GLUE(.,name)
00164 #define JUMP_TARGET(name) FUNC_NAME(name)
00165 #define FUNC_START(name) \
00166 .section ".opd","aw"; \
00167 name: \
00168 .quad GLUE(.,name); \
00169 .quad .TOC.@tocbase; \
00170 .quad 0; \
00171 .previous; \
00172 .type GLUE(.,name),@function; \
00173 .globl name; \
00174 .globl GLUE(.,name); \
00175 GLUE(.,name):
00176
00177 #define FUNC_END(name) \
00178 GLUE(.L,name): \
00179 .size GLUE(.,name),GLUE(.L,name)-GLUE(.,name)
00180
00181 #else
00182 #define FUNC_NAME(name) GLUE(__USER_LABEL_PREFIX__,name)
00183 #if defined __PIC__ || defined __pic__
00184 #define JUMP_TARGET(name) FUNC_NAME(name@plt)
00185 #else
00186 #define JUMP_TARGET(name) FUNC_NAME(name)
00187 #endif
00188 #define FUNC_START(name) \
00189 .type FUNC_NAME(name),@function; \
00190 .globl FUNC_NAME(name); \
00191 FUNC_NAME(name):
00192
00193 #define FUNC_END(name) \
00194 GLUE(.L,name): \
00195 .size FUNC_NAME(name),GLUE(.L,name)-FUNC_NAME(name)
00196 #endif
00197