emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/gc/mach_dep.c [Boehm-GC]


From: Dave Love
Subject: [Emacs-diffs] Changes to emacs/gc/mach_dep.c [Boehm-GC]
Date: Mon, 16 Jun 2003 11:41:53 -0400

Index: emacs/gc/mach_dep.c
diff -c emacs/gc/mach_dep.c:1.2.2.1 emacs/gc/mach_dep.c:1.2.2.2
*** emacs/gc/mach_dep.c:1.2.2.1 Thu Jun  5 14:23:04 2003
--- emacs/gc/mach_dep.c Mon Jun 16 11:41:51 2003
***************
*** 74,80 ****
  /* on your architecture.  Run the test_setjmp program to see whether    */
  /* there is any chance it will work.                                    */
  
! #ifndef USE_GENERIC_PUSH_REGS
  void GC_push_regs()
  {
  #       ifdef RT
--- 74,81 ----
  /* on your architecture.  Run the test_setjmp program to see whether    */
  /* there is any chance it will work.                                    */
  
! #if !defined(USE_GENERIC_PUSH_REGS) && !defined(USE_ASM_PUSH_REGS)
! #undef HAVE_PUSH_REGS
  void GC_push_regs()
  {
  #       ifdef RT
***************
*** 91,96 ****
--- 92,98 ----
          asm("pushl r8");      asm("calls $1,_GC_push_one");
          asm("pushl r7");      asm("calls $1,_GC_push_one");
          asm("pushl r6");      asm("calls $1,_GC_push_one");
+ #       define HAVE_PUSH_REGS
  #       endif
  #       if defined(M68K) && (defined(SUNOS4) || defined(NEXT))
        /*  M68K SUNOS - could be replaced by generic code */
***************
*** 113,118 ****
--- 115,121 ----
          asm("movl d7,sp@");   asm("jbsr _GC_push_one");
  
          asm("addqw #0x4,sp");         /* put stack back where it was  */
+ #       define HAVE_PUSH_REGS
  #       endif
  
  #       if defined(M68K) && defined(HP)
***************
*** 135,140 ****
--- 138,144 ----
          asm("mov.l %d7,(%sp)"); asm("jsr _GC_push_one");
  
          asm("addq.w &0x4,%sp");       /* put stack back where it was  */
+ #       define HAVE_PUSH_REGS
  #       endif /* M68K HP */
  
  #     if defined(M68K) && defined(AMIGA)
***************
*** 158,163 ****
--- 162,168 ----
          asm("mov.l %d7,(%sp)"); asm("jsr _GC_push_one");
  
          asm("addq.w &0x4,%sp");       /* put stack back where it was  */
+ #       define HAVE_PUSH_REGS
  #        else /* !__GNUC__ */
          GC_push_one(getreg(REG_A2));
          GC_push_one(getreg(REG_A3));
***************
*** 174,179 ****
--- 179,185 ----
          GC_push_one(getreg(REG_D5));
          GC_push_one(getreg(REG_D6));
          GC_push_one(getreg(REG_D7));
+ #       define HAVE_PUSH_REGS
  #      endif /* !__GNUC__ */
  #       endif /* AMIGA */
  
***************
*** 196,205 ****
--- 202,213 ----
                PushMacReg(d7);
                add.w   #4,sp                   ; fix stack.
          }
+ #       define HAVE_PUSH_REGS
  #       undef PushMacReg
  #     endif /* THINK_C */
  #     if defined(__MWERKS__)
          PushMacRegisters();
+ #       define HAVE_PUSH_REGS
  #     endif   /* __MWERKS__ */
  #   endif     /* MACOS */
  
***************
*** 222,227 ****
--- 230,236 ----
          asm("pushl %esi");  asm("call _GC_push_one"); asm("addl $4,%esp");
          asm("pushl %edi");  asm("call _GC_push_one"); asm("addl $4,%esp");
          asm("pushl %ebx");  asm("call _GC_push_one"); asm("addl $4,%esp");
+ #       define HAVE_PUSH_REGS
  #       endif
  
  #     if ( defined(I386) && defined(LINUX) && defined(__ELF__) ) \
***************
*** 244,249 ****
--- 253,259 ----
          asm("pushl %esi; call GC_push_one; addl $4,%esp");
          asm("pushl %edi; call GC_push_one; addl $4,%esp");
          asm("pushl %ebx; call GC_push_one; addl $4,%esp");
+ #       define HAVE_PUSH_REGS
  #     endif
  
  #     if ( defined(I386) && defined(BEOS) && defined(__ELF__) )
***************
*** 255,260 ****
--- 265,271 ----
          asm("pushl %esi; call GC_push_one; addl $4,%esp");
          asm("pushl %edi; call GC_push_one; addl $4,%esp");
          asm("pushl %ebx; call GC_push_one; addl $4,%esp");
+ #       define HAVE_PUSH_REGS
  #       endif
  
  #       if defined(I386) && defined(MSWIN32) && !defined(__MINGW32__) \
***************
*** 281,286 ****
--- 292,298 ----
          __asm  push edi
          __asm  call GC_push_one
          __asm  add esp,4
+ #       define HAVE_PUSH_REGS
  #       endif
  
  #       if defined(I386) && (defined(SVR4) || defined(SCO) || 
defined(SCO_ELF))
***************
*** 292,297 ****
--- 304,310 ----
          asm("pushl %ebp");  asm("call GC_push_one"); asm("addl $4,%esp");
          asm("pushl %esi");  asm("call GC_push_one"); asm("addl $4,%esp");
          asm("pushl %edi");  asm("call GC_push_one"); asm("addl $4,%esp");
+ #       define HAVE_PUSH_REGS
  #       endif
  
  #       ifdef NS32K
***************
*** 300,313 ****
          asm ("movd r5, tos"); asm ("bsr ?_GC_push_one"); asm ("adjspb $-4");
          asm ("movd r6, tos"); asm ("bsr ?_GC_push_one"); asm ("adjspb $-4");
          asm ("movd r7, tos"); asm ("bsr ?_GC_push_one"); asm ("adjspb $-4");
  #       endif
  
  #       if defined(SPARC)
!         {
!             word GC_save_regs_in_stack();
!             
!             GC_save_regs_ret_val = GC_save_regs_in_stack();
!         }
  #       endif
  
  #     ifdef RT
--- 313,324 ----
          asm ("movd r5, tos"); asm ("bsr ?_GC_push_one"); asm ("adjspb $-4");
          asm ("movd r6, tos"); asm ("bsr ?_GC_push_one"); asm ("adjspb $-4");
          asm ("movd r7, tos"); asm ("bsr ?_GC_push_one"); asm ("adjspb $-4");
+ #       define HAVE_PUSH_REGS
  #       endif
  
  #       if defined(SPARC)
!         GC_save_regs_ret_val = GC_save_regs_in_stack();
! #       define HAVE_PUSH_REGS
  #       endif
  
  #     ifdef RT
***************
*** 323,328 ****
--- 334,340 ----
            asm("cas r11, r13, r0"); GC_push_one(TMP_SP); /* through */
            asm("cas r11, r14, r0"); GC_push_one(TMP_SP); /* r15 */
            asm("cas r11, r15, r0"); GC_push_one(TMP_SP);
+ #         define HAVE_PUSH_REGS
  #       endif
  
  #       if defined(M68K) && defined(SYSV)
***************
*** 346,351 ****
--- 358,364 ----
          asm("movl %d7,%sp@"); asm("jbsr GC_push_one");
    
          asm("addqw #0x4,%sp");        /* put stack back where it was  */
+ #       define HAVE_PUSH_REGS
  #        else /* !__GNUC__*/
          asm("subq.w &0x4,%sp");       /* allocate word on top of stack */
    
***************
*** 363,368 ****
--- 376,382 ----
          asm("mov.l %d7,(%sp)"); asm("jsr GC_push_one");
    
          asm("addq.w &0x4,%sp");       /* put stack back where it was  */
+ #       define HAVE_PUSH_REGS
  #        endif /* !__GNUC__ */
  #       endif /* M68K/SYSV */
  
***************
*** 372,392 ****
            extern int *__libc_stack_end;
  
            GC_push_all_stack (sp, __libc_stack_end);
          }
  #     endif
  
        /* other machines... */
! #       if !defined(M68K) && !defined(VAX) && !defined(RT) 
! #     if !defined(SPARC) && !defined(I386) && !defined(NS32K)
! #     if !defined(POWERPC) && !defined(UTS4) 
! #       if !defined(PJ) && !(defined(MIPS) && defined(LINUX))
!           --> bad news <--
! #     endif
! #       endif
! #       endif
  #       endif
  }
! #endif /* !USE_GENERIC_PUSH_REGS */
  
  #if defined(USE_GENERIC_PUSH_REGS)
  void GC_generic_push_regs(cold_gc_frame)
--- 386,404 ----
            extern int *__libc_stack_end;
  
            GC_push_all_stack (sp, __libc_stack_end);
+ #         define HAVE_PUSH_REGS
+           /* Isn't this redundant with the code to push the stack? */
          }
  #     endif
  
        /* other machines... */
! #       if !defined(HAVE_PUSH_REGS)
!           --> We just generated an empty GC_push_regs, which
!           --> is almost certainly broken.  Try defining
!           --> USE_GENERIC_PUSH_REGS instead.
  #       endif
  }
! #endif /* !USE_GENERIC_PUSH_REGS && !USE_ASM_PUSH_REGS */
  
  #if defined(USE_GENERIC_PUSH_REGS)
  void GC_generic_push_regs(cold_gc_frame)
***************
*** 428,435 ****
              /* needed on IA64, since some non-windowed registers are  */
              /* preserved.                                             */
              {
-               word GC_save_regs_in_stack();
-             
                GC_save_regs_ret_val = GC_save_regs_in_stack();
                /* On IA64 gcc, could use __builtin_ia64_flushrs() and  */
                /* __builtin_ia64_flushrs().  The latter will be done   */
--- 440,445 ----
***************
*** 446,452 ****
  /* the stack. Return sp.                                              */
  # ifdef SPARC
      asm("     .seg    \"text\"");
! #   ifdef SVR4
        asm("   .globl  GC_save_regs_in_stack");
        asm("GC_save_regs_in_stack:");
        asm("   .type GC_save_regs_in_stack,#function");
--- 456,462 ----
  /* the stack. Return sp.                                              */
  # ifdef SPARC
      asm("     .seg    \"text\"");
! #   if defined(SVR4) || defined(NETBSD)
        asm("   .globl  GC_save_regs_in_stack");
        asm("GC_save_regs_in_stack:");
        asm("   .type GC_save_regs_in_stack,#function");




reply via email to

[Prev in Thread] Current Thread [Next in Thread]