1
0
mirror of https://github.com/golang/go synced 2024-10-05 08:21:22 -06:00
go/src/pkg/runtime/sys_plan9_amd64.s

157 lines
2.5 KiB
ArmAsm
Raw Normal View History

// 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
// int32 _seek(int64*, int32, int64, int32)
TEXT _seek<>(SB),7,$0
MOVQ $0x8000, AX
MOVQ $39, BP
SYSCALL
RET
// int64 seek(int32, int64, int32)
TEXT runtime·seek(SB),7,$56
LEAQ new+48(SP), CX
MOVQ CX, 0(SP)
MOVQ fd+0(FP), CX
MOVQ CX, 8(SP)
MOVQ off+8(FP), CX
MOVQ CX, 16(SP)
MOVQ whence+16(FP), CX
MOVQ CX, 24(SP)
CALL _seek<>(SB)
CMPL AX, $0
JGE 2(PC)
MOVQ $-1, new+48(SP)
MOVQ new+48(SP), AX
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 pid in TLS.
MOVQ procid(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
TEXT runtime·setfpmasks(SB),7,$8
STMXCSR 0(SP)
MOVL 0(SP), AX
ANDL $~0x3F, AX
ORL $(0x3F<<7), AX
MOVL AX, 0(SP)
LDMXCSR 0(SP)
RET