diff options
author | shadchin <shadchin@yandex-team.com> | 2024-02-18 16:49:52 +0300 |
---|---|---|
committer | shadchin <shadchin@yandex-team.com> | 2024-02-18 17:00:16 +0300 |
commit | 0bb2168d0660be7316ffbafdb4bdc4e9957f39cf (patch) | |
tree | e708f9b05affa64aeffe0c94299576a86e99ab41 /contrib/tools/python3/src/Python/asm_trampoline.S | |
parent | 7fa34d0c38beee7d193b6bfd332431d3a851a667 (diff) | |
download | ydb-0bb2168d0660be7316ffbafdb4bdc4e9957f39cf.tar.gz |
Enable perf trampoline
9ea3344aaff84779f6f3eea0c3cfb785c49857a7
Diffstat (limited to 'contrib/tools/python3/src/Python/asm_trampoline.S')
-rw-r--r-- | contrib/tools/python3/src/Python/asm_trampoline.S | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/contrib/tools/python3/src/Python/asm_trampoline.S b/contrib/tools/python3/src/Python/asm_trampoline.S new file mode 100644 index 0000000000..460707717d --- /dev/null +++ b/contrib/tools/python3/src/Python/asm_trampoline.S @@ -0,0 +1,28 @@ + .text + .globl _Py_trampoline_func_start +# The following assembly is equivalent to: +# PyObject * +# trampoline(PyThreadState *ts, _PyInterpreterFrame *f, +# int throwflag, py_evaluator evaluator) +# { +# return evaluator(ts, f, throwflag); +# } +_Py_trampoline_func_start: +#ifdef __x86_64__ + sub $8, %rsp + call *%rcx + add $8, %rsp + ret +#endif // __x86_64__ +#if defined(__aarch64__) && defined(__AARCH64EL__) && !defined(__ILP32__) + // ARM64 little endian, 64bit ABI + // generate with aarch64-linux-gnu-gcc 12.1 + stp x29, x30, [sp, -16]! + mov x29, sp + blr x3 + ldp x29, x30, [sp], 16 + ret +#endif + .globl _Py_trampoline_func_end +_Py_trampoline_func_end: + .section .note.GNU-stack,"",@progbits |