/* Copyright (C) 1991-2015 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library 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
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library.  If not, see
   <http://www.gnu.org/licenses/>.  */

#ifndef _SYS_FPREGDEF_H
#define _SYS_FPREGDEF_H

/* Commonalities first, individualities next...  */

#define fv0	$f0	/* return value */
#define fv1	$f2

#if _MIPS_SIM == _ABIO32 || _MIPS_SIM == _ABIN32
#define fs0	$f20	/* callee saved */
#define fs1	$f22
#define fs2	$f24
#define fs3	$f26
#define fs4	$f28
#define fs5	$f30
#endif /* _MIPS_SIM == _ABIO32 || _MIPS_SIM == _ABIN32 */

#if _MIPS_SIM == _ABI64 || _MIPS_SIM == _ABIN32
#define fa0	$f12	/* argument registers */
#define fa1	$f13
#define fa2	$f14
#define fa3	$f15
#define fa4	$f16
#define fa5	$f17
#define fa6	$f18
#define fa7	$f19

#define ft0	$f4	/* caller saved */
#define ft1	$f5
#define ft2	$f6
#define ft3	$f7
#define ft4	$f8
#define ft5	$f9
#define ft6	$f10
#define ft7	$f11
#endif /* _MIPS_SIM == _ABI64 || _MIPS_SIM == _ABIN32 */

#if _MIPS_SIM == _ABIO32
#define fv0f	$f1	/* return value, high part */
#define fv1f	$f3

#define fa0	$f12	/* argument registers */
#define fa0f	$f13
#define fa1	$f14
#define fa1f	$f15

#define ft0	$f4	/* caller saved */
#define ft0f	$f5
#define ft1	$f6
#define ft1f	$f7
#define ft2	$f8
#define ft2f	$f9
#define ft3	$f10
#define ft3f	$f11
#define ft4	$f16
#define ft4f	$f17
#define ft5	$f18
#define ft5f	$f19

#define fs0f	$f21	/* callee saved, high part */
#define fs1f	$f23
#define fs2f	$f25
#define fs3f	$f27
#define fs4f	$f29
#define fs5f	$f31
#endif /* _MIPS_SIM == _ABIO32 */

#if _MIPS_SIM == _ABI64
#define ft8	$f20	/* caller saved */
#define ft9	$f21
#define ft10	$f22
#define ft11	$f23
#define ft12	$f1
#define ft13	$f3

#define fs0	$f24	/* callee saved */
#define fs1	$f25
#define fs2	$f26
#define fs3	$f27
#define fs4	$f28
#define fs5	$f29
#define fs6	$f30
#define fs7	$f31
#endif /* _MIPS_SIM == _ABI64 */

#if _MIPS_SIM == _ABIN32
#define ft8	$f21	/* caller saved */
#define ft9	$f23
#define ft10	$f25
#define ft11	$f27
#define ft12	$f29
#define ft13	$f31
#define ft14	$f1
#define ft15	$f3
#endif /* _MIPS_SIM == _ABIN32 */

#define fcr31	$31	/* FPU status register */

#endif /* sys/fpregdef.h */
