/** * @file * * @brief IDT R3000 Register Structure * * 950313: Ketan added sreg/lreg and R_SZ for 64-bit saves * added Register definition for XContext reg. * Look towards end of this file. */ /* * Copyright 1989 Integrated Device Technology, Inc * All Rights Reserved * * Based upon IDT provided code with the following release: * * This source code has been made available to you by IDT on an AS-IS * basis. Anyone receiving this source is licensed under IDT copyrights * to use it in any way he or she deems fit, including copying it, * modifying it, compiling it, and redistributing it either with or * without modifications. No license under IDT patents or patent * applications is to be implied by the copyright license. * * Any user of this software should understand that IDT cannot provide * technical support for this software and will not be responsible for * any consequences resulting from the use of this software. * * Any person who transfers this source code or any derivative work must * include the IDT copyright notice, this paragraph, and the preceeding * two paragraphs in the transferred software. * * COPYRIGHT IDT CORPORATION 1996 * LICENSED MATERIAL - PROGRAM PROPERTY OF IDT */ #ifndef _RTEMS_MIPS_IREGDEF_H #define _RTEMS_MIPS_IREGDEF_H /** * @defgroup MipsSet_iregdef Register Structure * * @ingroup MIPS * */ /**@{*/ /* register names */ #define r0 $0 #define r1 $1 #define r2 $2 #define r3 $3 #define r4 $4 #define r5 $5 #define r6 $6 #define r7 $7 #define r8 $8 #define r9 $9 #define r10 $10 #define r11 $11 #define r12 $12 #define r13 $13 #define r14 $14 #define r15 $15 #define r16 $16 #define r17 $17 #define r18 $18 #define r19 $19 #define r20 $20 #define r21 $21 #define r22 $22 #define r23 $23 #define r24 $24 #define r25 $25 #define r26 $26 #define r27 $27 #define r28 $28 #define r29 $29 #define r30 $30 #define r31 $31 #define fp0 $f0 #define fp1 $f1 #define fp2 $f2 #define fp3 $f3 #define fp4 $f4 #define fp5 $f5 #define fp6 $f6 #define fp7 $f7 #define fp8 $f8 #define fp9 $f9 #define fp10 $f10 #define fp11 $f11 #define fp12 $f12 #define fp13 $f13 #define fp14 $f14 #define fp15 $f15 #define fp16 $f16 #define fp17 $f17 #define fp18 $f18 #define fp19 $f19 #define fp20 $f20 #define fp21 $f21 #define fp22 $f22 #define fp23 $f23 #define fp24 $f24 #define fp25 $f25 #define fp26 $f26 #define fp27 $f27 #define fp28 $f28 #define fp29 $f29 #define fp30 $f30 #define fp31 $f31 #define fcr0 $0 #define fcr30 $30 #define fcr31 $31 #define zero $0 /* wired zero */ #define AT $at /* assembler temp */ #define v0 $2 /* return value */ #define v1 $3 #define a0 $4 /* argument registers a0-a3 */ #define a1 $5 #define a2 $6 #define a3 $7 #define t0 $8 /* caller saved t0-t9 */ #define t1 $9 #define t2 $10 #define t3 $11 #define t4 $12 #define t5 $13 #define t6 $14 #define t7 $15 #define s0 $16 /* callee saved s0-s8 */ #define s1 $17 #define s2 $18 #define s3 $19 #define s4 $20 #define s5 $21 #define s6 $22 #define s7 $23 #define t8 $24 #define t9 $25 #define k0 $26 /* kernel usage */ #define k1 $27 /* kernel usage */ #define gp $28 /* sdata pointer */ #define sp $29 /* stack pointer */ #define s8 $30 /* yet another saved reg for the callee */ #define fp $30 /* frame pointer - this is being phased out by MIPS */ #define ra $31 /* return address */ /* ** relative position of registers in interrupt/exception frame */ #define R_R0 0 #define R_R1 1 #define R_R2 2 #define R_R3 3 #define R_R4 4 #define R_R5 5 #define R_R6 6 #define R_R7 7 #define R_R8 8 #define R_R9 9 #define R_R10 10 #define R_R11 11 #define R_R12 12 #define R_R13 13 #define R_R14 14 #define R_R15 15 #define R_R16 16 #define R_R17 17 #define R_R18 18 #define R_R19 19 #define R_R20 20 #define R_R21 21 #define R_R22 22 #define R_R23 23 #define R_R24 24 #define R_R25 25 #define R_R26 26 #define R_R27 27 #define R_R28 28 #define R_R29 29 #define R_R30 30 #define R_R31 31 #define R_SR 32 #define R_MDLO 33 #define R_MDHI 34 #define R_BADVADDR 35 #define R_CAUSE 36 #define R_EPC 37 #define R_F0 38 #define R_F1 39 #define R_F2 40 #define R_F3 41 #define R_F4 42 #define R_F5 43 #define R_F6 44 #define R_F7 45 #define R_F8 46 #define R_F9 47 #define R_F10 48 #define R_F11 49 #define R_F12 50 #define R_F13 41 #define R_F14 42 #define R_F15 43 #define R_F16 44 #define R_F17 45 #define R_F18 56 #define R_F19 57 #define R_F20 58 #define R_F21 59 #define R_F22 60 #define R_F23 61 #define R_F24 62 #define R_F25 63 #define R_F26 64 #define R_F27 65 #define R_F28 66 #define R_F29 67 #define R_F30 68 #define R_F31 69 #define R_FCSR 70 #define R_FEIR 71 #define R_TLBHI 72 #if __mips == 1 #define R_TLBLO 73 #endif #if (__mips == 3 ) || ( __mips == 32) #define R_TLBLO0 73 #endif #define R_INX 74 #define R_RAND 75 #define R_CTXT 76 #define R_EXCTYPE 77 #define R_MODE 78 #define R_PRID 79 #define R_TAR 80 #if __mips == 1 #define NREGS 81 #endif #if (__mips == 3 ) || ( __mips == 32) #define R_TLBLO1 81 #define R_PAGEMASK 82 #define R_WIRED 83 #define R_COUNT 84 #define R_COMPARE 85 #define R_CONFIG 86 #define R_LLADDR 87 #define R_WATCHLO 88 #define R_WATCHHI 89 #define R_ECC 90 #define R_CACHEERR 91 #define R_TAGLO 92 #define R_TAGHI 93 #define R_ERRPC 94 #define R_XCTXT 95 /* Ketan added from SIM64bit */ #define NREGS 96 #endif /* ** For those who like to think in terms of the compiler names for the regs */ #define R_ZERO R_R0 #define R_AT R_R1 #define R_V0 R_R2 #define R_V1 R_R3 #define R_A0 R_R4 #define R_A1 R_R5 #define R_A2 R_R6 #define R_A3 R_R7 #define R_T0 R_R8 #define R_T1 R_R9 #define R_T2 R_R10 #define R_T3 R_R11 #define R_T4 R_R12 #define R_T5 R_R13 #define R_T6 R_R14 #define R_T7 R_R15 #define R_S0 R_R16 #define R_S1 R_R17 #define R_S2 R_R18 #define R_S3 R_R19 #define R_S4 R_R20 #define R_S5 R_R21 #define R_S6 R_R22 #define R_S7 R_R23 #define R_T8 R_R24 #define R_T9 R_R25 #define R_K0 R_R26 #define R_K1 R_R27 #define R_GP R_R28 #define R_SP R_R29 #define R_FP R_R30 #define R_RA R_R31 /* disabled for RTEMS */ #if 0 /* Ketan added the following */ #if __mips == 1 #define sreg sw #define lreg lw #define rmfc0 mfc0 #define rmtc0 mtc0 #define R_SZ 4 #endif /* __mips == 1 */ /* #ifdef __mips == 3 */ #if __mips < 3 #define sreg sw #define lreg lw #define rmfc0 mfc0 #define rmtc0 mtc0 #define R_SZ 4 #else #define sreg sd #define lreg ld #define rmfc0 dmfc0 #define rmtc0 dmtc0 #define R_SZ 8 #endif /* #endif __mips == 3 */ /* Ketan till here */ #endif /**@}*/ #endif /* _RTEMS_MIPS_IREGDEF_H */