diff options
author | Michael Stapelberg <stapelberg@debian.org> | 2013-03-04 21:27:36 +0100 |
---|---|---|
committer | Michael Stapelberg <michael@stapelberg.de> | 2013-03-04 21:27:36 +0100 |
commit | 04b08da9af0c450d645ab7389d1467308cfc2db8 (patch) | |
tree | db247935fa4f2f94408edc3acd5d0d4f997aa0d8 /src/pkg/runtime/cgo/gcc_amd64.S | |
parent | 917c5fb8ec48e22459d77e3849e6d388f93d3260 (diff) | |
download | golang-upstream/1.1_hg20130304.tar.gz |
Imported Upstream version 1.1~hg20130304upstream/1.1_hg20130304
Diffstat (limited to 'src/pkg/runtime/cgo/gcc_amd64.S')
-rw-r--r-- | src/pkg/runtime/cgo/gcc_amd64.S | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/src/pkg/runtime/cgo/gcc_amd64.S b/src/pkg/runtime/cgo/gcc_amd64.S index 706ee6b58..81b270195 100644 --- a/src/pkg/runtime/cgo/gcc_amd64.S +++ b/src/pkg/runtime/cgo/gcc_amd64.S @@ -19,9 +19,6 @@ * are callee-save so they must be saved explicitly. * The standard x86-64 ABI passes the three arguments m, g, fn * in %rdi, %rsi, %rdx. - * - * Also need to set %r15 to g and %r14 to m (see ../pkg/runtime/mkasmh.sh) - * during the call. */ .globl EXT(crosscall_amd64) EXT(crosscall_amd64): @@ -45,48 +42,3 @@ EXT(crosscall_amd64): popq %rbp popq %rbx ret - -/* - * void crosscall2(void (*fn)(void*, int32), void *arg, int32 argsize) - * - * Save registers and call fn with two arguments. fn is a Go function - * which takes parameters on the stack rather than in registers. - */ -.globl EXT(crosscall2) -EXT(crosscall2): - subq $0x58, %rsp /* keeps stack pointer 32-byte aligned */ - movq %rbx, 0x10(%rsp) - movq %rbp, 0x18(%rsp) - movq %r12, 0x20(%rsp) - movq %r13, 0x28(%rsp) - movq %r14, 0x30(%rsp) - movq %r15, 0x38(%rsp) - -#if defined(_WIN64) - // Win64 save RBX, RBP, RDI, RSI, RSP, R12, R13, R14, and R15 - movq %rdi, 0x40(%rsp) - movq %rsi, 0x48(%rsp) - - movq %rdx, 0(%rsp) /* arg */ - movq %r8, 8(%rsp) /* argsize (includes padding) */ - - call *%rcx /* fn */ -#else - movq %rsi, 0(%rsp) /* arg */ - movq %rdx, 8(%rsp) /* argsize (includes padding) */ - - call *%rdi /* fn */ -#endif - - movq 0x10(%rsp), %rbx - movq 0x18(%rsp), %rbp - movq 0x20(%rsp), %r12 - movq 0x28(%rsp), %r13 - movq 0x30(%rsp), %r14 - movq 0x38(%rsp), %r15 -#if defined(__WIN64) - movq 0x40(%rsp), %rdi - movq 0x48(%rsp), %rsi -#endif - addq $0x58, %rsp - ret |