~kris/9p

9hist

ref: bb4d1792cb33aa7aebe6a9e2d14c02cd1b61081a 9hist/mpc/inbc.c -rw-r--r-- 1.9 KiB
bb4d1792 — David du Colombier Plan 9 from Bell Labs 1999-12-21 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++;
	}
}