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