123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424 |
- 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
|