diff --git a/src/code/sparc.c b/src/code/sparc.c
index 50866eb44fee5be389705b93194beb2770d07ec6..0a071ef31a9545b0e5958056651b22de54c13b18 100644
--- a/src/code/sparc.c
+++ b/src/code/sparc.c
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: sparc.c,v 1.41 2005/06/17 16:56:08 grubba Exp $
+|| $Id: sparc.c,v 1.42 2005/06/20 14:17:04 grubba Exp $
 */
 
 /*
@@ -644,9 +644,15 @@ static void low_ins_call(void *addr, int delay_ok, int i_flags)
        *       (Sparc Architecture Manual V9 p149.)
        */
 
+#ifdef PIKE_OPCODE_SPARC64
+      /* stx %o7, [ %pike_fp, %offsetof(pike_frame, pc) ] */
+      add_to_program(0xc0702000|(SPARC_REG_O7<<25)|(SPARC_REG_PIKE_FP<<14)|
+		     OFFSETOF(pike_frame, pc));
+#else /* !PIKE_OPCODE_SPARC64 */
       /* stw %o7, [ %pike_fp, %offsetof(pike_frame, pc) ] */
       add_to_program(0xc0202000|(SPARC_REG_O7<<25)|(SPARC_REG_PIKE_FP<<14)|
 		     OFFSETOF(pike_frame, pc));
+#endif /* PIKE_OPCODE_SPARC64 */
       
       delay_ok = 1;
     }