[Top][All Lists]
[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");
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/gc/mach_dep.c [Boehm-GC],
Dave Love <=