xref: /plan9-contrib/sys/src/9/loongson/archln.c (revision a81c3ea0c7f009a3088ab7fe55ea9013d9d77a74)
1*a81c3ea0SDavid du Colombier #include "u.h"
2*a81c3ea0SDavid du Colombier #include "../port/lib.h"
3*a81c3ea0SDavid du Colombier #include "mem.h"
4*a81c3ea0SDavid du Colombier #include "dat.h"
5*a81c3ea0SDavid du Colombier #include "fns.h"
6*a81c3ea0SDavid du Colombier #include "io.h"
7*a81c3ea0SDavid du Colombier #include "../port/error.h"
8*a81c3ea0SDavid du Colombier #include "ureg.h"
9*a81c3ea0SDavid du Colombier #include "../port/netif.h"
10*a81c3ea0SDavid du Colombier #include "etherif.h"
11*a81c3ea0SDavid du Colombier 
12*a81c3ea0SDavid du Colombier int
archether(unsigned ctlrno,Ether * ether)13*a81c3ea0SDavid du Colombier archether(unsigned ctlrno, Ether *ether)
14*a81c3ea0SDavid du Colombier {
15*a81c3ea0SDavid du Colombier 	switch(ctlrno) {
16*a81c3ea0SDavid du Colombier 	case 0:
17*a81c3ea0SDavid du Colombier 		ether->type = "rtl8139";
18*a81c3ea0SDavid du Colombier 		ether->ctlrno = ctlrno;
19*a81c3ea0SDavid du Colombier 		ether->irq = ILpci;
20*a81c3ea0SDavid du Colombier 		ether->nopt = 0;
21*a81c3ea0SDavid du Colombier 		ether->mbps = 100;
22*a81c3ea0SDavid du Colombier 		return 1;
23*a81c3ea0SDavid du Colombier 	}
24*a81c3ea0SDavid du Colombier 	return -1;
25*a81c3ea0SDavid du Colombier }
26*a81c3ea0SDavid du Colombier 
27*a81c3ea0SDavid du Colombier /* port i/o */
28*a81c3ea0SDavid du Colombier void
insb(int port,void * p,int count)29*a81c3ea0SDavid du Colombier insb(int port, void *p, int count)
30*a81c3ea0SDavid du Colombier {
31*a81c3ea0SDavid du Colombier 	uchar *q = p;
32*a81c3ea0SDavid du Colombier 
33*a81c3ea0SDavid du Colombier 	for(; count > 0; count--)
34*a81c3ea0SDavid du Colombier 		*q++ = inb(port);
35*a81c3ea0SDavid du Colombier }
36*a81c3ea0SDavid du Colombier 
37*a81c3ea0SDavid du Colombier void
inss(int port,void * p,int count)38*a81c3ea0SDavid du Colombier inss(int port, void *p, int count)
39*a81c3ea0SDavid du Colombier {
40*a81c3ea0SDavid du Colombier 	ushort *q = p;
41*a81c3ea0SDavid du Colombier 
42*a81c3ea0SDavid du Colombier 	for(; count > 0; count--)
43*a81c3ea0SDavid du Colombier 		*q++ = ins(port);
44*a81c3ea0SDavid du Colombier }
45*a81c3ea0SDavid du Colombier 
46*a81c3ea0SDavid du Colombier void
insl(int port,void * p,int count)47*a81c3ea0SDavid du Colombier insl(int port, void *p, int count)
48*a81c3ea0SDavid du Colombier {
49*a81c3ea0SDavid du Colombier 	ulong *q = p;
50*a81c3ea0SDavid du Colombier 
51*a81c3ea0SDavid du Colombier 	for(; count > 0; count--)
52*a81c3ea0SDavid du Colombier 		*q++ = inl(port);
53*a81c3ea0SDavid du Colombier }
54*a81c3ea0SDavid du Colombier 
55*a81c3ea0SDavid du Colombier void
outsb(int port,void * p,int count)56*a81c3ea0SDavid du Colombier outsb(int port, void *p, int count)
57*a81c3ea0SDavid du Colombier {
58*a81c3ea0SDavid du Colombier 	uchar *q = p;
59*a81c3ea0SDavid du Colombier 
60*a81c3ea0SDavid du Colombier 	for(; count > 0; count--)
61*a81c3ea0SDavid du Colombier 		outb(port, *q++);
62*a81c3ea0SDavid du Colombier }
63*a81c3ea0SDavid du Colombier 
64*a81c3ea0SDavid du Colombier void
outss(int port,void * p,int count)65*a81c3ea0SDavid du Colombier outss(int port, void *p, int count)
66*a81c3ea0SDavid du Colombier {
67*a81c3ea0SDavid du Colombier 	ushort *q = p;
68*a81c3ea0SDavid du Colombier 
69*a81c3ea0SDavid du Colombier 	for(; count > 0; count--)
70*a81c3ea0SDavid du Colombier 		outs(port, *q++);
71*a81c3ea0SDavid du Colombier }
72*a81c3ea0SDavid du Colombier 
73*a81c3ea0SDavid du Colombier void
outsl(int port,void * p,int count)74*a81c3ea0SDavid du Colombier outsl(int port, void *p, int count)
75*a81c3ea0SDavid du Colombier {
76*a81c3ea0SDavid du Colombier 	ulong *q = p;
77*a81c3ea0SDavid du Colombier 
78*a81c3ea0SDavid du Colombier 	for(; count > 0; count--)
79*a81c3ea0SDavid du Colombier 		outl(port, *q++);
80*a81c3ea0SDavid du Colombier }
81*a81c3ea0SDavid du Colombier 
82*a81c3ea0SDavid du Colombier void
fptrap(Ureg *)83*a81c3ea0SDavid du Colombier fptrap(Ureg*)
84*a81c3ea0SDavid du Colombier {
85*a81c3ea0SDavid du Colombier }
86