fix kernel oops in the redboot partition parser when CONFIG_MTD_REDBOOT_PARTS_UNALLOC...
[openwrt/svn-archive/archive.git] / target / linux / generic-2.6 / patches-2.6.23 / 920-ppc_big_endian_io_memory_accessors.patch
1 From a.othieno@bluewin.ch Tue Oct 11 07:50:21 2005
2 From: Arthur Othieno <a.othieno@bluewin.ch>
3 Subject: Big-endian I/O memory accessors.
4 Date: Tue, 11 Oct 2005 07:50:21 +1000
5 X-Patchwork-ID: 2759
6
7 From: Arthur Othieno <a.othieno@bluewin.ch>
8
9 I/O memory accessors. Big endian version. For those busses/devices
10 that do export big-endian I/O memory.
11
12 Of notable relevance/reference:
13
14 http://lwn.net/Articles/132804/
15 http://ozlabs.org/pipermail/linuxppc-embedded/2005-August/019798.html
16 http://ozlabs.org/pipermail/linuxppc-embedded/2005-August/019752.html
17
18 Signed-off-by: Arthur Othieno <a.othieno@bluewin.ch>
19 ---
20
21 Paulus,
22
23 A similar patch for ppc64 made it upstream with your big ppc64 merge.
24 This one is still sitting in http://patchwork.ozlabs.org/linuxppc/
25 and didn't make it with the ppc32 equivalent. Thanks.
26
27
28 include/asm-ppc/io.h | 20 ++++++++++++++++++++
29 1 file changed, 20 insertions(+)
30
31
32 ---
33 --- a/include/asm-ppc/io.h
34 +++ b/include/asm-ppc/io.h
35 @@ -453,11 +453,21 @@
36 return readw(addr);
37 }
38
39 +static inline unsigned int ioread16be(void __iomem *addr)
40 +{
41 + return in_be16(addr);
42 +}
43 +
44 static inline unsigned int ioread32(void __iomem *addr)
45 {
46 return readl(addr);
47 }
48
49 +static inline unsigned int ioread32be(void __iomem *addr)
50 +{
51 + return in_be32(addr);
52 +}
53 +
54 static inline void iowrite8(u8 val, void __iomem *addr)
55 {
56 writeb(val, addr);
57 @@ -468,11 +478,21 @@
58 writew(val, addr);
59 }
60
61 +static inline void iowrite16be(u16 val, void __iomem *addr)
62 +{
63 + out_be16(addr, val);
64 +}
65 +
66 static inline void iowrite32(u32 val, void __iomem *addr)
67 {
68 writel(val, addr);
69 }
70
71 +static inline void iowrite32be(u32 val, void __iomem *addr)
72 +{
73 + out_be32(addr, val);
74 +}
75 +
76 static inline void ioread8_rep(void __iomem *addr, void *dst, unsigned long count)
77 {
78 _insb(addr, dst, count);