PeeCeeI.c (6206aa8b2b9a45b4cf3ee31b7209b014be349fd9) PeeCeeI.c (917c3660d6d9a4b073a3db7c10f6989adae4e191)
1/*
2 * PeeCeeI.c: The emerging standard...
3 *
4 * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
5 */
6
1/*
2 * PeeCeeI.c: The emerging standard...
3 *
4 * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
5 */
6
7#include <linux/module.h>
8
7#include <asm/io.h>
8#include <asm/byteorder.h>
9
10void outsb(unsigned long __addr, const void *src, unsigned long count)
11{
12 void __iomem *addr = (void __iomem *) __addr;
13 const u8 *p = src;
14
15 while (count--)
16 outb(*p++, addr);
17}
9#include <asm/io.h>
10#include <asm/byteorder.h>
11
12void outsb(unsigned long __addr, const void *src, unsigned long count)
13{
14 void __iomem *addr = (void __iomem *) __addr;
15 const u8 *p = src;
16
17 while (count--)
18 outb(*p++, addr);
19}
20EXPORT_SYMBOL(outsb);
18
19void outsw(unsigned long __addr, const void *src, unsigned long count)
20{
21 void __iomem *addr = (void __iomem *) __addr;
22
23 while (count--) {
24 __raw_writew(*(u16 *)src, addr);
25 src += sizeof(u16);
26 }
27}
21
22void outsw(unsigned long __addr, const void *src, unsigned long count)
23{
24 void __iomem *addr = (void __iomem *) __addr;
25
26 while (count--) {
27 __raw_writew(*(u16 *)src, addr);
28 src += sizeof(u16);
29 }
30}
31EXPORT_SYMBOL(outsw);
28
29void outsl(unsigned long __addr, const void *src, unsigned long count)
30{
31 void __iomem *addr = (void __iomem *) __addr;
32 u32 l, l2;
33
34 if (!count)
35 return;

--- 37 unchanged lines hidden (view full) ---

73 l |= (l2 >> 8);
74 __raw_writel(l, addr);
75 l = l2 << 24;
76 src += sizeof(u32);
77 }
78 break;
79 }
80}
32
33void outsl(unsigned long __addr, const void *src, unsigned long count)
34{
35 void __iomem *addr = (void __iomem *) __addr;
36 u32 l, l2;
37
38 if (!count)
39 return;

--- 37 unchanged lines hidden (view full) ---

77 l |= (l2 >> 8);
78 __raw_writel(l, addr);
79 l = l2 << 24;
80 src += sizeof(u32);
81 }
82 break;
83 }
84}
85EXPORT_SYMBOL(outsl);
81
82void insb(unsigned long __addr, void *dst, unsigned long count)
83{
84 void __iomem *addr = (void __iomem *) __addr;
85
86 if (count) {
87 u32 *pi;
88 u8 *pb = dst;

--- 11 unchanged lines hidden (view full) ---

100 *pi++ = w;
101 count -= 4;
102 }
103 pb = (u8 *)pi;
104 while (count--)
105 *pb++ = inb(addr);
106 }
107}
86
87void insb(unsigned long __addr, void *dst, unsigned long count)
88{
89 void __iomem *addr = (void __iomem *) __addr;
90
91 if (count) {
92 u32 *pi;
93 u8 *pb = dst;

--- 11 unchanged lines hidden (view full) ---

105 *pi++ = w;
106 count -= 4;
107 }
108 pb = (u8 *)pi;
109 while (count--)
110 *pb++ = inb(addr);
111 }
112}
113EXPORT_SYMBOL(insb);
108
109void insw(unsigned long __addr, void *dst, unsigned long count)
110{
111 void __iomem *addr = (void __iomem *) __addr;
112
113 if (count) {
114 u16 *ps = dst;
115 u32 *pi;

--- 11 unchanged lines hidden (view full) ---

127 *pi++ = w;
128 count -= 2;
129 }
130 ps = (u16 *)pi;
131 if (count)
132 *ps = le16_to_cpu(inw(addr));
133 }
134}
114
115void insw(unsigned long __addr, void *dst, unsigned long count)
116{
117 void __iomem *addr = (void __iomem *) __addr;
118
119 if (count) {
120 u16 *ps = dst;
121 u32 *pi;

--- 11 unchanged lines hidden (view full) ---

133 *pi++ = w;
134 count -= 2;
135 }
136 ps = (u16 *)pi;
137 if (count)
138 *ps = le16_to_cpu(inw(addr));
139 }
140}
141EXPORT_SYMBOL(insw);
135
136void insl(unsigned long __addr, void *dst, unsigned long count)
137{
138 void __iomem *addr = (void __iomem *) __addr;
139
140 if (count) {
141 if ((((unsigned long)dst) & 0x3) == 0) {
142 u32 *pi = dst;

--- 52 unchanged lines hidden (view full) ---

195 *ps++ = ((l >> 8) & 0xffff);
196 pb = (u8 *)ps;
197 *pb = l;
198 break;
199 }
200 }
201 }
202}
142
143void insl(unsigned long __addr, void *dst, unsigned long count)
144{
145 void __iomem *addr = (void __iomem *) __addr;
146
147 if (count) {
148 if ((((unsigned long)dst) & 0x3) == 0) {
149 u32 *pi = dst;

--- 52 unchanged lines hidden (view full) ---

202 *ps++ = ((l >> 8) & 0xffff);
203 pb = (u8 *)ps;
204 *pb = l;
205 break;
206 }
207 }
208 }
209}
210EXPORT_SYMBOL(insl);
203
211