]> Cypherpunks repositories - gostls13.git/commitdiff
goos and goarch
authorKen Thompson <ken@golang.org>
Thu, 5 Jun 2008 23:55:06 +0000 (16:55 -0700)
committerKen Thompson <ken@golang.org>
Thu, 5 Jun 2008 23:55:06 +0000 (16:55 -0700)
SVN=121346

src/runtime/rt0_amd64_darwin.s [new file with mode: 0644]

diff --git a/src/runtime/rt0_amd64_darwin.s b/src/runtime/rt0_amd64_darwin.s
new file mode 100644 (file)
index 0000000..0d037fa
--- /dev/null
@@ -0,0 +1,86 @@
+// 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_darwin(SB),1,$-8
+       PUSHQ   $0
+       MOVQ    SP, BP
+       ANDQ    $~15, SP
+       MOVQ    8(BP), DI
+       LEAQ    16(BP), SI
+       MOVL    DI, DX
+       ADDL    $1, DX
+       SHLL    $3, DX
+       ADDQ    SI, DX
+       MOVQ    DX, CX
+       CMPQ    (CX), $0
+       JEQ     done
+
+loop:
+       ADDQ    $8, CX
+       CMPQ    (CX), $0
+       JNE     loop
+
+done:
+       ADDQ    $8, CX
+       CALL    check(SB)
+       CALL    main_main(SB)
+       CALL    sys_exit(SB)
+       CALL    notok(SB)
+       POPQ    AX
+       RET
+
+TEXT   FLUSH(SB),1,$-8
+       RET
+
+TEXT   sys_exit(SB),1,$-8
+       MOVL    8(SP), DI               // arg 1 exit status
+       MOVL    $(0x2000000+1), AX
+       SYSCALL
+       JCC     2(PC)
+       CALL    notok(SB)
+       RET
+
+TEXT   sys_write(SB),1,$-8
+       MOVL    8(SP), DI               // arg 1 fid
+       MOVQ    16(SP), SI              // arg 2 buf
+       MOVL    24(SP), DX              // arg 3 count
+       MOVL    $(0x2000000+4), AX      // syscall entry
+       SYSCALL
+       JCC     2(PC)
+       CALL    notok(SB)
+       RET
+
+TEXT   sys_breakpoint(SB),1,$-8
+       BYTE    $0xcc
+       RET
+
+TEXT   sys_mmap(SB),1,$-8
+       MOVQ    8(SP), DI               // arg 1 addr
+       MOVL    16(SP), SI              // arg 2 len
+       MOVL    20(SP), DX              // arg 3 prot
+       MOVL    24(SP), R10             // arg 4 flags
+       MOVL    28(SP), R8              // arg 5 fid
+       MOVL    32(SP), R9              // arg 6 offset
+       MOVL    $(0x2000000+197), AX    // syscall entry
+       SYSCALL
+       JCC     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