summaryrefslogtreecommitdiff
path: root/src/vm/arm64
diff options
context:
space:
mode:
authorJeremy Koritzinsky <jekoritz@microsoft.com>2019-05-25 09:19:03 -0700
committerGitHub <noreply@github.com>2019-05-25 09:19:03 -0700
commit83309575a1552e39fe505cbd883391f3dcbea8b4 (patch)
tree7437e461f2f951b769e1fcc8b052003deb7d5968 /src/vm/arm64
parent5b283a18625f7a8009c18221592ec81c3cd32375 (diff)
downloadcoreclr-83309575a1552e39fe505cbd883391f3dcbea8b4.tar.gz
coreclr-83309575a1552e39fe505cbd883391f3dcbea8b4.tar.bz2
coreclr-83309575a1552e39fe505cbd883391f3dcbea8b4.zip
Make sure all of the calculations of enregistered return types match correctly. (#24771)
* Make sure all of the calculations of enregistered return types match correctly. * Revert "Disable ARM64 IDispatch tests (#24770)" This reverts commit 852f40d5f1a3cff4d381c2de2d2a86fe8b1f29b4.
Diffstat (limited to 'src/vm/arm64')
-rw-r--r--src/vm/arm64/asmconstants.h3
-rw-r--r--src/vm/arm64/asmhelpers.asm5
2 files changed, 5 insertions, 3 deletions
diff --git a/src/vm/arm64/asmconstants.h b/src/vm/arm64/asmconstants.h
index 8c99ed8419..258fe6dda7 100644
--- a/src/vm/arm64/asmconstants.h
+++ b/src/vm/arm64/asmconstants.h
@@ -54,6 +54,9 @@ ASMCONSTANTS_C_ASSERT(SIZEOF__ArgumentRegisters == sizeof(ArgumentRegisters))
#define SIZEOF__FloatArgumentRegisters 0x80
ASMCONSTANTS_C_ASSERT(SIZEOF__FloatArgumentRegisters == sizeof(FloatArgumentRegisters))
+#define ASM_ENREGISTERED_RETURNTYPE_MAXSIZE 0x40
+ASMCONSTANTS_C_ASSERT(ASM_ENREGISTERED_RETURNTYPE_MAXSIZE == ENREGISTERED_RETURNTYPE_MAXSIZE)
+
#define CallDescrData__pSrc 0x00
#define CallDescrData__numStackSlots 0x08
#define CallDescrData__pArgumentRegisters 0x10
diff --git a/src/vm/arm64/asmhelpers.asm b/src/vm/arm64/asmhelpers.asm
index 01b49dbe29..c9700dbfc1 100644
--- a/src/vm/arm64/asmhelpers.asm
+++ b/src/vm/arm64/asmhelpers.asm
@@ -706,7 +706,7 @@ NoFloatingPointRetVal
;
NESTED_ENTRY GenericComPlusCallStub
- PROLOG_WITH_TRANSITION_BLOCK 0x20
+ PROLOG_WITH_TRANSITION_BLOCK ASM_ENREGISTERED_RETURNTYPE_MAXSIZE
add x0, sp, #__PWTB_TransitionBlock ; pTransitionBlock
mov x1, x12 ; pMethodDesc
@@ -721,8 +721,7 @@ NoFloatingPointRetVal
; x0 = fpRetSize
; The return value is stored before float argument registers
- ; The maximum size of a return value is 0x40 (HVA of 4x16)
- add x1, sp, #(__PWTB_FloatArgumentRegisters - 0x40)
+ add x1, sp, #(__PWTB_FloatArgumentRegisters - ASM_ENREGISTERED_RETURNTYPE_MAXSIZE)
bl setStubReturnValue
EPILOG_WITH_TRANSITION_BLOCK_RETURN