add linux_emul base, reorganize docs
[openbsd_emul.git] / linux_emul_base / bits.s
CommitLineData
cae36a52 1TEXT incref(SB),$0
2 MOVL l+0(FP),AX
3 LOCK
4 INCL 0(AX)
5 RET
6
7TEXT decref(SB),$0
8 MOVL l+0(FP),AX
9 LOCK
10 DECL 0(AX)
11 JZ iszero
12 MOVL $1, AX
13 RET
14iszero:
15 MOVL $0, AX
16 RET
17
18TEXT jumpureg(SB), 1, $0
19 MOVL ureg+0(FP), AX /* ureg in AX */
20 MOVL 68(AX), SP /* restore SP */
21 SUBL $12, SP
22 MOVL 28(AX), BX /* put AX on 4(SP) */
23 MOVL BX, 4(SP)
24 MOVL 56(AX), BX /* put PC on 8(SP) */
25 MOVL BX, 8(SP)
26 MOVL 0(AX), DI /* restore registers */
27 MOVL 4(AX), SI
28 MOVL 8(AX), BP
29 MOVL 16(AX), BX
30 MOVL 20(AX), DX
31 MOVL 24(AX), CX
32 MOVL 4(SP), AX /* restore AX */
33 ADDL $8, SP
34 RET
35
36TEXT linux_sigreturn(SB), 1, $0
37 MOVL $119, AX /* sys_sigreturn */
38 INT $0x80
39 RET
40
41TEXT linux_rtsigreturn(SB), 1, $0
42 MOVL $173, AX /* sys_rt_sigreturn */
43 INT $0x80
44 RET
45
46TEXT get_ds(SB), 1, $0
47 PUSHL DS
48 POPL AX
49 RET
50TEXT get_cs(SB), 1, $0
51 PUSHL CS
52 POPL AX
53 RET