.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / sys@v0.0.0-20210124154548-22da62e12c0c / windows / svc / sys_arm.s
1 // Copyright 2018 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 #include "textflag.h"
8
9 // func servicemain(argc uint32, argv **uint16)
10 TEXT ·servicemain(SB),NOSPLIT|NOFRAME,$0
11         MOVM.DB.W [R4, R14], (R13)      // push {r4, lr}
12         MOVW    R13, R4
13         BIC     $0x7, R13               // alignment for ABI
14
15         MOVW    R0, ·sArgc(SB)
16         MOVW    R1, ·sArgv(SB)
17
18         MOVW    ·sName(SB), R0
19         MOVW    ·ctlHandlerExProc(SB), R1
20         MOVW    $0, R2
21         MOVW    ·cRegisterServiceCtrlHandlerExW(SB), R3
22         BL      (R3)
23         CMP     $0, R0
24         BEQ     exit
25         MOVW    R0, ·ssHandle(SB)
26
27         MOVW    ·goWaitsH(SB), R0
28         MOVW    ·cSetEvent(SB), R1
29         BL      (R1)
30
31         MOVW    ·cWaitsH(SB), R0
32         MOVW    $-1, R1
33         MOVW    ·cWaitForSingleObject(SB), R2
34         BL      (R2)
35
36 exit:
37         MOVW    R4, R13                 // free extra stack space
38         MOVM.IA.W (R13), [R4, R15]      // pop {r4, pc}