ppc-asm.h revision 117395
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" */ 4 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 37 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 46 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 79 80/* 81 * Macros to glue together two tokens. 82 */ 83 84#ifdef __STDC__ 85#define XGLUE(a,b) a##b 86#else 87#define XGLUE(a,b) a/**/b 88#endif 89 90#define GLUE(a,b) XGLUE(a,b) 91 92/* 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. 96 */ 97 98#ifdef _RELOCATABLE 99#define DESC_SECTION ".got2" 100#else 101#define DESC_SECTION ".got1" 102#endif 103 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"; \ 109name: \ 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); \ 117GLUE(.,name): 118 119#define FUNC_END(name) \ 120GLUE(.L,name): \ 121 .size GLUE(.,name),GLUE(.L,name)-GLUE(.,name) 122 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"; \ 128name: \ 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); \ 136GLUE(.,name): 137 138#define FUNC_END(name) \ 139GLUE(.L,name): \ 140 .size GLUE(.,name),GLUE(.L,name)-GLUE(.,name) 141 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); \ 152FUNC_NAME(name): 153 154#define FUNC_END(name) \ 155GLUE(.L,name): \ 156 .size FUNC_NAME(name),GLUE(.L,name)-FUNC_NAME(name) 157#endif 158 159