From 8e01e2a7a1c78a69ef1667a8c1cf675ca5f31a43 Mon Sep 17 00:00:00 2001 From: sivarv Date: Wed, 20 Apr 2016 16:36:53 -0700 Subject: Model kill set of CORINFO_HELP_STOP_FOR_GC correctly on unix. --- src/jit/target.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/jit/target.h') diff --git a/src/jit/target.h b/src/jit/target.h index 88ad1b0bb9..fdc1c92b57 100644 --- a/src/jit/target.h +++ b/src/jit/target.h @@ -1081,9 +1081,18 @@ typedef unsigned short regPairNoSmall; // arm: need 12 bits #define RBM_PROFILER_ENTER_TRASH RBM_CALLEE_TRASH #define RBM_PROFILER_LEAVE_TRASH (RBM_CALLEE_TRASH & ~(RBM_FLOATRET | RBM_INTRET)) - // The registers trashed by the CORINFO_HELP_STOP_FOR_GC helper - // See vm\amd64\amshelpers.asm for more details. + // The registers trashed by the CORINFO_HELP_STOP_FOR_GC helper. +#ifdef FEATURE_UNIX_AMD64_STRUCT_PASSING + // See vm\amd64\unixasmhelpers.S for more details. + // + // On Unix a struct of size >=9 and <=16 bytes in size is returned in two return registers. + // The return registers could be any two from the set { RAX, RDX, XMM0, XMM1 }. + // STOP_FOR_GC helper preserves all the 4 possible return registers. + #define RBM_STOP_FOR_GC_TRASH (RBM_CALLEE_TRASH & ~(RBM_FLOATRET | RBM_INTRET | RBM_FLOATRET_1 | RBM_INTRET_1)) +#else + // See vm\amd64\asmhelpers.asm for more details. #define RBM_STOP_FOR_GC_TRASH (RBM_CALLEE_TRASH & ~(RBM_FLOATRET | RBM_INTRET)) +#endif // What sort of reloc do we use for [disp32] address mode #define IMAGE_REL_BASED_DISP32 IMAGE_REL_BASED_REL32 -- cgit v1.2.3