summaryrefslogtreecommitdiff
path: root/src/vm
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm')
-rw-r--r--src/vm/arm/asmconstants.h3
-rw-r--r--src/vm/arm/asmhelpers.asm4
-rw-r--r--src/vm/arm64/asmconstants.h3
-rw-r--r--src/vm/arm64/asmhelpers.asm5
4 files changed, 10 insertions, 5 deletions
diff --git a/src/vm/arm/asmconstants.h b/src/vm/arm/asmconstants.h
index ed57b897c7..54cf47e3d0 100644
--- a/src/vm/arm/asmconstants.h
+++ b/src/vm/arm/asmconstants.h
@@ -124,6 +124,9 @@ ASMCONSTANTS_C_ASSERT(SIZEOF__ArgumentRegisters == sizeof(ArgumentRegisters))
#define SIZEOF__FloatArgumentRegisters 0x40
ASMCONSTANTS_C_ASSERT(SIZEOF__FloatArgumentRegisters == sizeof(FloatArgumentRegisters))
+#define ASM_ENREGISTERED_RETURNTYPE_MAXSIZE 0x20
+ASMCONSTANTS_C_ASSERT(ASM_ENREGISTERED_RETURNTYPE_MAXSIZE == ENREGISTERED_RETURNTYPE_MAXSIZE)
+
#define UMEntryThunk__m_pUMThunkMarshInfo 0x0C
ASMCONSTANTS_C_ASSERT(UMEntryThunk__m_pUMThunkMarshInfo == offsetof(UMEntryThunk, m_pUMThunkMarshInfo))
diff --git a/src/vm/arm/asmhelpers.asm b/src/vm/arm/asmhelpers.asm
index e49910d042..35c898683f 100644
--- a/src/vm/arm/asmhelpers.asm
+++ b/src/vm/arm/asmhelpers.asm
@@ -709,7 +709,7 @@ LsetFP8
;
NESTED_ENTRY GenericComPlusCallStub
- PROLOG_WITH_TRANSITION_BLOCK 0x20
+ PROLOG_WITH_TRANSITION_BLOCK ASM_ENREGISTERED_RETURNTYPE_MAXSIZE
add r0, sp, #__PWTB_TransitionBlock ; pTransitionBlock
mov r1, r12 ; pMethodDesc
@@ -723,7 +723,7 @@ LsetFP8
; r0 = fpRetSize
; return value is stored before float argument registers
- add r1, sp, #(__PWTB_FloatArgumentRegisters - 0x20)
+ add r1, sp, #(__PWTB_FloatArgumentRegisters - ASM_ENREGISTERED_RETURNTYPE_MAXSIZE)
bl setStubReturnValue
EPILOG_WITH_TRANSITION_BLOCK_RETURN
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