Annotation of sys/arch/mvmeppc/stand/libbug/netctrl.c, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: netctrl.c,v 1.3 2004/01/24 21:12:38 miod Exp $ */
2:
3: /*
4: * bug routines -- assumes that the necessary sections of memory
5: * are preserved.
6: */
7: #include <sys/types.h>
8:
9: #include "libbug.h"
10:
11: /* returns 0: success, nonzero: error */
12: int
13: mvmeprom_netctrl(arg)
14: struct mvmeprom_netctrl *arg;
15: {
16: asm volatile ("mr 3, %0":: "r" (arg));
17: MVMEPROM_CALL(MVMEPROM_NETCTRL);
18: return (arg->status);
19: }
20:
21: int
22: mvmeprom_netctrl_init(clun, dlun)
23: u_char clun;
24: u_char dlun;
25: {
26: struct mvmeprom_netctrl niocall;
27: niocall.clun = clun;
28: niocall.dlun = dlun;
29: niocall.status = 0;
30: niocall.cmd = 0; /* init */
31: niocall.addr = 0;
32: niocall.len = 0;
33: niocall.flags = 0;
34: mvmeprom_netctrl(&niocall);
35: return(niocall.status);
36: }
37:
38: int
39: mvmeprom_netctrl_hwa(clun, dlun, addr, len)
40: u_char clun;
41: u_char dlun;
42: void *addr;
43: u_long *len;
44: {
45: struct mvmeprom_netctrl niocall;
46: niocall.clun = clun;
47: niocall.dlun = dlun;
48: niocall.status = 0;
49: niocall.cmd = 1; /* get hw address */
50: niocall.addr = addr;
51: niocall.len = *len;
52: niocall.flags = 0;
53: mvmeprom_netctrl(&niocall);
54: *len = niocall.len;
55: return(niocall.status);
56: }
57:
58: int
59: mvmeprom_netctrl_tx(clun, dlun, addr, len)
60: u_char clun;
61: u_char dlun;
62: void *addr;
63: u_long *len;
64: {
65: struct mvmeprom_netctrl niocall;
66: niocall.clun = clun;
67: niocall.dlun = dlun;
68: niocall.status = 0;
69: niocall.cmd = 2; /* transmit */
70: niocall.addr = addr;
71: niocall.len = *len;
72: niocall.flags = 0;
73: mvmeprom_netctrl(&niocall);
74: *len = niocall.len;
75: return(niocall.status);
76: }
77:
78: int
79: mvmeprom_netctrl_rx(clun, dlun, addr, len)
80: u_char clun;
81: u_char dlun;
82: void *addr;
83: u_long *len;
84: {
85: struct mvmeprom_netctrl niocall;
86: niocall.clun = clun;
87: niocall.dlun = dlun;
88: niocall.status = 0;
89: niocall.cmd = 3; /* receive */
90: niocall.addr = addr;
91: niocall.len = *len;
92: niocall.flags = 0;
93: mvmeprom_netctrl(&niocall);
94: *len = niocall.len;
95: return(niocall.status);
96: }
97:
98: int
99: mvmeprom_netctrl_flush_rx(clun, dlun)
100: u_char clun;
101: u_char dlun;
102: {
103: struct mvmeprom_netctrl niocall;
104: niocall.clun = clun;
105: niocall.dlun = dlun;
106: niocall.status = 0;
107: niocall.cmd = 4; /* reset */
108: niocall.addr = 0;
109: niocall.len = 0;
110: niocall.flags = 0;
111: mvmeprom_netctrl(&niocall);
112: return(niocall.status);
113: }
114:
115: int
116: mvmeprom_netctrl_reset(clun, dlun)
117: u_char clun;
118: u_char dlun;
119: {
120: struct mvmeprom_netctrl niocall;
121: niocall.clun = clun;
122: niocall.dlun = dlun;
123: niocall.status = 0;
124: niocall.cmd = 5; /* reset */
125: niocall.addr = 0;
126: niocall.len = 0;
127: niocall.flags = 0;
128: mvmeprom_netctrl(&niocall);
129: return(niocall.status);
130: }
131:
132:
CVSweb