* Updated header: Added 2006. Changed address of FSF. Changed email
[cacao.git] / src / vm / jit / x86_64 / md-asm.h
index 9c4c58118935eef0af73bbf5a7a1f08112bdb02b..def2855948fe75ef915aed4cacca0762119a5abc 100644 (file)
@@ -1,9 +1,9 @@
 /* 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 */