[project @ 1999-03-01 17:40:55 by simonm]
authorsimonm <unknown>
Mon, 1 Mar 1999 17:40:55 +0000 (17:40 +0000)
committersimonm <unknown>
Mon, 1 Mar 1999 17:40:55 +0000 (17:40 +0000)
hppa1.1 support, first cut.

ghc/includes/TailCalls.h

index ab6edd0..87908d5 100644 (file)
@@ -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 ---");