diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 1995-12-20 10:41:22 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 1995-12-20 10:41:22 +0000 |
commit | 4fabf7b6b613eb9e5bf8a027ce376beda89dc3d5 (patch) | |
tree | a100005882084e1d50c11e7d52330a0e685a9fe1 /asmrun/stack.h | |
parent | b24b1296eeb3216b3f88fc7ca8b112ed8c6ade72 (diff) | |
download | ocaml-4fabf7b6b613eb9e5bf8a027ce376beda89dc3d5.tar.gz |
Ajout de l'include stack.h.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@557 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'asmrun/stack.h')
-rw-r--r-- | asmrun/stack.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/asmrun/stack.h b/asmrun/stack.h new file mode 100644 index 0000000000..970a9e742c --- /dev/null +++ b/asmrun/stack.h @@ -0,0 +1,56 @@ +/***********************************************************************/ +/* */ +/* Caml Special Light */ +/* */ +/* Xavier Leroy, projet Cristal, INRIA Rocquencourt */ +/* */ +/* Copyright 1995 Institut National de Recherche en Informatique et */ +/* Automatique. Distributed only by permission. */ +/* */ +/***********************************************************************/ + +/* $Id$ */ + +/* Machine-dependent macros to access the stack frames. */ + +#ifndef _stack_ +#define _stack_ + + +#ifdef TARGET_alpha +#define Saved_return_address(sp) *((long *)(sp - 8)) +#define Already_scanned(sp, retaddr) (retaddr & 1) +#define Mark_scanned(sp, retaddr) (*((long *)(sp - 8)) = retaddr | 1) +#define Mask_already_scanned(retaddr) (retaddr & ~1) +#define Callback_link(sp) ((struct callback_link *)sp) +#endif + +#ifdef TARGET_sparc +#define Saved_return_address(sp) *((long *)(sp + 92)) +#define Already_scanned(sp, retaddr) (retaddr & 1) +#define Mark_scanned(sp, retaddr) (*((long *)(sp + 92)) = retaddr | 1) +#define Mask_already_scanned(retaddr) (retaddr & ~1) +#define Callback_link(sp) ((struct callback_link *)(sp + 96)) +#endif + +#ifdef TARGET_i386 +#define Saved_return_address(sp) *((long *)(sp - 4)) +#endif + +#ifdef TARGET_mips +#define Saved_return_address(sp) *((long *)(sp - 4)) +#define Already_scanned(sp, retaddr) (retaddr & 1) +#define Mark_scanned(sp, retaddr) (*((long *)(sp - 4)) = retaddr | 1) +#define Mask_already_scanned(retaddr) (retaddr & ~1) +#endif + +#ifdef TARGET_hppa +#define Stack_grows_upwards +#define Saved_return_address(sp) *((long *)sp) +#define Already_scanned(sp, retaddr) (retaddr & 0x80000000) +#define Mark_scanned(sp, retaddr) (*((long *)sp) = retaddr | 0x80000000) +#define Mask_already_scanned(retaddr) (retaddr & ~0x80000000) +#endif + + +#endif /* _stack_ */ |