summaryrefslogtreecommitdiff
path: root/src/debug/ee/arm64/dbghelpers.S
diff options
context:
space:
mode:
Diffstat (limited to 'src/debug/ee/arm64/dbghelpers.S')
-rw-r--r--src/debug/ee/arm64/dbghelpers.S25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/debug/ee/arm64/dbghelpers.S b/src/debug/ee/arm64/dbghelpers.S
new file mode 100644
index 0000000..07ed04a
--- /dev/null
+++ b/src/debug/ee/arm64/dbghelpers.S
@@ -0,0 +1,25 @@
+//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 "unixasmmacros.inc"
+
+NESTED_ENTRY FuncEvalHijack, _TEXT, FuncEvalHijackPersonalityRoutine
+
+// NOTE: FuncEvalHijackPersonalityRoutine is dependent on the stack layout so if
+// you change the prolog you will also need to update the personality routine.
+
+// push arg to the stack so our personality routine can find it
+// push lr to get good stacktrace in debugger
+
+PROLOG_SAVE_REG_PAIR fp, lr, #-32
+
+ str x0, [sp, #16]
+ // FuncEvalHijackWorker returns the address we should jump to.
+ bl FuncEvalHijackWorker
+
+ EPILOG_STACK_FREE 32
+ EPILOG_BRANCH_REG x0
+NESTED_END FuncEvalHijack, _TEXT
+
+//NESTED_ENTRY ExceptionHijack,,ExceptionHijackPersonalityRoutine \ No newline at end of file