summaryrefslogtreecommitdiff
path: root/src/gc/env
diff options
context:
space:
mode:
authorSean Gillespie <segilles@microsoft.com>2017-10-27 14:37:54 -0700
committerGitHub <noreply@github.com>2017-10-27 14:37:54 -0700
commitbd3424913138d10f9c4fdb6176fb471e8d1ba1d7 (patch)
treeca05fccdea9a8584194b4a4acf5b7cb1aab6800f /src/gc/env
parentfb4af6c2908b633b200b556986815781f2139f4e (diff)
downloadcoreclr-bd3424913138d10f9c4fdb6176fb471e8d1ba1d7.tar.gz
coreclr-bd3424913138d10f9c4fdb6176fb471e8d1ba1d7.tar.bz2
coreclr-bd3424913138d10f9c4fdb6176fb471e8d1ba1d7.zip
[Local GC] Implement loader protocol for a standalone GC (#14663)
* First cut of the load protocol * Implement for non-standalone GC * Initial working implementation * First steps towards not using GetProcAddress when not using a standalone GC * Factor out loading routines into standalone and non-standalone cases * Remove the FEATURE_STANDALONE_GC_ONLY build * Code cleanup and comments * Comments for the version numbers * Use more appropriate type for config string * add GC_LOAD_STATUS_BEFORE_START to disambiguate failures before the start of the load and failures at the beginning of the load * FEATURE_STANDALONE_GC on by default * Implement YieldProcessor and MemoryBarrier for arm and arm64 * Remove missed FEATURE_STANDALONE_GC feature check
Diffstat (limited to 'src/gc/env')
-rw-r--r--src/gc/env/gcenv.base.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/gc/env/gcenv.base.h b/src/gc/env/gcenv.base.h
index 6c878c1c21..734b46fd3d 100644
--- a/src/gc/env/gcenv.base.h
+++ b/src/gc/env/gcenv.base.h
@@ -11,8 +11,6 @@
#include <intrin.h>
#endif // _MSC_VER
-#define FEATURE_REDHAWK 1
-
#define REDHAWK_PALIMPORT extern "C"
#define REDHAWK_PALAPI __stdcall
@@ -208,6 +206,16 @@ typedef DWORD (WINAPI *PTHREAD_START_ROUTINE)(void* lpThreadParameter);
#endif // defined(__i386__) || defined(__x86_64__)
+#ifdef __aarch64__
+ #define YieldProcessor() asm volatile ("yield")
+ #define MemoryBarrier __sync_synchronize
+#endif // __aarch64__
+
+#ifdef __arm__
+ #define YieldProcessor()
+ #define MemoryBarrier __sync_synchronize
+#endif // __arm__
+
#endif // _MSC_VER
#ifdef _MSC_VER