github.com/etecs-ru/go-sys-wineventlog@v0.0.0-20210227233244-4c3abb794018/windows/svc/sys_windows_arm.s (about) 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 #include "textflag.h" 6 7 // func servicemain(argc uint32, argv **uint16) 8 TEXT ·servicemain(SB),NOSPLIT|NOFRAME,$0 9 MOVM.DB.W [R4, R14], (R13) // push {r4, lr} 10 MOVW R13, R4 11 BIC $0x7, R13 // alignment for ABI 12 13 MOVW R0, ·sArgc(SB) 14 MOVW R1, ·sArgv(SB) 15 16 MOVW ·sName(SB), R0 17 MOVW ·ctlHandlerExProc(SB), R1 18 MOVW $0, R2 19 MOVW ·cRegisterServiceCtrlHandlerExW(SB), R3 20 BL (R3) 21 CMP $0, R0 22 BEQ exit 23 MOVW R0, ·ssHandle(SB) 24 25 MOVW ·goWaitsH(SB), R0 26 MOVW ·cSetEvent(SB), R1 27 BL (R1) 28 29 MOVW ·cWaitsH(SB), R0 30 MOVW $-1, R1 31 MOVW ·cWaitForSingleObject(SB), R2 32 BL (R2) 33 34 exit: 35 MOVW R4, R13 // free extra stack space 36 MOVM.IA.W (R13), [R4, R15] // pop {r4, pc}