+++ /dev/null
-Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
-
-From 5e756d4d8df2949cb3b6e51532d3016cbb276fd7 Mon Sep 17 00:00:00 2001
-From: Ivan Maidanski <ivmai@mail.ru>
-Date: Fri, 27 Feb 2015 21:32:22 +0300
-Subject: [PATCH 004/135] Revert "Move asm machine-dependent files to 'src'
- folder" (partly)
-
-Asm files moved back to base folder to avoid build issues (reported
-for NetBSD and Solaris on Sparc). Alternative way is to adjust
-configure.ac and Makefile.am properly but it requires more efforts
-(including testing).
-
-* Makefile.am (EXTRA_libgc_la_SOURCES): Remove "src/" prefix.
-* Makefile.direct (SRCS, mach_dep.o): Likewise.
-* src/ia64_save_regs_in_stack.s: Move to base folder.
-* src/sparc_mach_dep.S: Likewise.
-* src/sparc_netbsd_mach_dep.s: Likewise.
-* src/sparc_sunos4_mach_dep.s: Likewise.
-
----
- Makefile.am | 4 +--
- Makefile.direct | 20 +++++++-------
- ia64_save_regs_in_stack.s | 11 ++++++++
- sparc_mach_dep.S | 61 +++++++++++++++++++++++++++++++++++++++++
- sparc_netbsd_mach_dep.s | 34 +++++++++++++++++++++++
- sparc_sunos4_mach_dep.s | 32 +++++++++++++++++++++
- src/ia64_save_regs_in_stack.s | 11 --------
- src/sparc_mach_dep.S | 61 -----------------------------------------
- src/sparc_netbsd_mach_dep.s | 34 -----------------------
- src/sparc_sunos4_mach_dep.s | 32 ---------------------
- 11 files changed, 151 insertions(+), 151 deletions(-)
- create mode 100644 ia64_save_regs_in_stack.s
- create mode 100644 sparc_mach_dep.S
- create mode 100644 sparc_netbsd_mach_dep.s
- create mode 100644 sparc_sunos4_mach_dep.s
- delete mode 100644 src/ia64_save_regs_in_stack.s
- delete mode 100644 src/sparc_mach_dep.S
- delete mode 100644 src/sparc_netbsd_mach_dep.s
- delete mode 100644 src/sparc_sunos4_mach_dep.s
-
-diff --git a/Makefile.am b/Makefile.am
-index f8057db..1688be2 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -100,8 +100,8 @@ libgc_la_LIBADD = @addobjs@ $(THREADDLLIBS) $(UNWINDLIBS) $(ATOMIC_OPS_LIBS)
- libgc_la_DEPENDENCIES = @addobjs@
- libgc_la_LDFLAGS = $(extra_ldflags_libgc) -version-info 1:3:0 -no-undefined
-
--EXTRA_libgc_la_SOURCES = src/ia64_save_regs_in_stack.s src/sparc_mach_dep.S \
-- src/sparc_netbsd_mach_dep.s src/sparc_sunos4_mach_dep.s
-+EXTRA_libgc_la_SOURCES = ia64_save_regs_in_stack.s sparc_mach_dep.S \
-+ sparc_netbsd_mach_dep.s sparc_sunos4_mach_dep.s
-
-
- # C++ Interface
-diff --git a/Makefile.direct b/Makefile.direct
-index d64598b..8ab80e8 100644
---- a/Makefile.direct
-+++ b/Makefile.direct
-@@ -108,8 +108,8 @@ SRCS= $(CSRCS) \
- include/gc_config_macros.h include/private/pthread_support.h \
- include/private/pthread_stop_world.h include/private/darwin_semaphore.h \
- include/private/darwin_stop_world.h include/private/thread_local_alloc.h \
-- src/ia64_save_regs_in_stack.s src/sparc_mach_dep.S \
-- src/sparc_netbsd_mach_dep.s src/sparc_sunos4_mach_dep.s $(CORD_SRCS)
-+ ia64_save_regs_in_stack.s sparc_mach_dep.S \
-+ sparc_netbsd_mach_dep.s sparc_sunos4_mach_dep.s $(CORD_SRCS)
-
- DOC_FILES= README.QUICK TODO doc/README.Mac doc/README.OS2 \
- doc/README.amiga doc/README.cords doc/debugging.html \
-@@ -309,17 +309,17 @@ dyn_test:
- # gcc -shared -Wl,-soname=libgc.so.0 -o libgc.so.0 $(LIBOBJS) dyn_load.lo
- # touch liblinuxgc.so
-
--mach_dep.o: $(srcdir)/mach_dep.c $(srcdir)/src/sparc_mach_dep.S \
-- $(srcdir)/src/sparc_sunos4_mach_dep.s \
-- $(srcdir)/src/ia64_save_regs_in_stack.s \
-- $(srcdir)/src/sparc_netbsd_mach_dep.s $(UTILS)
-+mach_dep.o: $(srcdir)/mach_dep.c $(srcdir)/sparc_mach_dep.S \
-+ $(srcdir)/sparc_sunos4_mach_dep.s \
-+ $(srcdir)/ia64_save_regs_in_stack.s \
-+ $(srcdir)/sparc_netbsd_mach_dep.s $(UTILS)
- rm -f mach_dep.o
-- ./if_mach SPARC SOLARIS $(CC) -c -o mach_dep2.o $(srcdir)/src/sparc_mach_dep.S
-- ./if_mach SPARC OPENBSD $(AS) -o mach_dep2.o $(srcdir)/src/sparc_sunos4_mach_dep.s
-- ./if_mach SPARC NETBSD $(AS) -o mach_dep2.o $(srcdir)/src/sparc_netbsd_mach_dep.s
-+ ./if_mach SPARC SOLARIS $(CC) -c -o mach_dep2.o $(srcdir)/sparc_mach_dep.S
-+ ./if_mach SPARC OPENBSD $(AS) -o mach_dep2.o $(srcdir)/sparc_sunos4_mach_dep.s
-+ ./if_mach SPARC NETBSD $(AS) -o mach_dep2.o $(srcdir)/sparc_netbsd_mach_dep.s
- ./if_mach SPARC "" $(CC) -c -o mach_dep1.o $(SPECIALCFLAGS) $(srcdir)/mach_dep.c
- ./if_mach SPARC "" ld -r -o mach_dep.o mach_dep1.o mach_dep2.o
-- ./if_mach IA64 "" as $(AS_ABI_FLAG) -o ia64_save_regs_in_stack.o $(srcdir)/src/ia64_save_regs_in_stack.s
-+ ./if_mach IA64 "" as $(AS_ABI_FLAG) -o ia64_save_regs_in_stack.o $(srcdir)/ia64_save_regs_in_stack.s
- ./if_mach IA64 "" $(CC) -c -o mach_dep1.o $(SPECIALCFLAGS) $(srcdir)/mach_dep.c
- ./if_mach IA64 "" ld -r -o mach_dep.o mach_dep1.o ia64_save_regs_in_stack.o
- ./if_not_there mach_dep.o $(CC) -c $(SPECIALCFLAGS) $(srcdir)/mach_dep.c
-diff --git a/ia64_save_regs_in_stack.s b/ia64_save_regs_in_stack.s
-new file mode 100644
-index 0000000..2b81edf
---- /dev/null
-+++ b/ia64_save_regs_in_stack.s
-@@ -0,0 +1,11 @@
-+ .text
-+ .align 16
-+ .global GC_save_regs_in_stack
-+ .proc GC_save_regs_in_stack
-+GC_save_regs_in_stack:
-+ .body
-+ flushrs
-+ ;;
-+ mov r8=ar.bsp
-+ br.ret.sptk.few rp
-+ .endp GC_save_regs_in_stack
-diff --git a/sparc_mach_dep.S b/sparc_mach_dep.S
-new file mode 100644
-index 0000000..d204dc4
---- /dev/null
-+++ b/sparc_mach_dep.S
-@@ -0,0 +1,61 @@
-+! SPARCompiler 3.0 and later apparently no longer handles
-+! asm outside functions. So we need a separate .s file
-+! This is only set up for SunOS 5, not SunOS 4.
-+! Assumes this is called before the stack contents are
-+! examined.
-+
-+ .seg "text"
-+ .globl GC_save_regs_in_stack
-+GC_save_regs_in_stack:
-+#if defined(__arch64__) || defined(__sparcv9)
-+ save %sp,-128,%sp
-+ flushw
-+ ret
-+ restore %sp,2047+128,%o0
-+#else /* 32 bit SPARC */
-+ ta 0x3 ! ST_FLUSH_WINDOWS
-+ mov %sp,%o0
-+ retl
-+ nop
-+#endif /* 32 bit SPARC */
-+.GC_save_regs_in_stack_end:
-+ .size GC_save_regs_in_stack,.GC_save_regs_in_stack_end-GC_save_regs_in_stack
-+
-+! GC_clear_stack_inner(arg, limit) clears stack area up to limit and
-+! returns arg. Stack clearing is crucial on SPARC, so we supply
-+! an assembly version that s more careful. Assumes limit is hotter
-+! than sp, and limit is 8 byte aligned.
-+ .globl GC_clear_stack_inner
-+GC_clear_stack_inner:
-+#if defined(__arch64__) || defined(__sparcv9)
-+ mov %sp,%o2 ! Save sp
-+ add %sp,2047-8,%o3 ! p = sp+bias-8
-+ add %o1,-2047-192,%sp ! Move sp out of the way,
-+ ! so that traps still work.
-+ ! Includes some extra words
-+ ! so we can be sloppy below.
-+loop:
-+ stx %g0,[%o3] ! *(long *)p = 0
-+ cmp %o3,%o1
-+ bgu,pt %xcc, loop ! if (p > limit) goto loop
-+ add %o3,-8,%o3 ! p -= 8 (delay slot)
-+ retl
-+ mov %o2,%sp ! Restore sp., delay slot
-+#else /* 32 bit SPARC */
-+ mov %sp,%o2 ! Save sp
-+ add %sp,-8,%o3 ! p = sp-8
-+ clr %g1 ! [g0,g1] = 0
-+ add %o1,-0x60,%sp ! Move sp out of the way,
-+ ! so that traps still work.
-+ ! Includes some extra words
-+ ! so we can be sloppy below.
-+loop:
-+ std %g0,[%o3] ! *(long long *)p = 0
-+ cmp %o3,%o1
-+ bgu loop ! if (p > limit) goto loop
-+ add %o3,-8,%o3 ! p -= 8 (delay slot)
-+ retl
-+ mov %o2,%sp ! Restore sp., delay slot
-+#endif /* 32 bit SPARC */
-+.GC_clear_stack_inner_end:
-+ .size GC_clear_stack_inner,.GC_clear_stack_inner_end-GC_clear_stack_inner
-diff --git a/sparc_netbsd_mach_dep.s b/sparc_netbsd_mach_dep.s
-new file mode 100644
-index 0000000..14feb15
---- /dev/null
-+++ b/sparc_netbsd_mach_dep.s
-@@ -0,0 +1,34 @@
-+! SPARCompiler 3.0 and later apparently no longer handles
-+! asm outside functions. So we need a separate .s file
-+! This is only set up for SunOS 4.
-+! Assumes this is called before the stack contents are
-+! examined.
-+
-+#include "machine/asm.h"
-+
-+ .seg "text"
-+ .globl _C_LABEL(GC_save_regs_in_stack)
-+ .globl _C_LABEL(GC_push_regs)
-+_C_LABEL(GC_save_regs_in_stack):
-+_C_LABEL(GC_push_regs):
-+ ta 0x3 ! ST_FLUSH_WINDOWS
-+ mov %sp,%o0
-+ retl
-+ nop
-+
-+ .globl _C_LABEL(GC_clear_stack_inner)
-+_C_LABEL(GC_clear_stack_inner):
-+ mov %sp,%o2 ! Save sp
-+ add %sp,-8,%o3 ! p = sp-8
-+ clr %g1 ! [g0,g1] = 0
-+ add %o1,-0x60,%sp ! Move sp out of the way,
-+ ! so that traps still work.
-+ ! Includes some extra words
-+ ! so we can be sloppy below.
-+loop:
-+ std %g0,[%o3] ! *(long long *)p = 0
-+ cmp %o3,%o1
-+ bgu loop ! if (p > limit) goto loop
-+ add %o3,-8,%o3 ! p -= 8 (delay slot)
-+ retl
-+ mov %o2,%sp ! Restore sp., delay slot
-diff --git a/sparc_sunos4_mach_dep.s b/sparc_sunos4_mach_dep.s
-new file mode 100644
-index 0000000..923f5ea
---- /dev/null
-+++ b/sparc_sunos4_mach_dep.s
-@@ -0,0 +1,32 @@
-+! SPARCompiler 3.0 and later apparently no longer handles
-+! asm outside functions. So we need a separate .s file
-+! This is only set up for SunOS 4.
-+! Assumes this is called before the stack contents are
-+! examined.
-+
-+ .seg "text"
-+ .globl _GC_save_regs_in_stack
-+ .globl _GC_push_regs
-+_GC_save_regs_in_stack:
-+_GC_push_regs:
-+ ta 0x3 ! ST_FLUSH_WINDOWS
-+ mov %sp,%o0
-+ retl
-+ nop
-+
-+ .globl _GC_clear_stack_inner
-+_GC_clear_stack_inner:
-+ mov %sp,%o2 ! Save sp
-+ add %sp,-8,%o3 ! p = sp-8
-+ clr %g1 ! [g0,g1] = 0
-+ add %o1,-0x60,%sp ! Move sp out of the way,
-+ ! so that traps still work.
-+ ! Includes some extra words
-+ ! so we can be sloppy below.
-+loop:
-+ std %g0,[%o3] ! *(long long *)p = 0
-+ cmp %o3,%o1
-+ bgu loop ! if (p > limit) goto loop
-+ add %o3,-8,%o3 ! p -= 8 (delay slot)
-+ retl
-+ mov %o2,%sp ! Restore sp., delay slot
-diff --git a/src/ia64_save_regs_in_stack.s b/src/ia64_save_regs_in_stack.s
-deleted file mode 100644
-index 2b81edf..0000000
---- a/src/ia64_save_regs_in_stack.s
-+++ /dev/null
-@@ -1,11 +0,0 @@
-- .text
-- .align 16
-- .global GC_save_regs_in_stack
-- .proc GC_save_regs_in_stack
--GC_save_regs_in_stack:
-- .body
-- flushrs
-- ;;
-- mov r8=ar.bsp
-- br.ret.sptk.few rp
-- .endp GC_save_regs_in_stack
-diff --git a/src/sparc_mach_dep.S b/src/sparc_mach_dep.S
-deleted file mode 100644
-index d204dc4..0000000
---- a/src/sparc_mach_dep.S
-+++ /dev/null
-@@ -1,61 +0,0 @@
--! SPARCompiler 3.0 and later apparently no longer handles
--! asm outside functions. So we need a separate .s file
--! This is only set up for SunOS 5, not SunOS 4.
--! Assumes this is called before the stack contents are
--! examined.
--
-- .seg "text"
-- .globl GC_save_regs_in_stack
--GC_save_regs_in_stack:
--#if defined(__arch64__) || defined(__sparcv9)
-- save %sp,-128,%sp
-- flushw
-- ret
-- restore %sp,2047+128,%o0
--#else /* 32 bit SPARC */
-- ta 0x3 ! ST_FLUSH_WINDOWS
-- mov %sp,%o0
-- retl
-- nop
--#endif /* 32 bit SPARC */
--.GC_save_regs_in_stack_end:
-- .size GC_save_regs_in_stack,.GC_save_regs_in_stack_end-GC_save_regs_in_stack
--
--! GC_clear_stack_inner(arg, limit) clears stack area up to limit and
--! returns arg. Stack clearing is crucial on SPARC, so we supply
--! an assembly version that s more careful. Assumes limit is hotter
--! than sp, and limit is 8 byte aligned.
-- .globl GC_clear_stack_inner
--GC_clear_stack_inner:
--#if defined(__arch64__) || defined(__sparcv9)
-- mov %sp,%o2 ! Save sp
-- add %sp,2047-8,%o3 ! p = sp+bias-8
-- add %o1,-2047-192,%sp ! Move sp out of the way,
-- ! so that traps still work.
-- ! Includes some extra words
-- ! so we can be sloppy below.
--loop:
-- stx %g0,[%o3] ! *(long *)p = 0
-- cmp %o3,%o1
-- bgu,pt %xcc, loop ! if (p > limit) goto loop
-- add %o3,-8,%o3 ! p -= 8 (delay slot)
-- retl
-- mov %o2,%sp ! Restore sp., delay slot
--#else /* 32 bit SPARC */
-- mov %sp,%o2 ! Save sp
-- add %sp,-8,%o3 ! p = sp-8
-- clr %g1 ! [g0,g1] = 0
-- add %o1,-0x60,%sp ! Move sp out of the way,
-- ! so that traps still work.
-- ! Includes some extra words
-- ! so we can be sloppy below.
--loop:
-- std %g0,[%o3] ! *(long long *)p = 0
-- cmp %o3,%o1
-- bgu loop ! if (p > limit) goto loop
-- add %o3,-8,%o3 ! p -= 8 (delay slot)
-- retl
-- mov %o2,%sp ! Restore sp., delay slot
--#endif /* 32 bit SPARC */
--.GC_clear_stack_inner_end:
-- .size GC_clear_stack_inner,.GC_clear_stack_inner_end-GC_clear_stack_inner
-diff --git a/src/sparc_netbsd_mach_dep.s b/src/sparc_netbsd_mach_dep.s
-deleted file mode 100644
-index 14feb15..0000000
---- a/src/sparc_netbsd_mach_dep.s
-+++ /dev/null
-@@ -1,34 +0,0 @@
--! SPARCompiler 3.0 and later apparently no longer handles
--! asm outside functions. So we need a separate .s file
--! This is only set up for SunOS 4.
--! Assumes this is called before the stack contents are
--! examined.
--
--#include "machine/asm.h"
--
-- .seg "text"
-- .globl _C_LABEL(GC_save_regs_in_stack)
-- .globl _C_LABEL(GC_push_regs)
--_C_LABEL(GC_save_regs_in_stack):
--_C_LABEL(GC_push_regs):
-- ta 0x3 ! ST_FLUSH_WINDOWS
-- mov %sp,%o0
-- retl
-- nop
--
-- .globl _C_LABEL(GC_clear_stack_inner)
--_C_LABEL(GC_clear_stack_inner):
-- mov %sp,%o2 ! Save sp
-- add %sp,-8,%o3 ! p = sp-8
-- clr %g1 ! [g0,g1] = 0
-- add %o1,-0x60,%sp ! Move sp out of the way,
-- ! so that traps still work.
-- ! Includes some extra words
-- ! so we can be sloppy below.
--loop:
-- std %g0,[%o3] ! *(long long *)p = 0
-- cmp %o3,%o1
-- bgu loop ! if (p > limit) goto loop
-- add %o3,-8,%o3 ! p -= 8 (delay slot)
-- retl
-- mov %o2,%sp ! Restore sp., delay slot
-diff --git a/src/sparc_sunos4_mach_dep.s b/src/sparc_sunos4_mach_dep.s
-deleted file mode 100644
-index 923f5ea..0000000
---- a/src/sparc_sunos4_mach_dep.s
-+++ /dev/null
-@@ -1,32 +0,0 @@
--! SPARCompiler 3.0 and later apparently no longer handles
--! asm outside functions. So we need a separate .s file
--! This is only set up for SunOS 4.
--! Assumes this is called before the stack contents are
--! examined.
--
-- .seg "text"
-- .globl _GC_save_regs_in_stack
-- .globl _GC_push_regs
--_GC_save_regs_in_stack:
--_GC_push_regs:
-- ta 0x3 ! ST_FLUSH_WINDOWS
-- mov %sp,%o0
-- retl
-- nop
--
-- .globl _GC_clear_stack_inner
--_GC_clear_stack_inner:
-- mov %sp,%o2 ! Save sp
-- add %sp,-8,%o3 ! p = sp-8
-- clr %g1 ! [g0,g1] = 0
-- add %o1,-0x60,%sp ! Move sp out of the way,
-- ! so that traps still work.
-- ! Includes some extra words
-- ! so we can be sloppy below.
--loop:
-- std %g0,[%o3] ! *(long long *)p = 0
-- cmp %o3,%o1
-- bgu loop ! if (p > limit) goto loop
-- add %o3,-8,%o3 ! p -= 8 (delay slot)
-- retl
-- mov %o2,%sp ! Restore sp., delay slot
---
-1.7.10.4
-