]> git.lizzy.rs Git - plan9front.git/blob - sys/src/boot/pc/uart.s
kernel: implement portable userinit() and simplify process creation
[plan9front.git] / sys / src / boot / pc / uart.s
1 #include "x16.h"
2
3 TEXT uartinit(SB), $0
4         MOVL c+8(SP), AX
5         MOVB $0x00, AH
6         JMP _uartbios
7         
8 TEXT uartputc(SB), $0
9         MOVL c+8(SP), AX
10         MOVB $0x01, AH
11         JMP _uartbios
12
13 TEXT uartgetc(SB), $0
14         MOVL p+4(SP), DX
15         CALL rmode16(SB)
16         STI
17         MOVB $0x03, AH
18         BIOSCALL(0x14)
19         CALL16(pmode32(SB))
20         ANDL $0x8100, AX
21         MOVL $0x0100, BX
22         CMPL BX, AX
23         JE _uartread
24         XORL AX, AX
25         RET
26 _uartread:
27         MOVB $0x02, AH
28 _uartbios:
29         MOVL p+4(SP), DX
30         CALL rmode16(SB)
31         STI
32         BIOSCALL(0x14)
33         CALL16(pmode32(SB))
34         ANDL $0xFF, AX
35         RET