76 lines
2.2 KiB
ArmAsm
76 lines
2.2 KiB
ArmAsm
/***********************************************************************/
|
|
/* */
|
|
/* OCaml */
|
|
/* */
|
|
/* Xavier Leroy, projet Cristal, INRIA Rocquencourt */
|
|
/* */
|
|
/* Copyright 2000 Institut National de Recherche en Informatique et */
|
|
/* en Automatique. All rights reserved. This file is distributed */
|
|
/* under the terms of the Q Public License version 1.0. */
|
|
/* */
|
|
/***********************************************************************/
|
|
|
|
#ifdef SYS_macosx
|
|
#define ALIGN 4
|
|
#else
|
|
#define ALIGN 16
|
|
#endif
|
|
|
|
#ifdef SYS_macosx
|
|
#define CALL_GEN_CODE _call_gen_code
|
|
#define CAML_C_CALL _caml_c_call
|
|
#define CAML_NEGF_MASK _caml_negf_mask
|
|
#define CAML_ABSF_MASK _caml_absf_mask
|
|
#else
|
|
#define CALL_GEN_CODE call_gen_code
|
|
#define CAML_C_CALL caml_c_call
|
|
#define CAML_NEGF_MASK caml_negf_mask
|
|
#define CAML_ABSF_MASK caml_absf_mask
|
|
#endif
|
|
|
|
.globl CALL_GEN_CODE
|
|
.align ALIGN
|
|
CALL_GEN_CODE:
|
|
pushq %rbx
|
|
pushq %rbp
|
|
pushq %r12
|
|
pushq %r13
|
|
pushq %r14
|
|
pushq %r15
|
|
movq %rdi, %r10
|
|
movq %rsi, %rax
|
|
movq %rdx, %rbx
|
|
movq %rcx, %rdi
|
|
movq %r8, %rsi
|
|
call *%r10
|
|
popq %r15
|
|
popq %r14
|
|
popq %r13
|
|
popq %r12
|
|
popq %rbp
|
|
popq %rbx
|
|
ret
|
|
|
|
.globl CAML_C_CALL
|
|
.align ALIGN
|
|
CAML_C_CALL:
|
|
jmp *%rax
|
|
|
|
#ifdef SYS_macosx
|
|
.literal16
|
|
#elif defined(SYS_mingw64) || defined(SYS_cygwin)
|
|
.section .rodata.cst8
|
|
#else
|
|
.section .rodata.cst8,"aM",@progbits,8
|
|
#endif
|
|
.globl CAML_NEGF_MASK
|
|
.align ALIGN
|
|
CAML_NEGF_MASK:
|
|
.quad 0x8000000000000000, 0
|
|
.globl CAML_ABSF_MASK
|
|
.align ALIGN
|
|
CAML_ABSF_MASK:
|
|
.quad 0x7FFFFFFFFFFFFFFF, 0
|
|
|
|
.comm young_limit, 8
|