mirror of
https://github.com/golang/go
synced 2024-10-05 08:21:22 -06:00
125 lines
1.9 KiB
ArmAsm
125 lines
1.9 KiB
ArmAsm
|
// Copyright 2010 The Go Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
#include "defs_GOOS_GOARCH.h"
|
||
|
#include "zasm_GOOS_GOARCH.h"
|
||
|
|
||
|
// setldt(int entry, int address, int limit)
|
||
|
TEXT runtime·setldt(SB),7,$0
|
||
|
RET
|
||
|
|
||
|
TEXT runtime·open(SB),7,$0
|
||
|
MOVQ $0x8000, AX
|
||
|
MOVQ $14, BP
|
||
|
SYSCALL
|
||
|
RET
|
||
|
|
||
|
TEXT runtime·pread(SB),7,$0
|
||
|
MOVQ $0x8000, AX
|
||
|
MOVQ $50, BP
|
||
|
SYSCALL
|
||
|
RET
|
||
|
|
||
|
TEXT runtime·pwrite(SB),7,$0
|
||
|
MOVQ $0x8000, AX
|
||
|
MOVQ $51, BP
|
||
|
SYSCALL
|
||
|
RET
|
||
|
|
||
|
TEXT runtime·close(SB),7,$0
|
||
|
MOVQ $0x8000, AX
|
||
|
MOVQ $4, BP
|
||
|
SYSCALL
|
||
|
RET
|
||
|
|
||
|
TEXT runtime·exits(SB),7,$0
|
||
|
MOVQ $0x8000, AX
|
||
|
MOVQ $8, BP
|
||
|
SYSCALL
|
||
|
RET
|
||
|
|
||
|
TEXT runtime·brk_(SB),7,$0
|
||
|
MOVQ $0x8000, AX
|
||
|
MOVQ $24, BP
|
||
|
SYSCALL
|
||
|
RET
|
||
|
|
||
|
TEXT runtime·sleep(SB),7,$0
|
||
|
MOVQ $0x8000, AX
|
||
|
MOVQ $17, BP
|
||
|
SYSCALL
|
||
|
RET
|
||
|
|
||
|
TEXT runtime·plan9_semacquire(SB),7,$0
|
||
|
MOVQ $0x8000, AX
|
||
|
MOVQ $37, BP
|
||
|
SYSCALL
|
||
|
RET
|
||
|
|
||
|
TEXT runtime·plan9_tsemacquire(SB),7,$0
|
||
|
MOVQ $0x8000, AX
|
||
|
MOVQ $52, BP
|
||
|
SYSCALL
|
||
|
RET
|
||
|
|
||
|
TEXT runtime·notify(SB),7,$0
|
||
|
MOVQ $0x8000, AX
|
||
|
MOVQ $28, BP
|
||
|
SYSCALL
|
||
|
RET
|
||
|
|
||
|
TEXT runtime·noted(SB),7,$0
|
||
|
MOVQ $0x8000, AX
|
||
|
MOVQ $29, BP
|
||
|
SYSCALL
|
||
|
RET
|
||
|
|
||
|
TEXT runtime·plan9_semrelease(SB),7,$0
|
||
|
MOVQ $0x8000, AX
|
||
|
MOVQ $38, BP
|
||
|
SYSCALL
|
||
|
RET
|
||
|
|
||
|
TEXT runtime·rfork(SB),7,$0
|
||
|
MOVQ $0x8000, AX
|
||
|
MOVQ $19, BP // rfork
|
||
|
SYSCALL
|
||
|
|
||
|
// In parent, return.
|
||
|
CMPQ AX, $0
|
||
|
JEQ 2(PC)
|
||
|
RET
|
||
|
|
||
|
// In child on forked stack.
|
||
|
MOVQ mm+24(SP), BX // m
|
||
|
MOVQ gg+32(SP), DX // g
|
||
|
MOVQ fn+40(SP), SI // fn
|
||
|
|
||
|
// set SP to be on the new child stack
|
||
|
MOVQ stack+16(SP), CX
|
||
|
MOVQ CX, SP
|
||
|
|
||
|
// Initialize m, g.
|
||
|
get_tls(AX)
|
||
|
MOVQ DX, g(AX)
|
||
|
MOVQ BX, m(AX)
|
||
|
|
||
|
// Initialize AX from _tos->pid
|
||
|
MOVQ _tos(SB), AX
|
||
|
MOVQ tos_pid(AX), AX
|
||
|
MOVQ AX, m_procid(BX) // save pid as m->procid
|
||
|
|
||
|
CALL runtime·stackcheck(SB) // smashes AX, CX
|
||
|
|
||
|
MOVQ 0(DX), DX // paranoia; check they are not nil
|
||
|
MOVQ 0(BX), BX
|
||
|
|
||
|
CALL SI // fn()
|
||
|
CALL runtime·exit(SB)
|
||
|
RET
|
||
|
|
||
|
// This is needed by asm_amd64.s
|
||
|
TEXT runtime·settls(SB),7,$0
|
||
|
RET
|