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