summaryrefslogtreecommitdiff
path: root/src/vm/arm/memcpy.S
diff options
context:
space:
mode:
authorBen Pye <ben@curlybracket.co.uk>2015-07-01 15:10:09 +0100
committerBen Pye <ben@curlybracket.co.uk>2015-07-24 16:45:35 +0100
commit9cd8273572260317c6acc126333e5a6e56aaeb06 (patch)
treef125e83a6908151322aa20940b63c64c621c1169 /src/vm/arm/memcpy.S
parentacca43b33dcd97d1dc5d92147a3047a3bdfaf1ce (diff)
downloadcoreclr-9cd8273572260317c6acc126333e5a6e56aaeb06.tar.gz
coreclr-9cd8273572260317c6acc126333e5a6e56aaeb06.tar.bz2
coreclr-9cd8273572260317c6acc126333e5a6e56aaeb06.zip
Add ARM target for CoreCLR on Linux.
c_runtime/vprintf/test1 is disabled as casting NULL to va_list is against the C specification. Fix SetFilePointer tests on 32 bit platforms. Define _FILE_OFFSET_BITS=64 so that we have long file support on 32 bit platforms. Implement context capture/restore for ARM. Link libgcc_s before libunwind on ARM so C++ exceptions work. Translate armasm to gas syntax. Specify Thumb, VFPv3, ARMv7 for the ARM target. Add ARM configuration to mscorlib build Implement GetLogicalProcessorCacheSizeFromOS in PAL. Set UNWIND_CONTEXT_IS_UCONTEXT_T from configure check.
Diffstat (limited to 'src/vm/arm/memcpy.S')
-rw-r--r--src/vm/arm/memcpy.S37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/vm/arm/memcpy.S b/src/vm/arm/memcpy.S
new file mode 100644
index 0000000000..f5b2341c75
--- /dev/null
+++ b/src/vm/arm/memcpy.S
@@ -0,0 +1,37 @@
+//
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+//
+
+#include "unixasmmacros.inc"
+#include "asmconstants.h"
+
+.syntax unified
+.thumb
+
+//
+// void *memcpy(void *dst, const void *src, size_t length)
+//
+// Copy a block of memory in a forward direction.
+//
+
+ LEAF_ENTRY FCallMemcpy, _TEXT
+ cmp r2, #0
+
+ beq LOCAL_LABEL(GC_POLL)
+
+ ldr r3, [r0]
+ ldr r3, [r1]
+
+ push {lr}
+ blx C_FUNC(memcpy)
+ pop {lr}
+
+LOCAL_LABEL(GC_POLL):
+ ldr r0, =g_TrapReturningThreads
+ ldr r0, [r0]
+ cmp r0, #0
+ it ne
+ bne C_FUNC(FCallMemCpy_GCPoll)
+ bx lr
+ LEAF_END FCallMemcpy, _TEXT