MOVL sig+8(FP), DI
MOVQ info+16(FP), SI
MOVQ ctx+24(FP), DX
- PUSHQ BP
- MOVQ SP, BP
- ANDQ $~15, SP // alignment for x86_64 ABI
+ MOVQ SP, BX // callee-saved
+ ANDQ $~15, SP // alignment for x86_64 ABI
CALL AX
- MOVQ BP, SP
- POPQ BP
+ MOVQ BX, SP
RET
// Called using C ABI.
-TEXT runtime·sigtramp(SB),NOSPLIT|TOPFRAME,$0
+TEXT runtime·sigtramp(SB),NOSPLIT|TOPFRAME|NOFRAME,$0
// Transition from C ABI to Go ABI.
PUSH_REGS_HOST_TO_ABI0()
//
// func Syscall9(trap int64, a1, a2, a3, a4, a5, a6, a7, a8, a9 int64) (r1, r2, err int64);
-TEXT ·Syscall9(SB),NOSPLIT,$0-104
+TEXT ·Syscall9(SB),NOSPLIT,$32-104
+ NO_LOCAL_POINTERS
CALL runtime·entersyscall<ABIInternal>(SB)
MOVQ num+0(FP), AX // syscall entry
MOVQ a1+8(FP), DI
MOVQ a4+32(FP), R10
MOVQ a5+40(FP), R8
MOVQ a6+48(FP), R9
+ MOVQ a7+56(FP), R11
+ MOVQ a8+64(FP), R12
+ MOVQ a9+72(FP), R13
- // shift around the last three arguments so they're at the
- // top of the stack when the syscall is called.
- // note that we are scribbling over the Go arguments now.
- MOVQ SP, CX // hide (SP) writes from vet
- MOVQ a7+56(FP), R11 // arg 7
- MOVQ R11, 8(CX)
- MOVQ a8+64(FP), R11 // arg 8
- MOVQ R11, 16(CX)
- MOVQ a9+72(FP), R11 // arg 9
- MOVQ R11, 24(CX)
+ // only the first 6 arguments can be passed in registers,
+ // the last three should be placed at the top of the stack.
+ MOVQ R11, 8(SP) // arg 7
+ MOVQ R12, 16(SP) // arg 8
+ MOVQ R13, 24(SP) // arg 9
SYSCALL
JCC ok9