1645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman/* $OpenBSD: regdef.h,v 1.3 2005/08/07 07:29:44 miod Exp $ */ 2645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman 3645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman/* 4645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * Copyright (c) 1992, 1993 5645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * The Regents of the University of California. All rights reserved. 6645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * 7645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * This code is derived from software contributed to Berkeley by 8645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * Ralph Campbell. This file is derived from the MIPS RISC 9645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * Architecture book by Gerry Kane. 10645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * 11645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * Redistribution and use in source and binary forms, with or without 12645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * modification, are permitted provided that the following conditions 13645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * are met: 14645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * 1. Redistributions of source code must retain the above copyright 15645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * notice, this list of conditions and the following disclaimer. 16645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * 2. Redistributions in binary form must reproduce the above copyright 17645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * notice, this list of conditions and the following disclaimer in the 18645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * documentation and/or other materials provided with the distribution. 19645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * 3. Neither the name of the University nor the names of its contributors 20645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * may be used to endorse or promote products derived from this software 21645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * without specific prior written permission. 22645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * 23645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 24645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 27645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * SUCH DAMAGE. 34645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * 35645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman * @(#)regdef.h 8.1 (Berkeley) 6/10/93 36645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman */ 37645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#ifndef _MIPS_REGDEF_H_ 38645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define _MIPS_REGDEF_H_ 39645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman 40645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#if (_MIPS_SIM == _ABI64) && !defined(__mips_n64) 41645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define __mips_n64 1 42645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#endif 43645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#if (_MIPS_SIM == _ABIN32) && !defined(__mips_n32) 44645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define __mips_n32 1 45645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#endif 46645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman 47645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define zero $0 /* always zero */ 48645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define AT $at /* assembler temp */ 49645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define v0 $2 /* return value */ 50645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define v1 $3 51645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define a0 $4 /* argument registers */ 52645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define a1 $5 53645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define a2 $6 54645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define a3 $7 55645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#if defined(__mips_n32) || defined(__mips_n64) 56645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define a4 $8 /* expanded register arguments */ 57645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define a5 $9 58645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define a6 $10 59645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define a7 $11 60645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define ta0 $8 /* alias */ 61645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define ta1 $9 62645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define ta2 $10 63645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define ta3 $11 64645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define t0 $12 /* temp registers (not saved across subroutine calls) */ 65645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define t1 $13 66645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define t2 $14 67645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define t3 $15 68645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#else 69645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define t0 $8 /* temp registers (not saved across subroutine calls) */ 70645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define t1 $9 71645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define t2 $10 72645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define t3 $11 73645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define t4 $12 74645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define t5 $13 75645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define t6 $14 76645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define t7 $15 77645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define ta0 $12 /* alias */ 78645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define ta1 $13 79645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define ta2 $14 80645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define ta3 $15 81645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#endif 82645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define s0 $16 /* saved across subroutine calls (callee saved) */ 83645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define s1 $17 84645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define s2 $18 85645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define s3 $19 86645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define s4 $20 87645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define s5 $21 88645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define s6 $22 89645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define s7 $23 90645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define t8 $24 /* two more temp registers */ 91645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define t9 $25 92645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define k0 $26 /* kernel temporary */ 93645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define k1 $27 94645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define gp $28 /* global pointer */ 95645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define sp $29 /* stack pointer */ 96645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define s8 $30 /* one more callee saved */ 97645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#define ra $31 /* return address */ 98645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman 99645d0312c2d6b6492cc4b3891bc1a91908dc24b7Chris Dearman#endif /* !_MIPS_REGDEF_H_ */ 100