]> granicus.if.org Git - python/commitdiff
Ported to CW8
authorJack Jansen <jack.jansen@cwi.nl>
Tue, 20 Feb 1996 16:26:19 +0000 (16:26 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Tue, 20 Feb 1996 16:26:19 +0000 (16:26 +0000)
Mac/mwerks/macuseshlstart.c

index d26a89fd3a15cbf6847bb20affaa7fbfbc24026f..32b808a50a7cb3c84bbecb14da13ccb7abce741c 100644 (file)
@@ -7,15 +7,30 @@
 
 #include <setjmp.h>
 
+#ifdef PRE_CW8
 extern jmp_buf __program_exit;                 /*      exit() does a longjmp() to here         */
 extern void (*__atexit_hook)(void);            /*      atexit()  sets this up if it is ever called     */
 extern void (*___atexit_hook)(void);   /*      _atexit() sets this up if it is ever called     */
 extern int __aborting;                                 /*      abort() sets this and longjmps to __program_exit        */
+#endif
+
+/*
+ *     clear_stackframe_backlink       -       set 0(SP) to 0
+ *
+ */
+
+static asm void clear_stackframe_backlink(void)
+{
+               li              r3,0
+               stw             r3,0(SP)
+               blr
+}
 
 void __start(void)
 {
        char *argv = 0;
        
+#ifdef PRE_CW8
        if (setjmp(__program_exit) == 0) {      //      set up jmp_buf for exit()
                main(0, &argv);                         //      call main(argc, argv)
                if (__atexit_hook)
@@ -26,4 +41,9 @@ void __start(void)
                        ___atexit_hook();                       //      call _atexit() procs
        }
 //     ExitToShell();
+#else
+       clear_stackframe_backlink();
+       main(0, &argv);
+       exit(0);
+#endif
 }