added support for string type
[govpp.git] / vendor / golang.org / x / sys / windows / svc / sys_386.s
1 // Copyright 2012 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 // +build windows
6
7 // func servicemain(argc uint32, argv **uint16)
8 TEXT ·servicemain(SB),7,$0
9         MOVL    argc+0(FP), AX
10         MOVL    AX, ·sArgc(SB)
11         MOVL    argv+4(FP), AX
12         MOVL    AX, ·sArgv(SB)
13
14         PUSHL   BP
15         PUSHL   BX
16         PUSHL   SI
17         PUSHL   DI
18
19         SUBL    $12, SP
20
21         MOVL    ·sName(SB), AX
22         MOVL    AX, (SP)
23         MOVL    $·servicectlhandler(SB), AX
24         MOVL    AX, 4(SP)
25         MOVL    ·cRegisterServiceCtrlHandlerW(SB), AX
26         MOVL    SP, BP
27         CALL    AX
28         MOVL    BP, SP
29         CMPL    AX, $0
30         JE      exit
31         MOVL    AX, ·ssHandle(SB)
32
33         MOVL    ·goWaitsH(SB), AX
34         MOVL    AX, (SP)
35         MOVL    ·cSetEvent(SB), AX
36         MOVL    SP, BP
37         CALL    AX
38         MOVL    BP, SP
39
40         MOVL    ·cWaitsH(SB), AX
41         MOVL    AX, (SP)
42         MOVL    $-1, AX
43         MOVL    AX, 4(SP)
44         MOVL    ·cWaitForSingleObject(SB), AX
45         MOVL    SP, BP
46         CALL    AX
47         MOVL    BP, SP
48
49 exit:
50         ADDL    $12, SP
51
52         POPL    DI
53         POPL    SI
54         POPL    BX
55         POPL    BP
56
57         MOVL    0(SP), CX
58         ADDL    $12, SP
59         JMP     CX
60
61 // I do not know why, but this seems to be the only way to call
62 // ctlHandlerProc on Windows 7.
63
64 // func servicectlhandler(ctl uint32) uintptr
65 TEXT ·servicectlhandler(SB),7,$0
66         MOVL    ·ctlHandlerProc(SB), CX
67         JMP     CX