~kris/9p

9hist

ref: 4efbe6d4f2e02bc39ede3388fd65c4d08a6c56ad 9hist/mpc/inbc.c -rw-r--r-- 1.9 KiB
4efbe6d4 — David du Colombier Plan 9 from Bell Labs 2000-07-16 26 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include	"u.h"
#include	"../port/lib.h"
#include	"mem.h"
#include	"dat.h"
#include	"fns.h"
#include	"io.h"

int
inb(int port)
{
	return *(uchar*)(port + ISAMEM);
}

ushort
ins(int port)
{
	int x = *(ushort*)(port + ISAMEM);
	return ((x&0xff) << 8) | (x>>8);
}

ulong
inl(int port)
{
	ulong x = *(ulong*)(port + ISAMEM);
//print("inl %d\n", port);
	return (x << 24) | ((x&0xff00)<<8) | ((x>>8)&0xff00) | (x>>24);
}

void
outb(int port, int val)
{
//print("outb %d %ux\n", port, val);
	*(uchar*)(port + ISAMEM) = val;
}

void
outs(int port, ushort val)
{
//print("outs %d %ux\n", port, val);
	int x = (val<<8) | (val>>8);
	*(ushort*)(port + ISAMEM) = x;
}

void
outl(int port, ulong val)
{
//print("outl %d %ulx\n", port, val);
	ulong x = (val << 24) | ((val&0xff00)<<8) | ((val>>8)&0xff00) | (val>>24);
	*(ulong*)(port + ISAMEM) = x;
}

void
insb(int port, void *buf, int len)
{
	int i;
	uchar *p, *q;

//print("insb %d %d\n", port, len);
	p = (uchar*)(port + ISAMEM);
	q = buf;
	for(i = 0; i < len; i++){
		*q++ = *p;
	}
}

void
inss(int port, void *buf, int len)
{
	int i;
	ushort *p, *q;

//print("inss %d %d\n", port, len);
	p = (ushort*)(port + ISAMEM);
	q = buf;
	for(i = 0; i < len; i++){
		*q++ = *p;
	}
}

void
insl(int port, void *buf, int len)
{
	int i;
	ulong *p, *q;

//print("insl %d %d\n", port, len);
	p = (ulong*)(port + ISAMEM);
	q = buf;
	for(i = 0; i < len; i++){
		*q++ = *p;
	}
}

void
outsb(int port, void *buf, int len)
{
	int i;
	uchar *p, *q;

//print("outsb %d %d\n", port, len);
	p = (uchar*)(port + ISAMEM);
	q = buf;
	for(i = 0; i < len; i++){
		*p = *q++;
	}
}

void
outss(int port, void *buf, int len)
{
	int i;
	ushort *p, *q;

//print("outss %d %d\n", port, len);
	p = (ushort*)(port + ISAMEM);
	q = buf;
	for(i = 0; i < len; i++){
		*p = *q++;
	}
}

void
outsl(int port, void *buf, int len)
{
	int i;
	ulong *p, *q;

//print("outsl %d %d\n", port, len);
	p = (ulong*)(port + ISAMEM);
	q = buf;
	for(i = 0; i < len; i++){
		*p = *q++;
	}
}