| // 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. | |
| TEXT _rt0_amd64_linux(SB),7,$-8 | |
| // copy arguments forward on an even stack | |
| MOVQ 0(SP), AX // argc | |
| LEAQ 8(SP), BX // argv | |
| ANDQ $~7, SP | |
| SUBQ $32, SP | |
| MOVQ AX, 16(SP) | |
| MOVQ BX, 24(SP) | |
| // allocate the per-user block | |
| LEAQ peruser<>(SB), R15 // dedicated u. register | |
| MOVQ SP, AX | |
| SUBQ $4096, AX | |
| MOVQ AX, 0(R15) | |
| CALL check(SB) | |
| // process the arguments | |
| MOVL 16(SP), AX | |
| MOVL AX, 0(SP) | |
| MOVQ 24(SP), AX | |
| MOVQ AX, 8(SP) | |
| CALL args(SB) | |
| CALL main·main(SB) | |
| MOVQ $0, AX | |
| MOVQ AX, 0(SP) // exit status | |
| CALL sys·exit(SB) | |
| CALL notok(SB) | |
| ADDQ $32, SP | |
| RET | |
| TEXT _morestack(SB), 7, $0 | |
| MOVQ SP, AX | |
| SUBQ $1024, AX | |
| MOVQ AX, 0(R15) | |
| RET | |
| TEXT FLUSH(SB),7,$-8 | |
| RET | |
| TEXT sys·exit(SB),1,$-8 | |
| MOVL 8(SP), DI | |
| MOVL $60, AX | |
| SYSCALL | |
| RET | |
| TEXT sys·write(SB),1,$-8 | |
| MOVL 8(SP), DI | |
| MOVQ 16(SP), SI | |
| MOVL 24(SP), DX | |
| MOVL $1, AX // syscall entry | |
| SYSCALL | |
| RET | |
| TEXT open(SB),1,$-8 | |
| MOVQ 8(SP), DI | |
| MOVL 16(SP), SI | |
| MOVL $2, AX // syscall entry | |
| SYSCALL | |
| RET | |
| TEXT close(SB),1,$-8 | |
| MOVL 8(SP), DI | |
| MOVL $3, AX // syscall entry | |
| SYSCALL | |
| RET | |
| TEXT fstat(SB),1,$-8 | |
| MOVL 8(SP), DI | |
| MOVQ 16(SP), SI | |
| MOVL $5, AX // syscall entry | |
| SYSCALL | |
| RET | |
| TEXT read(SB),1,$-8 | |
| MOVL 8(SP), DI | |
| MOVQ 16(SP), SI | |
| MOVL 24(SP), DX | |
| MOVL $0, AX // syscall entry | |
| SYSCALL | |
| RET | |
| TEXT sys·rt_sigaction(SB),1,$-8 | |
| MOVL 8(SP), DI | |
| MOVQ 16(SP), SI | |
| MOVQ 24(SP), DX | |
| MOVQ 32(SP), CX | |
| MOVL CX, R10 | |
| MOVL $13, AX // syscall entry | |
| SYSCALL | |
| RET | |
| TEXT sigtramp(SB),1,$24 | |
| MOVQ DI,0(SP) | |
| MOVQ SI,8(SP) | |
| MOVQ DX,16(SP) | |
| CALL sighandler(SB) | |
| RET | |
| TEXT sys·breakpoint(SB),1,$-8 | |
| BYTE $0xcc | |
| RET | |
| TEXT sys·mmap(SB),1,$-8 | |
| MOVQ 8(SP), DI | |
| MOVL 16(SP), SI | |
| MOVL 20(SP), DX | |
| MOVL 24(SP), CX | |
| MOVL 28(SP), R8 | |
| MOVL 32(SP), R9 | |
| /* flags arg for ANON is 1000 but sb 20 */ | |
| MOVL CX, AX | |
| ANDL $~0x1000, CX | |
| ANDL $0x1000, AX | |
| SHRL $7, AX | |
| ORL AX, CX | |
| MOVL CX, R10 | |
| MOVL $9, AX // syscall entry | |
| SYSCALL | |
| CMPQ AX, $0xfffffffffffff001 | |
| JLS 2(PC) | |
| CALL notok(SB) | |
| RET | |
| TEXT notok(SB),1,$-8 | |
| MOVL $0xf1, BP | |
| MOVQ BP, (BP) | |
| RET | |
| TEXT sys·memclr(SB),1,$-8 | |
| MOVQ 8(SP), DI // arg 1 addr | |
| MOVL 16(SP), CX // arg 2 count | |
| ADDL $7, CX | |
| SHRL $3, CX | |
| MOVQ $0, AX | |
| CLD | |
| REP | |
| STOSQ | |
| RET | |
| TEXT sys·getcallerpc+0(SB),1,$0 | |
| MOVQ x+0(FP),AX | |
| MOVQ -8(AX),AX | |
| RET | |
| GLOBL peruser<>(SB),$64 |