diff options
author | Ben Pye <ben@curlybracket.co.uk> | 2015-07-01 15:10:09 +0100 |
---|---|---|
committer | Ben Pye <ben@curlybracket.co.uk> | 2015-07-24 16:45:35 +0100 |
commit | 9cd8273572260317c6acc126333e5a6e56aaeb06 (patch) | |
tree | f125e83a6908151322aa20940b63c64c621c1169 /src/vm/arm/memcpy.S | |
parent | acca43b33dcd97d1dc5d92147a3047a3bdfaf1ce (diff) | |
download | coreclr-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.S | 37 |
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 |