/* src/vm/jit/x86_64/md-asm.h - assembler defines for x86_64 Linux ABI
- Copyright (C) 1996-2005 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
+ 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.
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., 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA.
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA.
- Contact: cacao@complang.tuwien.ac.at
+ Contact: cacao@cacaojvm.org
Authors: Christian Thalinger
Changes:
- $Id: md-asm.h 3589 2005-11-06 14:44:42Z twisti $
+ $Id: md-asm.h 4357 2006-01-22 23:33:38Z twisti $
*/
#ifndef _MD_ASM_H
#define _MD_ASM_H
-
/* register defines ***********************************************************/
#define v0 %rax
#define v0l %eax
+#define itmp1 v0
-#define a0 %rdi
-#define a1 %rsi
-#define a2 %rdx
#define a3 %rcx
-#define a4 %r8
-#define a5 %r9
+#define a2 %rdx
-#define fa0 %xmm0
-#define fa1 %xmm1
-#define fa2 %xmm2
-#define fa3 %xmm3
-#define fa4 %xmm4
-#define fa5 %xmm5
-#define fa6 %xmm6
-#define fa7 %xmm7
+#define t0 %rbx
+#define t0l %ebx
#define sp %rsp
-#define bp %rbp
+#define s0 %rbp
+
+#define a1 %rsi
+#define a0 %rdi
+#define a0l %edi
+
+#define a4 %r8
+#define a5 %r9
-#define itmp1 %rax
#define itmp2 %r10
#define itmp3 %r11
+#define s1 %r12
+#define s2 %r13
+#define s3 %r14
+#define s4 %r15
+
+
+#define bp s0
+
#define itmp1l %eax
#define itmp2l %r10d
#define itmp3l %r11d
-#define itmp1b %al
-#define itmp2b %r10b
-#define itmp3b %r11b
-
#define xptr itmp1
#define xpc itmp2
+#define fa0 %xmm0
+#define fa1 %xmm1
+#define fa2 %xmm2
+#define fa3 %xmm3
+#define fa4 %xmm4
+#define fa5 %xmm5
+#define fa6 %xmm6
+#define fa7 %xmm7
+
+#define ftmp1 %xmm8
+#define ftmp2 %xmm9
+#define ftmp3 %xmm10
+
+#define ft0 %xmm11
+#define ft1 %xmm12
+#define ft2 %xmm13
+#define ft3 %xmm14
+#define ft4 %xmm15
+
+
/* save and restore macros ****************************************************/
#define SAVE_ARGUMENT_REGISTERS(off) \
- mov a0,(0+(off))*8(%rsp) ; \
- mov a1,(1+(off))*8(%rsp) ; \
- mov a2,(2+(off))*8(%rsp) ; \
- mov a3,(3+(off))*8(%rsp) ; \
- mov a4,(4+(off))*8(%rsp) ; \
- mov a5,(5+(off))*8(%rsp) ; \
+ mov a0,(0+(off))*8(sp) ; \
+ mov a1,(1+(off))*8(sp) ; \
+ mov a2,(2+(off))*8(sp) ; \
+ mov a3,(3+(off))*8(sp) ; \
+ mov a4,(4+(off))*8(sp) ; \
+ mov a5,(5+(off))*8(sp) ; \
\
- movq fa0,(6+(off))*8(%rsp) ; \
- movq fa1,(7+(off))*8(%rsp) ; \
- movq fa2,(8+(off))*8(%rsp) ; \
- movq fa3,(9+(off))*8(%rsp) ; \
- movq fa4,(10+(off))*8(%rsp) ; \
- movq fa5,(11+(off))*8(%rsp) ; \
- movq fa6,(12+(off))*8(%rsp) ; \
- movq fa7,(13+(off))*8(%rsp) ;
+ movq fa0,(6+(off))*8(sp) ; \
+ movq fa1,(7+(off))*8(sp) ; \
+ movq fa2,(8+(off))*8(sp) ; \
+ movq fa3,(9+(off))*8(sp) ; \
+ movq fa4,(10+(off))*8(sp) ; \
+ movq fa5,(11+(off))*8(sp) ; \
+ movq fa6,(12+(off))*8(sp) ; \
+ movq fa7,(13+(off))*8(sp) ;
#define RESTORE_ARGUMENT_REGISTERS(off) \
- mov (0+(off))*8(%rsp),a0 ; \
- mov (1+(off))*8(%rsp),a1 ; \
- mov (2+(off))*8(%rsp),a2 ; \
- mov (3+(off))*8(%rsp),a3 ; \
- mov (4+(off))*8(%rsp),a4 ; \
- mov (5+(off))*8(%rsp),a5 ; \
+ mov (0+(off))*8(sp),a0 ; \
+ mov (1+(off))*8(sp),a1 ; \
+ mov (2+(off))*8(sp),a2 ; \
+ mov (3+(off))*8(sp),a3 ; \
+ mov (4+(off))*8(sp),a4 ; \
+ mov (5+(off))*8(sp),a5 ; \
\
- movq (6+(off))*8(%rsp),fa0 ; \
- movq (7+(off))*8(%rsp),fa1 ; \
- movq (8+(off))*8(%rsp),fa2 ; \
- movq (9+(off))*8(%rsp),fa3 ; \
- movq (10+(off))*8(%rsp),fa4 ; \
- movq (11+(off))*8(%rsp),fa5 ; \
- movq (12+(off))*8(%rsp),fa6 ; \
- movq (13+(off))*8(%rsp),fa7 ;
+ movq (6+(off))*8(sp),fa0 ; \
+ movq (7+(off))*8(sp),fa1 ; \
+ movq (8+(off))*8(sp),fa2 ; \
+ movq (9+(off))*8(sp),fa3 ; \
+ movq (10+(off))*8(sp),fa4 ; \
+ movq (11+(off))*8(sp),fa5 ; \
+ movq (12+(off))*8(sp),fa6 ; \
+ movq (13+(off))*8(sp),fa7 ;
#define SAVE_TEMPORARY_REGISTERS(off) \
- mov %rbx,(0+(off))*8(%rsp)
+ mov t0,(0+(off))*8(sp) ; \
+ movq ft0,(1+(off))*8(sp) ; \
+ movq ft1,(2+(off))*8(sp) ; \
+ movq ft2,(3+(off))*8(sp) ; \
+ movq ft3,(4+(off))*8(sp) ;
#define RESTORE_TEMPORARY_REGISTERS(off) \
- mov (0+(off))*8(%rsp),%rbx
+ mov (0+(off))*8(sp),t0 ; \
+ movq (1+(off))*8(sp),ft0 ; \
+ movq (2+(off))*8(sp),ft1 ; \
+ movq (3+(off))*8(sp),ft2 ; \
+ movq (4+(off))*8(sp),ft3 ;
#endif /* _MD_ASM_H */