github.com/cellofellow/gopkg@v0.0.0-20140722061823-eec0544a62ad/osext/winsvc/svc/sys_386.s (about) 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 TEXT ·servicemain(SB),7,$0 6 MOVL 4(SP), AX 7 MOVL AX, ·sArgc(SB) 8 MOVL 8(SP), AX 9 MOVL AX, ·sArgv(SB) 10 11 PUSHL BP 12 PUSHL BX 13 PUSHL SI 14 PUSHL DI 15 16 SUBL $12, SP 17 18 MOVL ·sName(SB), AX 19 MOVL AX, (SP) 20 MOVL $·servicectlhandler(SB), AX 21 MOVL AX, 4(SP) 22 MOVL ·cRegisterServiceCtrlHandlerW(SB), AX 23 MOVL SP, BP 24 CALL AX 25 MOVL BP, SP 26 CMPL AX, $0 27 JE exit 28 MOVL AX, ·ssHandle(SB) 29 30 MOVL ·goWaitsH(SB), AX 31 MOVL AX, (SP) 32 MOVL ·cSetEvent(SB), AX 33 MOVL SP, BP 34 CALL AX 35 MOVL BP, SP 36 37 MOVL ·cWaitsH(SB), AX 38 MOVL AX, (SP) 39 MOVL $-1, AX 40 MOVL AX, 4(SP) 41 MOVL ·cWaitForSingleObject(SB), AX 42 MOVL SP, BP 43 CALL AX 44 MOVL BP, SP 45 46 exit: 47 ADDL $12, SP 48 49 POPL DI 50 POPL SI 51 POPL BX 52 POPL BP 53 54 MOVL 0(SP), CX 55 ADDL $12, SP 56 JMP CX 57 58 // I do not know why, but this seems to be the only way to call 59 // ctlHandlerProc on Windows 7. 60 61 TEXT ·servicectlhandler(SB),7,$0 62 MOVL ·ctlHandlerProc(SB), CX 63 JMP CX