asm_386.s 739 B

1234567891011121314151617181920212223242526272829
  1. // Copyright 2009 The Go Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. #include "textflag.h"
  5. // Called by C code generated by cmd/cgo.
  6. // func crosscall2(fn, a unsafe.Pointer, n int32, ctxt uintptr)
  7. // Saves C callee-saved registers and calls cgocallback with three arguments.
  8. // fn is the PC of a func(a unsafe.Pointer) function.
  9. TEXT crosscall2(SB), NOSPLIT, $28-16
  10. MOVL BP, 24(SP)
  11. MOVL BX, 20(SP)
  12. MOVL SI, 16(SP)
  13. MOVL DI, 12(SP)
  14. MOVL ctxt+12(FP), AX
  15. MOVL AX, 8(SP)
  16. MOVL a+4(FP), AX
  17. MOVL AX, 4(SP)
  18. MOVL fn+0(FP), AX
  19. MOVL AX, 0(SP)
  20. CALL runtime·cgocallback(SB)
  21. MOVL 12(SP), DI
  22. MOVL 16(SP), SI
  23. MOVL 20(SP), BX
  24. MOVL 24(SP), BP
  25. RET