svn commit: r250136 - head/sys/mips/include

Warner Losh imp at FreeBSD.org
Wed May 1 06:22:50 UTC 2013


Author: imp
Date: Wed May  1 06:22:50 2013
New Revision: 250136
URL: http://svnweb.freebsd.org/changeset/base/250136

Log:
  Import NetBSD's version, which is perfectly fine.
  
  Submitted by:	jmallet@

Modified:
  head/sys/mips/include/regdef.h

Modified: head/sys/mips/include/regdef.h
==============================================================================
--- head/sys/mips/include/regdef.h	Wed May  1 05:48:32 2013	(r250135)
+++ head/sys/mips/include/regdef.h	Wed May  1 06:22:50 2013	(r250136)
@@ -1,6 +1,8 @@
+/*	$NetBSD: regdef.h,v 1.12 2005/12/11 12:18:09 christos Exp $	*/
+
 /*
  * Copyright (c) 1992, 1993
- *      The Regents of the University of California.  All rights reserved.
+ *	The Regents of the University of California.  All rights reserved.
  *
  * This code is derived from software contributed to Berkeley by
  * Ralph Campbell. This file is derived from the MIPS RISC
@@ -14,7 +16,7 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  *
@@ -29,44 +31,80 @@
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
- *      @(#)regdef.h    8.1 (Berkeley) 06/10/93
+ *
+ *	@(#)regdef.h	8.1 (Berkeley) 6/10/93
  * $FreeBSD$
  */
 
-#ifndef _MIPS_INCLUDE_REGDEF_H_
-#define _MIPS_INCLUDE_REGDEF_H_
+#ifndef _MIPS_REGDEF_H
+#define _MIPS_REGDEF_H
+
+#include <machine/cdefs.h>	/* for API selection */
+
+#if defined(__ASSEMBLER__)
+#define zero	$0	/* always zero */
+#define AT	$at	/* assembler temporary */
+#define v0	$2	/* return value */
+#define v1	$3
+#define a0	$4	/* argument registers */
+#define a1	$5
+#define a2	$6
+#define a3	$7
+#if defined(__mips_n32) || defined(__mips_n64)
+#define	a4	$8
+#define	a5	$9
+#define	a6	$10
+#define	a7	$11
+#define	t0	$12	/* temp registers (not saved across subroutine calls) */
+#define	t1	$13
+#define	t2	$14
+#define	t3	$15
+#else
+#define t0	$8	/* temp registers (not saved across subroutine calls) */
+#define t1	$9
+#define t2	$10
+#define t3	$11
+#define t4	$12
+#define t5	$13
+#define t6	$14
+#define t7	$15
+#endif /* __mips_n32 || __mips_n64 */
+#define s0	$16	/* saved across subroutine calls (callee saved) */
+#define s1	$17
+#define s2	$18
+#define s3	$19
+#define s4	$20
+#define s5	$21
+#define s6	$22
+#define s7	$23
+#define t8	$24	/* two more temporary registers */
+#define t9	$25
+#define k0	$26	/* kernel temporary */
+#define k1	$27
+#define gp	$28	/* global pointer */
+#define sp	$29	/* stack pointer */
+#define s8	$30	/* one more callee saved */
+#define ra	$31	/* return address */
 
-#define zero    $0      /* always zero */
-#define AT      $at     /* assembler temp */
-#define v0      $2      /* return value */
-#define v1      $3
-#define a0      $4      /* argument registers */
-#define a1      $5
-#define a2      $6
-#define a3      $7
-#define t0      $8      /* temp registers (not saved across subroutine calls) */
-#define t1      $9
-#define t2      $10
-#define t3      $11
-#define t4      $12
-#define t5      $13
-#define t6      $14
-#define t7      $15
-#define s0      $16     /* saved across subroutine calls (callee saved) */
-#define s1      $17
-#define s2      $18
-#define s3      $19
-#define s4      $20
-#define s5      $21
-#define s6      $22
-#define s7      $23
-#define t8      $24     /* two more temp registers */
-#define t9      $25
-#define k0      $26     /* kernel temporary */
-#define k1      $27
-#define gp      $28     /* global pointer */
-#define sp      $29     /* stack pointer */
-#define s8      $30     /* one more callee saved */
-#define ra      $31     /* return address */
+/*
+ * These are temp registers whose names can be used in either the old
+ * or new ABI, although they map to different physical registers.  In
+ * the old ABI, they map to t4-t7, and in the new ABI, they map to a4-a7.
+ *
+ * Because they overlap with the last 4 arg regs in the new ABI, ta0-ta3
+ * should be used only when we need more than t0-t3.
+ */
+#if defined(__mips_n32) || defined(__mips_n64)
+#define	ta0	$8
+#define	ta1	$9
+#define	ta2	$10
+#define	ta3	$11
+#else
+#define	ta0	$12
+#define	ta1	$13
+#define	ta2	$14
+#define	ta3	$15
+#endif /* __mips_n32 || __mips_n64 */
 
-#endif /* _MIPS_INCLUDE_REGDEF_H_ */
+#endif /* __ASSEMBLER__ */
+#endif /* _MIPS_REGDEF_H */


More information about the svn-src-all mailing list