]> granicus.if.org Git - gc/commitdiff
2006-02-10 Hans Boehm <hans.boehm@hp.com>
authorhboehm <hboehm>
Sat, 11 Feb 2006 02:27:31 +0000 (02:27 +0000)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 26 Jul 2011 17:06:35 +0000 (21:06 +0400)
* powerpc_darwin_mach_dep.s: Add ppc64 support (imported from gcc).
* darwin_stop_world.c, misc.c, doc/README.changes,
include/private/gc_priv.h, include/private/gcconfig.h:
minor updates from gcc.

darwin_stop_world.c
doc/README.changes
include/private/gc_priv.h
include/private/gcconfig.h
misc.c
powerpc_darwin_mach_dep.s

index 87484cc8029f2537c233b678ec86da9a8f2e224a..f49a22b9eb5d22ea27aab111258335d946cd7a3e 100644 (file)
@@ -1,5 +1,7 @@
 #include "private/pthread_support.h"
 
+/* This probably needs more porting work to ppc64. */
+
 # if defined(GC_DARWIN_THREADS)
 
 /* From "Inside Mac OS X - Mach-O Runtime Architecture" published by Apple
index 1474c952df5b41b933d35f9de5946ac40cca7295..bf26df4740373442282f4193418b6d3c674908d0 100644 (file)
@@ -2261,6 +2261,8 @@ Since 6.6:
    (Thanks to Andreas Tobler.)
  - Add support for Darwin/X86.  (Thanks to Geoff Norton and the Mono
    developers.)
+ - Merge in some recent gcc fixes.  Add ppc64 asm code.  (Thanks to Bryce
+   McKinley and other gcj developers.)
 
 Since gc6.7:
  - Remove GC_PROTO, VOLATILE, GC_PTR, and GC_CONST.  Assume ANSI C compiler
index 9ea778bfe318ef1f41c4170b270250078d5f7c3c..fec8e08fa2fd18a4b8aa8e055bc1c685d3d06de8 100644 (file)
@@ -721,17 +721,9 @@ struct hblk {
 # ifdef LARGE_CONFIG
 #   define MAX_ROOT_SETS 4096
 # else
-#   ifdef PCR
-#     define MAX_ROOT_SETS 1024
-#   else
-#     if defined(MSWIN32) || defined(MSWINCE)
-#      define MAX_ROOT_SETS 1024
-           /* Under NT, we add only written pages, which can result    */
-           /* in many small root sets.                                 */
-#     else
-#       define MAX_ROOT_SETS 256
-#     endif
-#   endif
+    /* GCJ LOCAL: MAX_ROOT_SETS increased to permit more shared */
+    /* libraries to be loaded.                                  */ 
+#   define MAX_ROOT_SETS 1024
 # endif
 
 # define MAX_EXCLUSIONS (MAX_ROOT_SETS/4)
index 6f3565151794ea1f9ddaf6210f4b9324b0069b36..efa364c2fc5bf46732b118dafd85c704096f85cd 100644 (file)
 #       define DATAEND /* not needed */
 #   endif
 #   if defined(NETBSD)
-#     define ALIGNMENT 4
 #     define OS_TYPE "NETBSD"
+#     define ALIGNMENT 4
 #     define HEURISTIC2
 #     ifdef __ELF__
         extern int etext[];
diff --git a/misc.c b/misc.c
index e53097972ccc8eda6d011fe74e6dfbac7c000c15..daebd9b41e8ab45f50b78cfd855df4e1b909e538 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -410,8 +410,9 @@ void GC_init(void)
       BOOL (WINAPI *pfn) (LPCRITICAL_SECTION, DWORD) = NULL;
       HMODULE hK32 = GetModuleHandleA("kernel32.dll");
       if (hK32)
-          (FARPROC) pfn = GetProcAddress(hK32,
-                         "InitializeCriticalSectionAndSpinCount");
+         pfn = (BOOL (WINAPI *) (LPCRITICAL_SECTION, DWORD))
+               GetProcAddress (hK32,
+                               "InitializeCriticalSectionAndSpinCount");
       if (pfn)
           pfn(&GC_allocate_ml, 4000);
       else
index fd23110b80b511db8d95e32e6629587b7e62907b..1121ee89c6e4661853a500fd1484f2684f594059 100644 (file)
@@ -1,10 +1,21 @@
+#if defined(__ppc64__)
+#define MODE_CHOICE(x, y) y
+#else
+#define MODE_CHOICE(x, y) x
+#endif
+
+#define lgu     MODE_CHOICE(lwzu, ldu)
+
+#define g_long  MODE_CHOICE(long, quad)         /* usage is ".g_long" */
+
+#define LOG2_GPR_BYTES  MODE_CHOICE(2,3)        /* log2(GPR_BYTES) */
 
 ; GC_push_regs function. Under some optimization levels GCC will clobber
 ; some of the non-volatile registers before we get a chance to save them
 ; therefore, this cannot be inline asm.
 
 .text
-       .align 2
+       .align LOG2_GPR_BYTES
        .globl _GC_push_regs
 _GC_push_regs:
     
@@ -65,7 +76,7 @@ _GC_push_regs:
 
 .data
 .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
-       .align 2
+       .align LOG2_GPR_BYTES
 L_GC_push_one$stub:
        .indirect_symbol _GC_push_one
        mflr r0
@@ -74,12 +85,11 @@ L0$_GC_push_one:
        mflr r11
        addis r11,r11,ha16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
        mtlr r0
-       lwzu r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11)
+       lgu r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11)
        mtctr r12
        bctr
 .data
 .lazy_symbol_pointer
 L_GC_push_one$lazy_ptr:
        .indirect_symbol _GC_push_one
-       .long dyld_stub_binding_helper
-
+       .g_long dyld_stub_binding_helper