]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/config/rs6000/ppc-asm.h
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / config / rs6000 / ppc-asm.h
index 27f3635076036120a7bf7fc5cd48699206720bcb..7f39a2a43043112aa203234319a97faf768311a3 100644 (file)
@@ -2,7 +2,6 @@
 /* Under winnt, 1) gas supports the following as names and 2) in particular
    defining "toc" breaks the FUNC_START macro as ".toc" becomes ".2" */
 
-#if !defined(__WINNT__)
 #define r0     0
 #define sp     1
 #define toc    2
@@ -77,7 +76,6 @@
 #define f29    29
 #define f30    30
 #define f31    31
-#endif
 
 /*
  * Macros to glue together two tokens.
  * the real function with one or two leading periods respectively.
  */
 
-#ifdef _RELOCATABLE
-#define DESC_SECTION ".got2"
-#else
-#define DESC_SECTION ".got1"
-#endif
-
-#if defined(_CALL_AIXDESC)
+#if defined (__powerpc64__)
 #define FUNC_NAME(name) GLUE(.,name)
 #define JUMP_TARGET(name) FUNC_NAME(name)
 #define FUNC_START(name) \
-       .section DESC_SECTION,"aw"; \
+       .section ".opd","aw"; \
 name: \
-       .long GLUE(.,name); \
-       .long _GLOBAL_OFFSET_TABLE_; \
-       .long 0; \
+       .quad GLUE(.,name); \
+       .quad .TOC.@tocbase; \
+       .quad 0; \
        .previous; \
        .type GLUE(.,name),@function; \
        .globl name; \
        .globl GLUE(.,name); \
 GLUE(.,name):
 
+#define HIDDEN_FUNC(name) \
+  FUNC_START(name) \
+  .hidden name;        \
+  .hidden GLUE(.,name);
+
 #define FUNC_END(name) \
 GLUE(.L,name): \
        .size GLUE(.,name),GLUE(.L,name)-GLUE(.,name)
 
-#elif defined(__WINNT__)
-#define FUNC_NAME(name) GLUE(..,name)
-#define JUMP_TARGET(name) FUNC_NAME(name)
-#define FUNC_START(name) \
-       .pdata; \
-       .align 2; \
-       .ualong GLUE(..,name),GLUE(name,.e),0,0,GLUE(..,name); \
-       .reldata; \
-name: \
-       .ualong GLUE(..,name),.toc; \
-       .section .text; \
-       .globl name; \
-       .globl GLUE(..,name); \
-GLUE(..,name):
+#elif defined(_CALL_AIXDESC)
 
-#define FUNC_END(name) \
-GLUE(name,.e): ; \
-GLUE(FE_MOT_RESVD..,name):
+#ifdef _RELOCATABLE
+#define DESC_SECTION ".got2"
+#else
+#define DESC_SECTION ".got1"
+#endif
 
-#elif defined(_CALL_NT)
-#define FUNC_NAME(name) GLUE(..,name)
+#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 GLUE(.,name); \
        .long _GLOBAL_OFFSET_TABLE_; \
-       .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 (__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; \
+       .long 0; \
        .previous; \
        .type GLUE(.,name),@function; \
        .globl name; \
        .globl GLUE(.,name); \
 GLUE(.,name):
 
+#define HIDDEN_FUNC(name) \
+  FUNC_START(name) \
+  .hidden name; \
+  .hidden 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)
@@ -190,8 +163,16 @@ GLUE(.L,name): \
        .globl FUNC_NAME(name); \
 FUNC_NAME(name):
 
+#define HIDDEN_FUNC(name) \
+  FUNC_START(name) \
+  .hidden 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