This source file includes following definitions.
- inb_local
- outb_local
- inb
- inw
- outb
- outw
- outl
- readb
- readw
- readl
- writeb
- writew
- writel
1 #ifndef __ALPHA_IO_H
2 #define __ALPHA_IO_H
3
4
5
6
7
8 #ifndef mb
9 #define mb() __asm__ __volatile__("mb": : :"memory")
10 #endif
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 #define IDENT_ADDR (0xfffffc0000000000UL)
44
45
46
47
48 #define EISA_INTA (IDENT_ADDR + 0x100000000UL)
49
50
51
52
53 #define EISA_FEPROM0 (IDENT_ADDR + 0x180000000UL)
54 #define EISA_FEPROM1 (IDENT_ADDR + 0x1A0000000UL)
55
56
57
58
59 #define EISA_VL82C106 (IDENT_ADDR + 0x1C0000000UL)
60
61
62
63
64 #define EISA_HAE (IDENT_ADDR + 0x1D0000000UL)
65
66
67
68
69 #define EISA_SYSCTL (IDENT_ADDR + 0x1E0000000UL)
70
71
72
73
74 #define EISA_SPARE (IDENT_ADDR + 0x1F0000000UL)
75
76
77
78
79 #define EISA_MEM (IDENT_ADDR + 0x200000000UL)
80
81
82
83
84 #define EISA_IO (IDENT_ADDR + 0x300000000UL)
85
86
87
88
89
90
91
92
93 extern inline unsigned long inb_local(unsigned long addr)
94 {
95 long result = *(volatile int *) ((addr << 9) + EISA_VL82C106);
96 return 0xffUL & result;
97 }
98
99 extern inline void outb_local(unsigned char b, unsigned long addr)
100 {
101 *(volatile unsigned int *) ((addr << 9) + EISA_VL82C106) = b;
102 mb();
103 }
104
105 extern inline unsigned long inb(unsigned long addr)
106 {
107 long result = *(volatile int *) ((addr << 7) + EISA_IO + 0x00);
108 result >>= (addr & 3) * 8;
109 return 0xffUL & result;
110 }
111
112 extern inline unsigned long inw(unsigned long addr)
113 {
114 long result = *(volatile int *) ((addr << 7) + EISA_IO + 0x20);
115 result >>= (addr & 3) * 8;
116 return 0xffffUL & result;
117 }
118
119 extern inline unsigned long inl(unsigned long addr)
120 {
121 return *(volatile unsigned int *) ((addr << 7) + EISA_IO + 0x60);
122 }
123
124 extern inline void outb(unsigned char b, unsigned long addr)
125 {
126 *(volatile unsigned int *) ((addr << 7) + EISA_IO + 0x00) = b * 0x01010101;
127 mb();
128 }
129
130 extern inline void outw(unsigned short b, unsigned long addr)
131 {
132 *(volatile unsigned int *) ((addr << 7) + EISA_IO + 0x20) = b * 0x00010001;
133 mb();
134 }
135
136 extern inline void outl(unsigned int b, unsigned long addr)
137 {
138 *(volatile unsigned int *) ((addr << 7) + EISA_IO + 0x60) = b;
139 mb();
140 }
141
142
143
144
145 extern inline unsigned long readb(unsigned long addr)
146 {
147 long result = *(volatile int *) ((addr << 7) + EISA_MEM + 0x00);
148 result >>= (addr & 3) * 8;
149 return 0xffUL & result;
150 }
151
152 extern inline unsigned long readw(unsigned long addr)
153 {
154 long result = *(volatile int *) ((addr << 7) + EISA_MEM + 0x20);
155 result >>= (addr & 3) * 8;
156 return 0xffffUL & result;
157 }
158
159 extern inline unsigned long readl(unsigned long addr)
160 {
161 return *(volatile unsigned int *) ((addr << 7) + EISA_MEM + 0x60);
162 }
163
164 extern inline void writeb(unsigned short b, unsigned long addr)
165 {
166 *(volatile unsigned int *) ((addr << 7) + EISA_MEM + 0x00) = b * 0x01010101;
167 }
168
169 extern inline void writew(unsigned short b, unsigned long addr)
170 {
171 *(volatile unsigned int *) ((addr << 7) + EISA_MEM + 0x20) = b * 0x00010001;
172 }
173
174 extern inline void writel(unsigned int b, unsigned long addr)
175 {
176 *(volatile unsigned int *) ((addr << 7) + EISA_MEM + 0x60) = b;
177 }
178
179 #endif