// Copyright 2009 The Go Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style | |
// license that can be found in the LICENSE file. | |
#include "textflag.h" | |
/* | |
* void crosscall2(void (*fn)(void*, int32), void*, int32) | |
* Save registers and call fn with two arguments. | |
*/ | |
TEXT crosscall2(SB),NOSPLIT,$0 | |
PUSHL BP | |
MOVL SP, BP | |
PUSHL BX | |
PUSHL SI | |
PUSHL DI | |
SUBL $8, SP | |
MOVL 16(BP), AX | |
MOVL AX, 4(SP) | |
MOVL 12(BP), AX | |
MOVL AX, 0(SP) | |
MOVL 8(BP), AX | |
CALL AX | |
ADDL $8, SP | |
POPL DI | |
POPL SI | |
POPL BX | |
POPL BP | |
RET |