blob: f184ba088532635068f1944f858c249675dbd991 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * Definitions for the FPU register names
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 *
8 * Copyright (C) 1995, 1999 Ralf Baechle
9 * Copyright (C) 1985 MIPS Computer Systems, Inc.
10 * Copyright (C) 1990 - 1992, 1999 Silicon Graphics, Inc.
11 */
12#ifndef _ASM_FPREGDEF_H
13#define _ASM_FPREGDEF_H
14
15#include <asm/sgidefs.h>
Ralf Baechle42a3b4f2005-09-03 15:56:17 -070016
Manuel Lauss842dfc12014-11-07 14:13:54 +010017/*
18 * starting with binutils 2.24.51.20140729, MIPS binutils warn about mixing
19 * hardfloat and softfloat object files. The kernel build uses soft-float by
20 * default, so we also need to pass -msoft-float along to GAS if it supports it.
21 * But this in turn causes assembler errors in files which access hardfloat
22 * registers. We detect if GAS supports "-msoft-float" in the Makefile and
23 * explicitly put ".set hardfloat" where floating point registers are touched.
24 */
25#ifdef GAS_HAS_SET_HARDFLOAT
26#define SET_HARDFLOAT .set hardfloat
27#else
28#define SET_HARDFLOAT
29#endif
30
Linus Torvalds1da177e2005-04-16 15:20:36 -070031#if _MIPS_SIM == _MIPS_SIM_ABI32
32
33/*
34 * These definitions only cover the R3000-ish 16/32 register model.
35 * But we're trying to be R3000 friendly anyway ...
36 */
Ralf Baechle70342282013-01-22 12:59:30 +010037#define fv0 $f0 /* return value */
Linus Torvalds1da177e2005-04-16 15:20:36 -070038#define fv0f $f1
39#define fv1 $f2
40#define fv1f $f3
Ralf Baechle70342282013-01-22 12:59:30 +010041#define fa0 $f12 /* argument registers */
Linus Torvalds1da177e2005-04-16 15:20:36 -070042#define fa0f $f13
43#define fa1 $f14
44#define fa1f $f15
Ralf Baechle70342282013-01-22 12:59:30 +010045#define ft0 $f4 /* caller saved */
Linus Torvalds1da177e2005-04-16 15:20:36 -070046#define ft0f $f5
47#define ft1 $f6
48#define ft1f $f7
49#define ft2 $f8
50#define ft2f $f9
51#define ft3 $f10
52#define ft3f $f11
53#define ft4 $f16
54#define ft4f $f17
55#define ft5 $f18
56#define ft5f $f19
Ralf Baechle70342282013-01-22 12:59:30 +010057#define fs0 $f20 /* callee saved */
Linus Torvalds1da177e2005-04-16 15:20:36 -070058#define fs0f $f21
59#define fs1 $f22
60#define fs1f $f23
61#define fs2 $f24
62#define fs2f $f25
63#define fs3 $f26
64#define fs3f $f27
65#define fs4 $f28
66#define fs4f $f29
67#define fs5 $f30
68#define fs5f $f31
69
Ralf Baechle70342282013-01-22 12:59:30 +010070#define fcr31 $31 /* FPU status register */
Linus Torvalds1da177e2005-04-16 15:20:36 -070071
72#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */
Ralf Baechle42a3b4f2005-09-03 15:56:17 -070073
Linus Torvalds1da177e2005-04-16 15:20:36 -070074#if _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32
75
76#define fv0 $f0 /* return value */
77#define fv1 $f2
78#define fa0 $f12 /* argument registers */
79#define fa1 $f13
80#define fa2 $f14
81#define fa3 $f15
82#define fa4 $f16
83#define fa5 $f17
84#define fa6 $f18
85#define fa7 $f19
86#define ft0 $f4 /* caller saved */
87#define ft1 $f5
88#define ft2 $f6
89#define ft3 $f7
90#define ft4 $f8
91#define ft5 $f9
92#define ft6 $f10
93#define ft7 $f11
94#define ft8 $f20
95#define ft9 $f21
96#define ft10 $f22
97#define ft11 $f23
98#define ft12 $f1
99#define ft13 $f3
100#define fs0 $f24 /* callee saved */
101#define fs1 $f25
102#define fs2 $f26
103#define fs3 $f27
104#define fs4 $f28
105#define fs5 $f29
106#define fs6 $f30
107#define fs7 $f31
108
109#define fcr31 $31
110
111#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32 */
112
113#endif /* _ASM_FPREGDEF_H */