diff options
Diffstat (limited to 'src/vm/amd64/theprestubamd64.S')
-rw-r--r-- | src/vm/amd64/theprestubamd64.S | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/vm/amd64/theprestubamd64.S b/src/vm/amd64/theprestubamd64.S new file mode 100644 index 0000000000..ff8d836b9a --- /dev/null +++ b/src/vm/amd64/theprestubamd64.S @@ -0,0 +1,30 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +.intel_syntax noprefix +#include "unixasmmacros.inc" +#include "asmconstants.h" + +NESTED_ENTRY ThePreStub, _TEXT, NoHandler + PROLOG_WITH_TRANSITION_BLOCK 0, 0, 0, 0, 0 + + // + // call PreStubWorker + // + lea rdi, [rsp + __PWTB_TransitionBlock] // pTransitionBlock* + mov rsi, METHODDESC_REGISTER + call C_FUNC(PreStubWorker) + + EPILOG_WITH_TRANSITION_BLOCK_TAILCALL + TAILJMP_RAX + +NESTED_END ThePreStub, _TEXT + +LEAF_ENTRY ThePreStubPatch, _TEXT + // make sure that the basic block is unique + test eax,34 +PATCH_LABEL ThePreStubPatchLabel + ret +LEAF_END ThePreStubPatch, _TEXT + |