summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsimonm <unknown>1999-03-01 17:40:55 +0000
committersimonm <unknown>1999-03-01 17:40:55 +0000
commit323ca12e5f3248b845beb3fe9582fa3d9a86edd7 (patch)
tree7dd2024751bdbd4ff4fdca058aae28bfddeb4901
parent44d304875bf091c9ac6eb337a89f4dc4d5b19a6b (diff)
downloadhaskell-323ca12e5f3248b845beb3fe9582fa3d9a86edd7.tar.gz
[project @ 1999-03-01 17:40:55 by simonm]
hppa1.1 support, first cut.
-rw-r--r--ghc/includes/TailCalls.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/ghc/includes/TailCalls.h b/ghc/includes/TailCalls.h
index ab6edd061c..87908d5fa5 100644
--- a/ghc/includes/TailCalls.h
+++ b/ghc/includes/TailCalls.h
@@ -1,5 +1,5 @@
/* -----------------------------------------------------------------------------
- * $Id: TailCalls.h,v 1.3 1999/02/05 16:02:31 simonm Exp $
+ * $Id: TailCalls.h,v 1.4 1999/03/01 17:40:55 simonm Exp $
*
* (c) The GHC Team, 1998-1999
*
@@ -89,13 +89,26 @@ register void *_procedure __asm__("$27");
#endif alpha_TARGET_ARCH
-/*
+/* -----------------------------------------------------------------------------
+ Tail calling on HP
+ -------------------------------------------------------------------------- */
+
+#ifdef hppa1_1_hp_hpux_TARGET
+
+#define JMP_(cont) \
+ do { void *_procedure = (void *)(cont); \
+ goto *_procedure; \
+ } while(0)
+
+#endif /* hppa1_1_hp_hpux_TARGET */
+
+/* -----------------------------------------------------------------------------
FUNBEGIN and FUNEND.
These are markers indicating the start and end of Real Code in a
function. All instructions between the actual start and end of the
function and these markers is shredded by the mangler.
- */
+ -------------------------------------------------------------------------- */
#ifndef FB_
#define FB_ __asm__ volatile ("--- BEGIN ---");