summaryrefslogtreecommitdiff
path: root/src/vm/amd64/ThePreStubAMD64.asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm/amd64/ThePreStubAMD64.asm')
-rw-r--r--src/vm/amd64/ThePreStubAMD64.asm36
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