ppc-asm.h revision 302408
121173Sjkh/* PowerPC asm definitions for GNU C. */ 250479Speter/* Under winnt, 1) gas supports the following as names and 2) in particular 350479Speter defining "toc" breaks the FUNC_START macro as ".toc" becomes ".2" */ 421173Sjkh 521173Sjkh#define r0 0 621173Sjkh#define sp 1 721173Sjkh#define toc 2 821173Sjkh#define r3 3 921173Sjkh#define r4 4 1021173Sjkh#define r5 5 1121173Sjkh#define r6 6 1221173Sjkh#define r7 7 1321173Sjkh#define r8 8 14159363Strhodes#define r9 9 15159363Strhodes#define r10 10 16159363Strhodes#define r11 11 17159363Strhodes#define r12 12 18159363Strhodes#define r13 13 19159363Strhodes#define r14 14 20159363Strhodes#define r15 15 2164057Salex#define r16 16 2264057Salex#define r17 17 2364057Salex#define r18 18 2421173Sjkh#define r19 19 2564057Salex#define r20 20 2664057Salex#define r21 21 27100446Swosch#define r22 22 2821369Smax#define r23 23 2964057Salex#define r24 24 3093217Sru#define r25 25 3164057Salex#define r26 26 3221173Sjkh#define r27 27 3393217Sru#define r28 28 3421173Sjkh#define r29 29 3521173Sjkh#define r30 30 3664047Salex#define r31 31 3764047Salex 3864047Salex#define cr0 0 3964047Salex#define cr1 1 4021173Sjkh#define cr2 2 4121173Sjkh#define cr3 3 4221173Sjkh#define cr4 4 4321173Sjkh#define cr5 5 4493217Sru#define cr6 6 4521173Sjkh#define cr7 7 46215293Sjoel 47215293Sjoel#define f0 0 48215293Sjoel#define f1 1 4921173Sjkh#define f2 2 5021173Sjkh#define f3 3 5164047Salex#define f4 4 5221173Sjkh#define f5 5 5393217Sru#define f6 6 5421173Sjkh#define f7 7 5521173Sjkh#define f8 8 5621173Sjkh#define f9 9 5721173Sjkh#define f10 10 5821173Sjkh#define f11 11 5921173Sjkh#define f12 12 6021173Sjkh#define f13 13 6121173Sjkh#define f14 14 6293217Sru#define f15 15 6337283Sjkh#define f16 16 6421173Sjkh#define f17 17 6521173Sjkh#define f18 18 6621173Sjkh#define f19 19 6721173Sjkh#define f20 20 6821173Sjkh#define f21 21 6921173Sjkh#define f22 22 70156171Sceri#define f23 23 71156171Sceri#define f24 24 7221173Sjkh#define f25 25 7321173Sjkh#define f26 26 7465298Smarkm#define f27 27 7521173Sjkh#define f28 28 7621173Sjkh#define f29 29 7721173Sjkh#define f30 30 7821173Sjkh#define f31 31 7921173Sjkh 8021173Sjkh/* 8121173Sjkh * Macros to glue together two tokens. 8221173Sjkh */ 8321173Sjkh 8421173Sjkh#ifdef __STDC__ 8521173Sjkh#define XGLUE(a,b) a##b 8621173Sjkh#else 8721173Sjkh#define XGLUE(a,b) a/**/b 8821173Sjkh#endif 8921173Sjkh 90100446Swosch#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#if defined (__powerpc64__) 99#define FUNC_NAME(name) GLUE(.,name) 100#define JUMP_TARGET(name) FUNC_NAME(name) 101#define FUNC_START(name) \ 102 .section ".opd","aw"; \ 103name: \ 104 .quad GLUE(.,name); \ 105 .quad .TOC.@tocbase; \ 106 .quad 0; \ 107 .previous; \ 108 .type GLUE(.,name),@function; \ 109 .globl name; \ 110 .globl GLUE(.,name); \ 111GLUE(.,name): 112 113#define FUNC_END(name) \ 114GLUE(.L,name): \ 115 .size GLUE(.,name),GLUE(.L,name)-GLUE(.,name) 116 117#elif defined(_CALL_AIXDESC) 118 119#ifdef _RELOCATABLE 120#define DESC_SECTION ".got2" 121#else 122#define DESC_SECTION ".got1" 123#endif 124 125#define FUNC_NAME(name) GLUE(.,name) 126#define JUMP_TARGET(name) FUNC_NAME(name) 127#define FUNC_START(name) \ 128 .section DESC_SECTION,"aw"; \ 129name: \ 130 .long GLUE(.,name); \ 131 .long _GLOBAL_OFFSET_TABLE_; \ 132 .long 0; \ 133 .previous; \ 134 .type GLUE(.,name),@function; \ 135 .globl name; \ 136 .globl GLUE(.,name); \ 137GLUE(.,name): 138 139#define FUNC_END(name) \ 140GLUE(.L,name): \ 141 .size GLUE(.,name),GLUE(.L,name)-GLUE(.,name) 142 143#else 144 145#define FUNC_NAME(name) GLUE(__USER_LABEL_PREFIX__,name) 146#if defined __PIC__ || defined __pic__ 147#define JUMP_TARGET(name) FUNC_NAME(name@plt) 148#else 149#define JUMP_TARGET(name) FUNC_NAME(name) 150#endif 151#define FUNC_START(name) \ 152 .type FUNC_NAME(name),@function; \ 153 .globl FUNC_NAME(name); \ 154FUNC_NAME(name): 155 156#define FUNC_END(name) \ 157GLUE(.L,name): \ 158 .size FUNC_NAME(name),GLUE(.L,name)-FUNC_NAME(name) 159#endif 160 161#if defined __linux__ && !defined __powerpc64__ 162 .section .note.GNU-stack 163 .previous 164#endif 165