OSDN Git Service

DMAドライバ. DrFSマイナーチェンジ
[vaneos/DivergeMirror.git] / kernel / io_cpu.S
1 /*
2         io_cpu.S
3         Input/Output
4         (C) 2014-2015 VOSystems.
5 */
6
7 .file "io_cpu.S"
8 .code32
9 .intel_syntax noprefix
10
11 .global load_gdtr, load_idtr, io_cli, io_sti, io_hlt, load_tr
12 .global io_in8, io_in16, io_in32, io_out8, io_out16, io_out32
13
14 load_gdtr:
15         mov ax,[esp+4]
16         mov [esp+6],ax
17         lgdt [esp+6]
18         ret
19         
20 load_idtr:
21         MOV     AX,[ESP+4]
22         MOV     [ESP+6],AX
23         LIDT [ESP+6]
24         RET
25         
26 io_cli:
27         cli
28         ret
29         
30 io_sti:
31         sti
32         ret
33         
34 io_hlt:
35         hlt
36         ret
37         
38 load_tr: # void load_tr(int tr);
39         LTR             [ESP+4] # tr
40         RET
41         
42 io_in8: # int io_in8(int port);
43         MOV     EDX,[ESP+4]             # port
44         MOV     EAX,0
45         IN      AL,DX
46         RET
47
48 io_in16:        # int io_in16(int port);
49         MOV     EDX,[ESP+4]             # port
50         MOV     EAX,0
51         IN      AX,DX
52         RET
53
54 io_in32:        # int io_in32(int port);
55         MOV     EDX,[ESP+4]             # port
56         IN      EAX,DX
57         RET
58
59 io_out8:        # void io_out8(int port, int data);
60         MOV     EDX,[ESP+4]             # port
61         MOV     AL,[ESP+8]              # data
62         OUT     DX,AL
63         RET
64
65 io_out16:       # void io_out16(int port, int data);
66         MOV     EDX,[ESP+4]             # port
67         MOV     EAX,[ESP+8]             # data
68         OUT     DX,AX
69         RET
70
71 io_out32:       # void io_out32(int port, int data);
72         MOV     EDX,[ESP+4]             # port
73         MOV     EAX,[ESP+8]             # data
74         OUT     DX,EAX
75         RET