/* src/vm/jit/alpha/md-asm.h - assembler defines for Alpha ABI Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel, C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger, Institut f. Computersprachen - TU Wien This file is part of CACAO. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Contact: cacao@cacaojvm.org Authors: Christian Thalinger Changes: */ #ifndef _MD_ASM_H #define _MD_ASM_H /* register defines ***********************************************************/ #define v0 $0 #define t0 $1 #define t1 $2 #define t2 $3 #define t3 $4 #define t4 $5 #define t5 $6 #define t6 $7 #define t7 $8 #define s0 $9 #define s1 $10 #define s2 $11 #define s3 $12 #define s4 $13 #define s5 $14 #define s6 $15 #define a0 $16 #define a1 $17 #define a2 $18 #define a3 $19 #define a4 $20 #define a5 $21 #define t8 $22 #define t9 $23 #define t10 $24 #define t11 $25 #define ra $26 #define t12 $27 #define pv t12 #define AT $at #define gp $29 #define sp $30 #define zero $31 #define itmp1 t11 #define itmp2 $28 #define itmp3 gp #define xptr itmp1 #define xpc itmp2 #define mptr itmp2 #define fv0 $f0 #define ft0 $f1 #define fs0 $f2 #define fs1 $f3 #define fs2 $f4 #define fs3 $f5 #define fs4 $f6 #define fs5 $f7 #define fs6 $f8 #define fs7 $f9 #define ft1 $f10 #define ft2 $f11 #define ft3 $f12 #define ft4 $f13 #define ft5 $f14 #define ft6 $f15 #define fa0 $f16 #define fa1 $f17 #define fa2 $f18 #define fa3 $f19 #define fa4 $f20 #define fa5 $f21 #define ft7 $f22 #define ft8 $f23 #define ft9 $f24 #define ft10 $f25 #define ft11 $f26 #define ft12 $f27 #define ftmp1 $f28 #define ftmp2 $f29 #define ftmp3 $f30 #define fzero $f31 #define PAL_imb 0x86 /* save and restore macros ****************************************************/ #define SAVE_RETURN_REGISTERS(off) \ stq v0,(0+(off))*8(sp) ; \ stt fv0,(1+(off))*8(sp) ; #define RESTORE_RETURN_REGISTERS(off) \ ldq v0,(0+(off))*8(sp) ; \ ldt fv0,(1+(off))*8(sp) ; #define SAVE_ARGUMENT_REGISTERS(off) \ stq a0,(0+(off))*8(sp) ; \ stq a1,(1+(off))*8(sp) ; \ stq a2,(2+(off))*8(sp) ; \ stq a3,(3+(off))*8(sp) ; \ stq a4,(4+(off))*8(sp) ; \ stq a5,(5+(off))*8(sp) ; \ \ stt fa0,(6+(off))*8(sp) ; \ stt fa1,(7+(off))*8(sp) ; \ stt fa2,(8+(off))*8(sp) ; \ stt fa3,(9+(off))*8(sp) ; \ stt fa4,(10+(off))*8(sp) ; \ stt fa5,(11+(off))*8(sp) ; #define RESTORE_ARGUMENT_REGISTERS(off) \ ldq a0,(0+(off))*8(sp) ; \ ldq a1,(1+(off))*8(sp) ; \ ldq a2,(2+(off))*8(sp) ; \ ldq a3,(3+(off))*8(sp) ; \ ldq a4,(4+(off))*8(sp) ; \ ldq a5,(5+(off))*8(sp) ; \ \ ldt fa0,(6+(off))*8(sp) ; \ ldt fa1,(7+(off))*8(sp) ; \ ldt fa2,(8+(off))*8(sp) ; \ ldt fa3,(9+(off))*8(sp) ; \ ldt fa4,(10+(off))*8(sp) ; \ ldt fa5,(11+(off))*8(sp) ; #define SAVE_TEMPORARY_REGISTERS(off) \ stq t0,(0+(off))*8(sp) ; \ stq t1,(1+(off))*8(sp) ; \ stq t2,(2+(off))*8(sp) ; \ stq t3,(3+(off))*8(sp) ; \ stq t4,(4+(off))*8(sp) ; \ stq t5,(5+(off))*8(sp) ; \ stq t6,(6+(off))*8(sp) ; \ stq t7,(7+(off))*8(sp) ; \ stq t8,(8+(off))*8(sp) ; \ stq t9,(9+(off))*8(sp) ; \ stq t10,(10+(off))*8(sp) ; \ \ stt ft0,(11+(off))*8(sp) ; \ stt ft1,(12+(off))*8(sp) ; \ stt ft2,(13+(off))*8(sp) ; \ stt ft3,(14+(off))*8(sp) ; \ stt ft4,(15+(off))*8(sp) ; \ stt ft5,(16+(off))*8(sp) ; \ stt ft6,(17+(off))*8(sp) ; \ stt ft7,(18+(off))*8(sp) ; \ stt ft8,(19+(off))*8(sp) ; \ stt ft9,(20+(off))*8(sp) ; \ stt ft10,(21+(off))*8(sp) ; \ stt ft11,(22+(off))*8(sp) ; \ stt ft12,(23+(off))*8(sp) ; #define RESTORE_TEMPORARY_REGISTERS(off) \ ldq t0,(0+(off))*8(sp) ; \ ldq t1,(1+(off))*8(sp) ; \ ldq t2,(2+(off))*8(sp) ; \ ldq t3,(3+(off))*8(sp) ; \ ldq t4,(4+(off))*8(sp) ; \ ldq t5,(5+(off))*8(sp) ; \ ldq t6,(6+(off))*8(sp) ; \ ldq t7,(7+(off))*8(sp) ; \ ldq t8,(8+(off))*8(sp) ; \ ldq t9,(9+(off))*8(sp) ; \ ldq t10,(10+(off))*8(sp) ; \ \ ldt ft0,(11+(off))*8(sp) ; \ ldt ft1,(12+(off))*8(sp) ; \ ldt ft2,(13+(off))*8(sp) ; \ ldt ft3,(14+(off))*8(sp) ; \ ldt ft4,(15+(off))*8(sp) ; \ ldt ft5,(16+(off))*8(sp) ; \ ldt ft6,(17+(off))*8(sp) ; \ ldt ft7,(18+(off))*8(sp) ; \ ldt ft8,(19+(off))*8(sp) ; \ ldt ft9,(20+(off))*8(sp) ; \ ldt ft10,(21+(off))*8(sp) ; \ ldt ft11,(22+(off))*8(sp) ; \ ldt ft12,(23+(off))*8(sp) ; #endif /* _MD_ASM_H */ /* * These are local overrides for various environment variables in Emacs. * Please do not remove this and leave it at the end of the file, where * Emacs will automagically detect them. * --------------------------------------------------------------------- * Local variables: * mode: c * indent-tabs-mode: t * c-basic-offset: 4 * tab-width: 4 * End: */