diff options
Diffstat (limited to 'src/vm/amd64/ThePreStubAMD64.asm')
-rw-r--r-- | src/vm/amd64/ThePreStubAMD64.asm | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/vm/amd64/ThePreStubAMD64.asm b/src/vm/amd64/ThePreStubAMD64.asm new file mode 100644 index 0000000000..86a9775632 --- /dev/null +++ b/src/vm/amd64/ThePreStubAMD64.asm @@ -0,0 +1,36 @@ +; 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. + +include <AsmMacros.inc> +include AsmConstants.inc + + extern PreStubWorker:proc + extern ProcessCLRException:proc + +NESTED_ENTRY ThePreStub, _TEXT, ProcessCLRException + + PROLOG_WITH_TRANSITION_BLOCK + + ; + ; call PreStubWorker + ; + lea rcx, [rsp + __PWTB_TransitionBlock] ; pTransitionBlock* + mov rdx, METHODDESC_REGISTER + call 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 + + + +end |