diff options
author | sergey ignatov <sergign60@mail.ru> | 2017-02-14 17:32:48 +0300 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2017-02-14 17:32:48 +0300 |
commit | df1b120dee1721d43897e12ec6e9fe9b63952650 (patch) | |
tree | 31913d57a83aeedfb0effbe89ce5a348de29e720 /src/Native/Runtime/arm | |
parent | 7894f6951b54455b71ac4f083554db394ac3c20e (diff) |
Fixes for cross building corert tests for arm architectures on Linux (#2682)
Diffstat (limited to 'src/Native/Runtime/arm')
-rw-r--r-- | src/Native/Runtime/arm/AllocFast.S | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/Native/Runtime/arm/AllocFast.S b/src/Native/Runtime/arm/AllocFast.S index de818954b..e24c65785 100644 --- a/src/Native/Runtime/arm/AllocFast.S +++ b/src/Native/Runtime/arm/AllocFast.S @@ -4,4 +4,87 @@ #include <unixasmmacros.inc> +.syntax unified +.thumb + // TODO: Implement Arm support + +// Allocate non-array, non-finalizable object. If the allocation doesn't fit into the current thread's +// allocation context then automatically fallback to the slow allocation path. +// r0 == EEType + LEAF_ENTRY RhpNewFast, _TEXT +#ifdef _DEBUG + bl C_FUNC(NYI_Assert) +#endif + LEAF_END RhpNewFast, _TEXT + +// Allocate non-array object with finalizer. +// r0 == EEType + LEAF_ENTRY RhpNewFinalizable, _TEXT +#ifdef _DEBUG + bl C_FUNC(NYI_Assert) +#endif + LEAF_END RhpNewFinalizable, _TEXT + +// Allocate non-array object. +// r0 == EEType +// r1 == alloc flags + NESTED_ENTRY RhpNewObject, _TEXT, NoHandler +#ifdef _DEBUG + bl C_FUNC(NYI_Assert) +#endif + NESTED_END RhpNewObject, _TEXT + +// Allocate one dimensional, zero based array (SZARRAY). +// r0 == EEType +// r1 == element count + LEAF_ENTRY RhpNewArray, _TEXT +#ifdef _DEBUG + bl C_FUNC(NYI_Assert) +#endif + LEAF_END RhpNewArray, _TEXT + +// Allocate one dimensional, zero based array (SZARRAY) using the slow path that calls a runtime helper. +// r0 == EEType +// r1 == element count +// r2 == array size + Thread::m_alloc_context::alloc_ptr +// r3 == Thread + NESTED_ENTRY RhpNewArrayRare, _TEXT, NoHandler +#ifdef _DEBUG + bl C_FUNC(NYI_Assert) +#endif + NESTED_END RhpNewArrayRare, _TEXT + +// Allocate simple object (not finalizable, array or value type) on an 8 byte boundary. +// r0 == EEType + LEAF_ENTRY RhpNewFastAlign8, _TEXT +#ifdef _DEBUG + bl C_FUNC(NYI_Assert) +#endif + LEAF_END RhpNewFastAlign8, _TEXT + +// Allocate a finalizable object (by definition not an array or value type) on an 8 byte boundary. +// r0 == EEType + LEAF_ENTRY RhpNewFinalizableAlign8, _TEXT +#ifdef _DEBUG + bl C_FUNC(NYI_Assert) +#endif + LEAF_END RhpNewFinalizableAlign8, _TEXT + +// Allocate a value type object (i.e. box it) on an 8 byte boundary + 4 (so that the value type payload +// itself is 8 byte aligned). +// r0 == EEType + LEAF_ENTRY RhpNewFastMisalign, _TEXT +#ifdef _DEBUG + bl C_FUNC(NYI_Assert) +#endif + LEAF_END RhpNewFastMisalign, _TEXT + +// Allocate an array on an 8 byte boundary. +// r0 == EEType +// r1 == element count + NESTED_ENTRY RhpNewArrayAlign8, _TEXT, NoHandler +#ifdef _DEBUG + bl C_FUNC(NYI_Assert) +#endif + NESTED_END RhpNewArrayAlign8, _TEXT |