~ubuntu-branches/ubuntu/utopic/gccgo-go/utopic

« back to all changes in this revision

Viewing changes to src/pkg/syscall/asm_darwin_amd64.s

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-01-27 09:18:55 UTC
  • Revision ID: package-import@ubuntu.com-20140127091855-zxfshmykfsyyw4b2
Tags: upstream-1.2
Import upstream version 1.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
 
5
#include "../../cmd/ld/textflag.h"
 
6
 
 
7
//
 
8
// System call support for AMD64, Darwin
 
9
//
 
10
 
 
11
// func Syscall(trap int64, a1, a2, a3 int64) (r1, r2, err int64);
 
12
// func Syscall6(trap int64, a1, a2, a3, a4, a5, a6 int64) (r1, r2, err int64);
 
13
// Trap # in AX, args in DI SI DX, return in AX DX
 
14
 
 
15
TEXT    ·Syscall(SB),NOSPLIT,$0-64
 
16
        CALL    runtime·entersyscall(SB)
 
17
        MOVQ    16(SP), DI
 
18
        MOVQ    24(SP), SI
 
19
        MOVQ    32(SP), DX
 
20
        MOVQ    $0, R10
 
21
        MOVQ    $0, R8
 
22
        MOVQ    $0, R9
 
23
        MOVQ    8(SP), AX       // syscall entry
 
24
        ADDQ    $0x2000000, AX
 
25
        SYSCALL
 
26
        JCC     ok
 
27
        MOVQ    $-1, 40(SP)     // r1
 
28
        MOVQ    $0, 48(SP)      // r2
 
29
        MOVQ    AX, 56(SP)  // errno
 
30
        CALL    runtime·exitsyscall(SB)
 
31
        RET
 
32
ok:
 
33
        MOVQ    AX, 40(SP)      // r1
 
34
        MOVQ    DX, 48(SP)      // r2
 
35
        MOVQ    $0, 56(SP)      // errno
 
36
        CALL    runtime·exitsyscall(SB)
 
37
        RET
 
38
 
 
39
TEXT    ·Syscall6(SB),NOSPLIT,$0-88
 
40
        CALL    runtime·entersyscall(SB)
 
41
        MOVQ    16(SP), DI
 
42
        MOVQ    24(SP), SI
 
43
        MOVQ    32(SP), DX
 
44
        MOVQ    40(SP), R10
 
45
        MOVQ    48(SP), R8
 
46
        MOVQ    56(SP), R9
 
47
        MOVQ    8(SP), AX       // syscall entry
 
48
        ADDQ    $0x2000000, AX
 
49
        SYSCALL
 
50
        JCC     ok6
 
51
        MOVQ    $-1, 64(SP)     // r1
 
52
        MOVQ    $0, 72(SP)      // r2
 
53
        MOVQ    AX, 80(SP)  // errno
 
54
        CALL    runtime·exitsyscall(SB)
 
55
        RET
 
56
ok6:
 
57
        MOVQ    AX, 64(SP)      // r1
 
58
        MOVQ    DX, 72(SP)      // r2
 
59
        MOVQ    $0, 80(SP)      // errno
 
60
        CALL    runtime·exitsyscall(SB)
 
61
        RET
 
62
 
 
63
TEXT ·RawSyscall(SB),NOSPLIT,$0-64
 
64
        MOVQ    16(SP), DI
 
65
        MOVQ    24(SP), SI
 
66
        MOVQ    32(SP), DX
 
67
        MOVQ    $0, R10
 
68
        MOVQ    $0, R8
 
69
        MOVQ    $0, R9
 
70
        MOVQ    8(SP), AX       // syscall entry
 
71
        ADDQ    $0x2000000, AX
 
72
        SYSCALL
 
73
        JCC     ok1
 
74
        MOVQ    $-1, 40(SP)     // r1
 
75
        MOVQ    $0, 48(SP)      // r2
 
76
        MOVQ    AX, 56(SP)  // errno
 
77
        RET
 
78
ok1:
 
79
        MOVQ    AX, 40(SP)      // r1
 
80
        MOVQ    DX, 48(SP)      // r2
 
81
        MOVQ    $0, 56(SP)      // errno
 
82
        RET
 
83
 
 
84
TEXT    ·RawSyscall6(SB),NOSPLIT,$0-88
 
85
        MOVQ    16(SP), DI
 
86
        MOVQ    24(SP), SI
 
87
        MOVQ    32(SP), DX
 
88
        MOVQ    40(SP), R10
 
89
        MOVQ    48(SP), R8
 
90
        MOVQ    56(SP), R9
 
91
        MOVQ    8(SP), AX       // syscall entry
 
92
        ADDQ    $0x2000000, AX
 
93
        SYSCALL
 
94
        JCC     ok2
 
95
        MOVQ    $-1, 64(SP)     // r1
 
96
        MOVQ    $0, 72(SP)      // r2
 
97
        MOVQ    AX, 80(SP)  // errno
 
98
        RET
 
99
ok2:
 
100
        MOVQ    AX, 64(SP)      // r1
 
101
        MOVQ    DX, 72(SP)      // r2
 
102
        MOVQ    $0, 80(SP)      // errno
 
103
        RET