-/* Copyright (C) 1997, 1998, 2002, 2003, 2004, 2005, 2012
- Free Software Foundation, Inc.
+/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ralf Baechle <ralf@gnu.org>.
# define CAT(str1,str2) __CAT(str1,str2)
#endif
+/* Redefined as nonempty in the internal header. */
+#define __mips_cfi_startproc /* Empty. */
+#define __mips_cfi_endproc /* Empty. */
+
/*
* Macros to handle different pointer/register sizes for 32/64-bit code
*
.align 2; \
.type symbol,@function; \
.ent symbol,0; \
-symbol: .frame sp,0,ra
+symbol: .frame sp,0,ra; \
+ __mips_cfi_startproc
/*
* NESTED - declare nested routine entry point
.align 2; \
.type symbol,@function; \
.ent symbol,0; \
-symbol: .frame sp, framesize, rpc
+symbol: .frame sp, framesize, rpc; \
+ __mips_cfi_startproc
/*
* END - mark end of function
*/
#ifndef END
# define END(function) \
+ __mips_cfi_endproc; \
.end function; \
.size function,.-function
#endif
*/
#define EXPORT(symbol) \
.globl symbol; \
-symbol:
+symbol: __mips_cfi_startproc
/*
* ABS - export absolute symbol
# define PREFX(hint,addr) \
prefx hint,addr
#else
-# define PREF
-# define PREFX
+# define PREF(hint,addr)
+# define PREFX(hint,addr)
#endif
/*
# define INT_ADDI addi
# define INT_ADDU addu
# define INT_ADDIU addiu
-# define INT_SUB add
+# define INT_SUB sub
# define INT_SUBI subi
# define INT_SUBU subu
# define INT_SUBIU subu
# define INT_ADDI daddi
# define INT_ADDU daddu
# define INT_ADDIU daddiu
-# define INT_SUB dadd
+# define INT_SUB dsub
# define INT_SUBI dsubi
# define INT_SUBU dsubu
# define INT_SUBIU dsubu
# define LONG_ADDI addi
# define LONG_ADDU addu
# define LONG_ADDIU addiu
-# define LONG_SUB add
+# define LONG_SUB sub
# define LONG_SUBI subi
# define LONG_SUBU subu
# define LONG_SUBIU subu
# define LONG_ADDI daddi
# define LONG_ADDU daddu
# define LONG_ADDIU daddiu
-# define LONG_SUB dadd
+# define LONG_SUB dsub
# define LONG_SUBI dsubi
# define LONG_SUBU dsubu
# define LONG_SUBIU dsubu
# define PTR_ADDI addi
# define PTR_ADDU addu
# define PTR_ADDIU addiu
-# define PTR_SUB add
+# define PTR_SUB sub
# define PTR_SUBI subi
# define PTR_SUBU subu
# define PTR_SUBIU subu
#if _MIPS_SIM == _ABIN32
# define PTR_ADD add
# define PTR_ADDI addi
+# define PTR_SUB sub
+# define PTR_SUBI subi
+#if !defined __mips_isa_rev || __mips_isa_rev < 6
# define PTR_ADDU add /* no u */
# define PTR_ADDIU addi /* no u */
-# define PTR_SUB add
-# define PTR_SUBI subi
# define PTR_SUBU sub /* no u */
# define PTR_SUBIU sub /* no u */
+#else
+# define PTR_ADDU addu
+# define PTR_ADDIU addiu
+# define PTR_SUBU subu
+# define PTR_SUBIU subu
+#endif
# define PTR_L lw
# define PTR_LA la
# define PTR_S sw
# define PTR_ADDI daddi
# define PTR_ADDU daddu
# define PTR_ADDIU daddiu
-# define PTR_SUB dadd
+# define PTR_SUB dsub
# define PTR_SUBI dsubi
# define PTR_SUBU dsubu
# define PTR_SUBIU dsubu
# define MTC0 dmtc0
#endif
-/* The MIPS archtectures do not have a uniform memory model. Particular
+/* The MIPS architectures do not have a uniform memory model. Particular
platforms may provide additional guarantees - for instance, the R4000
LL and SC instructions implicitly perform a SYNC, and the 4K promises
strong ordering.