Add libgmp 6.2.0 to third_party

Don't build it yet.  That will come in the next review.

Change-Id: Idf3266558165e5ab45f4a41c98cc8c838c8244d5
diff --git a/third_party/gmp/tests/arm32call.asm b/third_party/gmp/tests/arm32call.asm
new file mode 100644
index 0000000..24d0739
--- /dev/null
+++ b/third_party/gmp/tests/arm32call.asm
@@ -0,0 +1,83 @@
+dnl  ARM32 calling conventions checking.
+
+dnl  Copyright 2000, 2003, 2004, 2006, 2007, 2010, 2013, 2016 Free Software
+dnl  Foundation, Inc.
+
+dnl  This file is part of the GNU MP Library test suite.
+
+dnl  The GNU MP Library test suite is free software; you can redistribute it
+dnl  and/or modify it under the terms of the GNU General Public License as
+dnl  published by the Free Software Foundation; either version 3 of the
+dnl  License, or (at your option) any later version.
+
+dnl  The GNU MP Library test suite is distributed in the hope that it will be
+dnl  useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
+dnl  Public License for more details.
+
+dnl  You should have received a copy of the GNU General Public License along
+dnl  with the GNU MP Library test suite.  If not, see
+dnl  https://www.gnu.org/licenses/.
+
+
+dnl  The current version of the code attempts to keep the call/return
+dnl  prediction stack valid, but matching calls and returns.
+
+include(`../config.m4')
+
+
+C int calling_conventions (...);
+C
+C The global variable "calling_conventions_function" is the function to
+C call, with the arguments as passed here.
+
+define(`WANT_CALLEE_SAVES',	eval(4*0))
+define(`SAVE_CALLEE_SAVES',	eval(4*8))
+define(`RETADDR',		eval(4*16))
+define(`GOT_CALLEE_SAVES',	eval(4*17))
+define(`JUNK_PARAMS',		eval(4*25))
+
+	TEXT
+	ALIGN(32)
+PROLOGUE(calling_conventions)
+	LEA(	r12, calling_conventions_values)
+
+	C Preserve callee-saves registers, including the link register r14
+	add	r12, r12, #SAVE_CALLEE_SAVES
+	stm	r12, {r4-r11,r14}
+	sub	r12, r12, #SAVE_CALLEE_SAVES
+
+	C Put chosen junk into callee-saves registers
+	add	r12, r12, #WANT_CALLEE_SAVES
+	ldm	r12, {r4-r11}
+	sub	r12, r12, #WANT_CALLEE_SAVES
+
+	C No callee-saves registers on arm except r12 and parameter registers
+	C
+
+	C Make the actual call
+	LEA(	r12, calling_conventions_function)
+	ldr	r12, [r12]
+	mov	r14, pc
+	return	r12
+
+	LEA(	r12, calling_conventions_values)
+
+	C Save callee-saves registers after call
+	add	r12, r12, #GOT_CALLEE_SAVES
+	stm	r12, {r4-r11}
+	sub	r12, r12, #GOT_CALLEE_SAVES
+
+	C Restore callee-saves registers, including the link register r14
+	add	r12, r12, #SAVE_CALLEE_SAVES
+	ldm	r12, {r4-r11,r14}
+	sub	r12, r12, #SAVE_CALLEE_SAVES
+
+	C Overwrite parameter registers.  Note that we overwrite r1, which
+	C could hold one half of a 64-bit return value, since we don't use that
+	C in GMP.
+	add	r12, r12, #JUNK_PARAMS
+	ldm	r12, {r1-r3}
+
+	return	r14
+EPILOGUE()