Skip to contentSkip to conversation

sparc64: Annotate pointers in PeeCeeI.c

PATCH In review Harvey Harrison 2 participants 3 messages Oct 16, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 sparc64: Annotate pointers in PeeCeeI.c

This has no functional changes, but annotates the code to make the endianness more clear. In addition, removes some of the only users of cpu_to_le[16|32]p in the kernel.

---
 arch/sparc64/lib/PeeCeeI.c |   34 +++++++++++++++++-----------------
 1 files changed, 17 insertions(+), 17 deletions(-)
arch/sparc64/lib/PeeCeeI.c +17 -17
index 8b313f1..e609b65 100644
@@ -53,32 +53,32 @@ void outsl(unsigned long __addr, const void *src, unsigned long count)
 
 	if (count) {
 		if ((((u64)src) & 0x3) = 0) {
-			u32 *p = (u32 *)src;
+			__le32 *p = (__le32 *)src;
 			while (count--) {
-				u32 val = cpu_to_le32p(p);
+				u32 val = le32_to_cpup(p);
 				outl(val, addr);
 				p++;
 			}
 		} else {
 			u8 *pb;
-			u16 *ps = (u16 *)src;
+			__le16 *ps = (__le16 *)src;
 			u32 l = 0, l2;
-			u32 *pi;
+			__le32 *pi;
 
 			switch (((u64)src) & 0x3) {
 			case 0x2:
 				count -= 1;
-				l = cpu_to_le16p(ps) << 16;
+				l = le16_to_cpup(ps) << 16;
 				ps++;
-				pi = (u32 *)ps;
+				pi = (__le32 *)ps;
 				while (count--) {
-					l2 = cpu_to_le32p(pi);
+					l2 = le32_to_cpup(pi);
 					pi++;
 					outl(((l >> 16) | (l2 << 16)), addr);
 					l = l2;
 				}
-				ps = (u16 *)pi;
-				l2 = cpu_to_le16p(ps);
+				ps = (__le16 *)pi;
+				l2 = le16_to_cpup(ps);
 				outl(((l >> 16) | (l2 << 16)), addr);
 				break;
 
@@ -86,13 +86,13 @@ void outsl(unsigned long __addr, const void *src, unsigned long count)
 				count -= 1;
 				pb = (u8 *)src;
 				l = (*pb++ << 8);
-				ps = (u16 *)pb;
-				l2 = cpu_to_le16p(ps);
+				ps = (__le16 *)pb;
+				l2 = le16p_to_cpup(ps);
 				ps++;
 				l |= (l2 << 16);
-				pi = (u32 *)ps;
+				pi = (__le32 *)ps;
 				while (count--) {
-					l2 = cpu_to_le32p(pi);
+					l2 = le32_to_cpup(pi);
 					pi++;
 					outl(((l >> 8) | (l2 << 24)), addr);
 					l = l2;
@@ -105,15 +105,15 @@ void outsl(unsigned long __addr, const void *src, unsigned long count)
 				count -= 1;
 				pb = (u8 *)src;
 				l = (*pb++ << 24);
-				pi = (u32 *)pb;
+				pi = (__le32 *)pb;
 				while (count--) {
-					l2 = cpu_to_le32p(pi);
+					l2 = le32_to_cpup(pi);
 					pi++;
 					outl(((l >> 24) | (l2 << 8)), addr);
 					l = l2;
 				}
-				ps = (u16 *)pi;
-				l2 = cpu_to_le16p(ps);
+				ps = (__le16 *)pi;
+				l2 = le16_to_cpup(ps);
 				ps++;
 				pb = (u8 *)ps;
 				l2 |= (*pb << 16);
Signature · 1 line
1.6.0.2.711.gf1ba4
#1 lore raw

From: Harvey Harrison <[email protected]>
Date: Wed, 15 Oct 2008 17:15:19 -0700

Quoted 5 lines

This has no functional changes, but annotates the code to make the endianness more clear. In addition, removes some of the only users of cpu_to_le[16|32]p in the kernel.

Remind me what the problem is with cpu_to_{le,be}*()?

The interface names define a direction, which in this case is "CPU endianness to BE/LE endianness". And that is exactly what is happening in the out*() routines.

This aids comprehension of the code and is quite useful IMHO.

#2 lore raw
Quoted 11 lines · David Miller

From: Harvey Harrison <[email protected]>
Date: Wed, 15 Oct 2008 17:15:19 -0700

Quoted 5 lines

This has no functional changes, but annotates the code to make the endianness more clear. In addition, removes some of the only users of cpu_to_le[16|32]p in the kernel.

Remind me what the problem is with cpu_to_{le,be}*()?

Nothing inherently wrong with them, other than it seems that nearly every user (not this one) would be better served using the by-value versions.

Quoted 5 lines

The interface names define a direction, which in this case is "CPU endianness to BE/LE endianness". And that is exactly what is happening in the out*() routines.

This aids comprehension of the code and is quite useful IMHO.

Yes, and even from that angle I think my patch is more instructive to understanding the direction, compare for example in the same file outsw versus outsl which this patch changes.

Harvey