Add .type and .size directives to riscv libgcc functions.
authorJim Wilson <jimw@sifive.com>
Sat, 9 Dec 2017 03:00:57 +0000 (03:00 +0000)
committerJim Wilson <wilson@gcc.gnu.org>
Sat, 9 Dec 2017 03:00:57 +0000 (19:00 -0800)
libgcc/
* config/riscv/div.S: Use FUNC_* macros.
* config/riscv/muldi3.S, config/riscv/multi3.S: Likewise
* config/riscv/save-restore.S: Likewise.
* config/riscv/riscv-asm.h: New.

From-SVN: r255521

libgcc/ChangeLog
libgcc/config/riscv/div.S
libgcc/config/riscv/muldi3.S
libgcc/config/riscv/multi3.S
libgcc/config/riscv/riscv-asm.h [new file with mode: 0644]
libgcc/config/riscv/save-restore.S

index 3d8b73e1c4a26a216eebce88f2c25159a24a051b..dd27fbb6b2e3a69235ee2cbc15a63eee0131502a 100644 (file)
@@ -1,3 +1,10 @@
+2017-12-08  Jim Wilson  <jimw@sifive.com>
+
+       * config/riscv/div.S: Use FUNC_* macros.
+       * config/riscv/muldi3.S, config/riscv/multi3.S: Likewise
+       * config/riscv/save-restore.S: Likewise.
+       * config/riscv/riscv-asm.h: New.
+
 2017-11-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        * config/rs6000/_mulkc3.c (__mulkc3): Add forward declaration.
index 63d542e846cd011d430d98cb93241ade159919a4..4366c5ce1dca20424d06997a72e6f51f7b0197a8 100644 (file)
@@ -23,6 +23,8 @@ a copy of the GCC Runtime Library Exception along with this program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
+#include "riscv-asm.h"
+
   .text
   .align 2
 
@@ -33,8 +35,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 # define __divdi3 __divsi3
 # define __moddi3 __modsi3
 #else
-  .globl __udivsi3
-__udivsi3:
+FUNC_BEGIN (__udivsi3)
   /* Compute __udivdi3(a0 << 32, a1 << 32); cast result to uint32_t.  */
   sll    a0, a0, 32
   sll    a1, a1, 32
@@ -42,9 +43,9 @@ __udivsi3:
   jal    __udivdi3
   sext.w a0, a0
   jr     t0
+FUNC_END (__udivsi3)
 
-  .globl __umodsi3
-__umodsi3:
+FUNC_BEGIN (__umodsi3)
   /* Compute __udivdi3((uint32_t)a0, (uint32_t)a1); cast a1 to uint32_t.  */
   sll    a0, a0, 32
   sll    a1, a1, 32
@@ -54,25 +55,22 @@ __umodsi3:
   jal    __udivdi3
   sext.w a0, a1
   jr     t0
+FUNC_END (__umodsi3)
 
-  .globl __modsi3
-  __modsi3 = __moddi3
+FUNC_ALIAS (__modsi3, __moddi3)
 
-  .globl __divsi3
-__divsi3:
+FUNC_BEGIN( __divsi3)
   /* Check for special case of INT_MIN/-1. Otherwise, fall into __divdi3.  */
   li    t0, -1
   beq   a1, t0, .L20
 #endif
 
-  .globl __divdi3
-__divdi3:
+FUNC_BEGIN (__divdi3)
   bltz  a0, .L10
   bltz  a1, .L11
   /* Since the quotient is positive, fall into __udivdi3.  */
 
-  .globl __udivdi3
-__udivdi3:
+FUNC_BEGIN (__udivdi3)
   mv    a2, a1
   mv    a1, a0
   li    a0, -1
@@ -96,14 +94,15 @@ __udivdi3:
   bnez  a3, .L3
 .L5:
   ret
+FUNC_END (__udivdi3)
 
-  .globl __umoddi3
-__umoddi3:
+FUNC_BEGIN (__umoddi3)
   /* Call __udivdi3(a0, a1), then return the remainder, which is in a1.  */
   move  t0, ra
   jal   __udivdi3
   move  a0, a1
   jr    t0
+FUNC_END (__umoddi3)
 
   /* Handle negative arguments to __divdi3.  */
 .L10:
@@ -118,9 +117,9 @@ __umoddi3:
   jal   __udivdi3
   neg   a0, a0
   jr    t0
+FUNC_END (__divdi3)
 
-  .globl __moddi3
-__moddi3:
+FUNC_BEGIN (__moddi3)
   move   t0, ra
   bltz   a1, .L31
   bltz   a0, .L32
@@ -136,6 +135,7 @@ __moddi3:
   jal    __udivdi3    /* The dividend is hella negative.  */
   neg    a0, a1
   jr     t0
+FUNC_END (__moddi3)
 
 #if __riscv_xlen == 64
   /* continuation of __divsi3 */
@@ -143,4 +143,5 @@ __moddi3:
   sll   t0, t0, 31
   bne   a0, t0, __divdi3
   ret
+FUNC_END (__divsi3)
 #endif
index eb3d9b0df3dfd970d998d7dbad912b2986f07312..7c07878eea9929cecf1957a2d581d7119d8be725 100644 (file)
@@ -23,6 +23,8 @@ a copy of the GCC Runtime Library Exception along with this program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
+#include "riscv-asm.h"
+
   .text
   .align 2
 
@@ -31,8 +33,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 # define __muldi3 __mulsi3
 #endif
 
-  .globl __muldi3
-__muldi3:
+FUNC_BEGIN (__muldi3)
   mv     a2, a0
   li     a0, 0
 .L1:
@@ -44,3 +45,4 @@ __muldi3:
   slli   a2, a2, 1
   bnez   a1, .L1
   ret
+FUNC_END (__muldi3)
index 4d454e65013d93add649b0a6c3f077be7aaf7dd2..a3b89c65206b0dfb24ad8617729bbad2cd21b66b 100644 (file)
@@ -23,6 +23,8 @@ a copy of the GCC Runtime Library Exception along with this program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
+#include "riscv-asm.h"
+
   .text
   .align 2
 
@@ -31,8 +33,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 # define __multi3 __muldi3
 #endif
 
-  .globl __multi3
-__multi3:
+FUNC_BEGIN (__multi3)
 
 #if __riscv_xlen == 32
 /* Our RV64 64-bit routines are equivalent to our RV32 32-bit routines.  */
@@ -79,3 +80,11 @@ __multi3:
   mv  a0, t2
   mv  a1, t4
   jr  t0
+
+#if __riscv_xlen == 32
+/* Our RV64 64-bit routines are equivalent to our RV32 32-bit routines.  */
+# undef __muldi3
+#endif
+
+FUNC_END (__multi3)
+       
diff --git a/libgcc/config/riscv/riscv-asm.h b/libgcc/config/riscv/riscv-asm.h
new file mode 100644 (file)
index 0000000..fbfe5f0
--- /dev/null
@@ -0,0 +1,35 @@
+/* Copyright (C) 2017 Free Software Foundation, Inc.
+
+This file is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 3, or (at your option) any
+later version.
+
+This file is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+#define FUNC_TYPE(X)   .type X,@function
+#define FUNC_SIZE(X)   .size X,.-X
+
+#define FUNC_BEGIN(X)          \
+       .globl X;               \
+       FUNC_TYPE (X);          \
+X:
+
+#define FUNC_END(X)            \
+       FUNC_SIZE(X)
+
+#define FUNC_ALIAS(X,Y)                \
+       .globl X;               \
+       X = Y
index 2073a73089bba3adf7fd9065407c8feb47b263b5..c2f1740f42f3412df8a8ab836cd0706cfa7c3ce6 100644 (file)
@@ -23,39 +23,13 @@ a copy of the GCC Runtime Library Exception along with this program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
-  .text
+#include "riscv-asm.h"
 
-  .globl __riscv_save_12
-  .globl __riscv_save_11
-  .globl __riscv_save_10
-  .globl __riscv_save_9
-  .globl __riscv_save_8
-  .globl __riscv_save_7
-  .globl __riscv_save_6
-  .globl __riscv_save_5
-  .globl __riscv_save_4
-  .globl __riscv_save_3
-  .globl __riscv_save_2
-  .globl __riscv_save_1
-  .globl __riscv_save_0
-
-  .globl __riscv_restore_12
-  .globl __riscv_restore_11
-  .globl __riscv_restore_10
-  .globl __riscv_restore_9
-  .globl __riscv_restore_8
-  .globl __riscv_restore_7
-  .globl __riscv_restore_6
-  .globl __riscv_restore_5
-  .globl __riscv_restore_4
-  .globl __riscv_restore_3
-  .globl __riscv_restore_2
-  .globl __riscv_restore_1
-  .globl __riscv_restore_0
+  .text
 
 #if __riscv_xlen == 64
 
-__riscv_save_12:
+FUNC_BEGIN (__riscv_save_12)
   .cfi_startproc
   # __riscv_save_* routine use t0/x5 as return address
   .cfi_return_column 5
@@ -66,8 +40,8 @@ __riscv_save_12:
   .cfi_offset 27, -104
   j .Ls10
 
-__riscv_save_11:
-__riscv_save_10:
+FUNC_BEGIN (__riscv_save_11)
+FUNC_BEGIN (__riscv_save_10)
   .cfi_restore 27
   addi sp, sp, -112
   .cfi_def_cfa_offset 112
@@ -79,8 +53,8 @@ __riscv_save_10:
   .cfi_offset 25, -88
   j .Ls8
 
-__riscv_save_9:
-__riscv_save_8:
+FUNC_BEGIN (__riscv_save_9)
+FUNC_BEGIN (__riscv_save_8)
   .cfi_restore 25
   .cfi_restore 26
   .cfi_restore 27
@@ -94,8 +68,8 @@ __riscv_save_8:
   .cfi_offset 23, -72
   j .Ls6
 
-__riscv_save_7:
-__riscv_save_6:
+FUNC_BEGIN (__riscv_save_7)
+FUNC_BEGIN (__riscv_save_6)
   .cfi_restore 23
   .cfi_restore 24
   .cfi_restore 25
@@ -111,8 +85,8 @@ __riscv_save_6:
   .cfi_offset 21, -56
   j .Ls4
 
-__riscv_save_5:
-__riscv_save_4:
+FUNC_BEGIN (__riscv_save_5)
+FUNC_BEGIN (__riscv_save_4)
   .cfi_restore 21
   .cfi_restore 22
   .cfi_restore 24
@@ -133,8 +107,8 @@ __riscv_save_4:
   .cfi_offset 19, -40
   j .Ls2
 
-__riscv_save_3:
-__riscv_save_2:
+FUNC_BEGIN (__riscv_save_3)
+FUNC_BEGIN (__riscv_save_2)
   .cfi_restore 19
   .cfi_restore 20
   .cfi_restore 21
@@ -164,9 +138,20 @@ __riscv_save_2:
   sub sp, sp, t1
   jr t0
   .cfi_endproc
-
-__riscv_save_1:
-__riscv_save_0:
+FUNC_END (__riscv_save_12)
+FUNC_END (__riscv_save_11)
+FUNC_END (__riscv_save_10)
+FUNC_END (__riscv_save_9)
+FUNC_END (__riscv_save_8)
+FUNC_END (__riscv_save_7)
+FUNC_END (__riscv_save_6)
+FUNC_END (__riscv_save_5)
+FUNC_END (__riscv_save_4)
+FUNC_END (__riscv_save_3)
+FUNC_END (__riscv_save_2)
+
+FUNC_BEGIN (__riscv_save_1)
+FUNC_BEGIN (__riscv_save_0)
   .cfi_startproc
   # __riscv_save_* routine use t0/x5 as return address
   .cfi_return_column 5
@@ -178,8 +163,10 @@ __riscv_save_0:
   .cfi_offset 1, -8
   jr t0
   .cfi_endproc
+FUNC_END (__riscv_save_1)
+FUNC_END (__riscv_save_0)
 
-__riscv_restore_12:
+FUNC_BEGIN (__riscv_restore_12)
   .cfi_startproc
   .cfi_def_cfa_offset 112
   .cfi_offset 27, -104
@@ -199,8 +186,8 @@ __riscv_restore_12:
   .cfi_restore 27
   addi sp, sp, 16
 
-__riscv_restore_11:
-__riscv_restore_10:
+FUNC_BEGIN (__riscv_restore_11)
+FUNC_BEGIN (__riscv_restore_10)
   .cfi_restore 27
   .cfi_def_cfa_offset 96
   ld s10, 0(sp)
@@ -209,8 +196,8 @@ __riscv_restore_10:
   .cfi_restore 25
   addi sp, sp, 16
 
-__riscv_restore_9:
-__riscv_restore_8:
+FUNC_BEGIN (__riscv_restore_9)
+FUNC_BEGIN (__riscv_restore_8)
   .cfi_restore 25
   .cfi_restore 26
   .cfi_restore 27
@@ -221,8 +208,8 @@ __riscv_restore_8:
   .cfi_restore 23
   addi sp, sp, 16
 
-__riscv_restore_7:
-__riscv_restore_6:
+FUNC_BEGIN (__riscv_restore_7)
+FUNC_BEGIN (__riscv_restore_6)
   .cfi_restore 23
   .cfi_restore 24
   .cfi_restore 25
@@ -235,8 +222,8 @@ __riscv_restore_6:
   .cfi_restore 21
   addi sp, sp, 16
 
-__riscv_restore_5:
-__riscv_restore_4:
+FUNC_BEGIN (__riscv_restore_5)
+FUNC_BEGIN (__riscv_restore_4)
   .cfi_restore 21
   .cfi_restore 22
   .cfi_restore 23
@@ -251,8 +238,8 @@ __riscv_restore_4:
   .cfi_restore 19
   addi sp, sp, 16
 
-__riscv_restore_3:
-__riscv_restore_2:
+FUNC_BEGIN (__riscv_restore_3)
+FUNC_BEGIN (__riscv_restore_2)
   .cfi_restore 19
   .cfi_restore 20
   .cfi_restore 21
@@ -269,8 +256,8 @@ __riscv_restore_2:
   .cfi_restore 9
   addi sp, sp, 16
 
-__riscv_restore_1:
-__riscv_restore_0:
+FUNC_BEGIN (__riscv_restore_1)
+FUNC_BEGIN (__riscv_restore_0)
   .cfi_restore 9
   .cfi_restore 18
   .cfi_restore 19
@@ -291,10 +278,23 @@ __riscv_restore_0:
   .cfi_def_cfa_offset 0
   ret
   .cfi_endproc
+FUNC_END (__riscv_restore_12)
+FUNC_END (__riscv_restore_11)
+FUNC_END (__riscv_restore_10)
+FUNC_END (__riscv_restore_9)
+FUNC_END (__riscv_restore_8)
+FUNC_END (__riscv_restore_7)
+FUNC_END (__riscv_restore_6)
+FUNC_END (__riscv_restore_5)
+FUNC_END (__riscv_restore_4)
+FUNC_END (__riscv_restore_3)
+FUNC_END (__riscv_restore_2)
+FUNC_END (__riscv_restore_1)
+FUNC_END (__riscv_restore_0)
 
 #else
 
-__riscv_save_12:
+FUNC_BEGIN (__riscv_save_12)
   .cfi_startproc
   # __riscv_save_* routine use t0/x5 as return address
   .cfi_return_column 5
@@ -305,10 +305,10 @@ __riscv_save_12:
   .cfi_offset 27, -52
   j .Ls10
 
-__riscv_save_11:
-__riscv_save_10:
-__riscv_save_9:
-__riscv_save_8:
+FUNC_BEGIN (__riscv_save_11)
+FUNC_BEGIN (__riscv_save_10)
+FUNC_BEGIN (__riscv_save_9)
+FUNC_BEGIN (__riscv_save_8)
   .cfi_restore 27
   addi sp, sp, -64
   .cfi_def_cfa_offset 64
@@ -324,10 +324,10 @@ __riscv_save_8:
   .cfi_offset 23, -36
   j .Ls6
 
-__riscv_save_7:
-__riscv_save_6:
-__riscv_save_5:
-__riscv_save_4:
+FUNC_BEGIN (__riscv_save_7)
+FUNC_BEGIN (__riscv_save_6)
+FUNC_BEGIN (__riscv_save_5)
+FUNC_BEGIN (__riscv_save_4)
   .cfi_restore 23
   .cfi_restore 24
   .cfi_restore 25
@@ -358,11 +358,20 @@ __riscv_save_4:
   sub sp, sp, t1
   jr t0
   .cfi_endproc
-
-__riscv_save_3:
-__riscv_save_2:
-__riscv_save_1:
-__riscv_save_0:
+FUNC_END (__riscv_save_12)
+FUNC_END (__riscv_save_11)
+FUNC_END (__riscv_save_10)
+FUNC_END (__riscv_save_9)
+FUNC_END (__riscv_save_8)
+FUNC_END (__riscv_save_7)
+FUNC_END (__riscv_save_6)
+FUNC_END (__riscv_save_5)
+FUNC_END (__riscv_save_4)
+
+FUNC_BEGIN (__riscv_save_3)
+FUNC_BEGIN (__riscv_save_2)
+FUNC_BEGIN (__riscv_save_1)
+FUNC_BEGIN (__riscv_save_0)
   .cfi_startproc
   # __riscv_save_* routine use t0/x5 as return address
   .cfi_return_column 5
@@ -377,8 +386,12 @@ __riscv_save_0:
   .cfi_offset 1, -4
   jr t0
   .cfi_endproc
+FUNC_END (__riscv_save_3)
+FUNC_END (__riscv_save_2)
+FUNC_END (__riscv_save_1)
+FUNC_END (__riscv_save_0)
 
-__riscv_restore_12:
+FUNC_BEGIN (__riscv_restore_12)
   .cfi_startproc
   .cfi_def_cfa_offset 64
   .cfi_offset 27, -52
@@ -398,10 +411,10 @@ __riscv_restore_12:
   .cfi_restore 27
   addi sp, sp, 16
 
-__riscv_restore_11:
-__riscv_restore_10:
-__riscv_restore_9:
-__riscv_restore_8:
+FUNC_BEGIN (__riscv_restore_11)
+FUNC_BEGIN (__riscv_restore_10)
+FUNC_BEGIN (__riscv_restore_9)
+FUNC_BEGIN (__riscv_restore_8)
   .cfi_restore 27
   .cfi_def_cfa_offset 48
   lw s10, 0(sp)
@@ -414,10 +427,10 @@ __riscv_restore_8:
   .cfi_restore 23
   addi sp, sp, 16
 
-__riscv_restore_7:
-__riscv_restore_6:
-__riscv_restore_5:
-__riscv_restore_4:
+FUNC_BEGIN (__riscv_restore_7)
+FUNC_BEGIN (__riscv_restore_6)
+FUNC_BEGIN (__riscv_restore_5)
+FUNC_BEGIN (__riscv_restore_4)
   .cfi_restore 23
   .cfi_restore 24
   .cfi_restore 25
@@ -434,10 +447,10 @@ __riscv_restore_4:
   .cfi_restore 19
   addi sp, sp, 16
 
-__riscv_restore_3:
-__riscv_restore_2:
-__riscv_restore_1:
-__riscv_restore_0:
+FUNC_BEGIN (__riscv_restore_3)
+FUNC_BEGIN (__riscv_restore_2)
+FUNC_BEGIN (__riscv_restore_1)
+FUNC_BEGIN (__riscv_restore_0)
   .cfi_restore 19
   .cfi_restore 20
   .cfi_restore 21
@@ -459,5 +472,18 @@ __riscv_restore_0:
   .cfi_def_cfa_offset 0
   ret
   .cfi_endproc
+FUNC_END (__riscv_restore_12)
+FUNC_END (__riscv_restore_11)
+FUNC_END (__riscv_restore_10)
+FUNC_END (__riscv_restore_9)
+FUNC_END (__riscv_restore_8)
+FUNC_END (__riscv_restore_7)
+FUNC_END (__riscv_restore_6)
+FUNC_END (__riscv_restore_5)
+FUNC_END (__riscv_restore_4)
+FUNC_END (__riscv_restore_3)
+FUNC_END (__riscv_restore_2)
+FUNC_END (__riscv_restore_1)
+FUNC_END (__riscv_restore_0)
 
 #endif