summaryrefslogtreecommitdiff
path: root/asmrun/stack.h
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>1995-12-20 10:41:22 +0000
committerXavier Leroy <xavier.leroy@inria.fr>1995-12-20 10:41:22 +0000
commit4fabf7b6b613eb9e5bf8a027ce376beda89dc3d5 (patch)
treea100005882084e1d50c11e7d52330a0e685a9fe1 /asmrun/stack.h
parentb24b1296eeb3216b3f88fc7ca8b112ed8c6ade72 (diff)
downloadocaml-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.h56
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_ */