Skip to contentSkip to conversation

PPC4xx: Simplified post_word_{load,store}

PATCH Superseded Grant Erickson 3 participants 8 messages May 21, 2008 – Jun 4, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 PPC4xx: Simplified post_word_{load,store}

This patch simplifies post_word_{load,store} by using the preprocessor to eliminate redundant, copy-and-pasted code.

---
 cpu/ppc4xx/commproc.c |   26 +++++++++++---------------
 1 files changed, 11 insertions(+), 15 deletions(-)
cpu/ppc4xx/commproc.c +11 -15
index 22156dd..7d5ef46 100644
@@ -30,29 +30,25 @@
 
 #if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
 
-#if defined(CFG_POST_ALT_WORD_ADDR)
-void post_word_store (ulong a)
-{
-	out_be32((void *)CFG_POST_ALT_WORD_ADDR, a);
-}
+#if defined(CFG_POST_WORD_ADDR)
+# define _POST_ADDR	CFG_OCM_DATA_ADDR + CFG_POST_WORD_ADDR
+#elif defined(CFG_POST_ALT_WORD_ADDR)
+# define _POST_ADDR	CFG_POST_ALT_WORD_ADDR
+#endif
 
-ulong post_word_load (void)
-{
-	return in_be32((void *)CFG_POST_ALT_WORD_ADDR);
-}
-#else /* CFG_POST_ALT_WORD_ADDR */
 void post_word_store (ulong a)
 {
-	volatile void *save_addr = (volatile void *)(CFG_OCM_DATA_ADDR + CFG_POST_WORD_ADDR);
-	*(volatile ulong *) save_addr = a;
+	volatile void *save_addr = (volatile void *)(_POST_ADDR);
+
+	out_be32(save_addr, a);
 }
 
 ulong post_word_load (void)
 {
-	volatile void *save_addr = (volatile void *)(CFG_OCM_DATA_ADDR + CFG_POST_WORD_ADDR);
-	return *(volatile ulong *) save_addr;
+	volatile void *save_addr = (volatile void *)(_POST_ADDR);
+
+	return in_be32(save_addr);
 }
-#endif /* CFG_POST_ALT_WORD_ADDR */
 
 #endif	/* CONFIG_POST || CONFIG_LOGBUFFER*/
 
Signature · 1 line
1.5.4.3
#1 lore raw

PATCH 1/1 PPC4xx: Simplified post_word_{load, store}

Quoted 2 lines · In message <[email protected]> you…

This patch simplifies post_word_{load,store} by using the preprocessor to eliminate redundant, copy-and-pasted code.

...

cpu/ppc4xx/commproc.c line 34

Quoted 2 lines
cpu/ppc4xx/commproc.c +2 -0
+#if defined(CFG_POST_WORD_ADDR)
+# define _POST_ADDR	CFG_OCM_DATA_ADDR + CFG_POST_WORD_ADDR

Please make this

# define _POST_ADDR ((CFG_OCM_DATA_ADDR) + (CFG_POST_WORD_ADDR))

cpu/ppc4xx/commproc.c line 36

Quoted 2 lines
cpu/ppc4xx/commproc.c +2 -0
+#elif defined(CFG_POST_ALT_WORD_ADDR)
+# define _POST_ADDR	CFG_POST_ALT_WORD_ADDR
# define _POST_ADDR	(CFG_POST_ALT_WORD_ADDR)

Best regards,

Wolfgang Denk

Signature · 6 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
If I don't document something, it's usually either for a good reason,
or a bad reason.  In this case it's a good reason.  :-)
                 - Larry Wall in <[email protected]>
#2 lore raw

PATCH v2 1/1 PPC4xx: Simplified post_word_{load, store}

In reply to Grant Erickson

This patch simplifies post_word_{load,store} by using the preprocessor to eliminate redundant, copy-and-pasted code.

---
 cpu/ppc4xx/commproc.c |   26 +++++++++++---------------
 1 files changed, 11 insertions(+), 15 deletions(-)
cpu/ppc4xx/commproc.c +11 -15
index 22156dd..a6940e2 100644
@@ -30,29 +30,25 @@
 
 #if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
 
-#if defined(CFG_POST_ALT_WORD_ADDR)
-void post_word_store (ulong a)
-{
-	out_be32((void *)CFG_POST_ALT_WORD_ADDR, a);
-}
+#if defined(CFG_POST_WORD_ADDR)
+# define _POST_ADDR	(CFG_OCM_DATA_ADDR + CFG_POST_WORD_ADDR)
+#elif defined(CFG_POST_ALT_WORD_ADDR)
+# define _POST_ADDR	(CFG_POST_ALT_WORD_ADDR)
+#endif
 
-ulong post_word_load (void)
-{
-	return in_be32((void *)CFG_POST_ALT_WORD_ADDR);
-}
-#else /* CFG_POST_ALT_WORD_ADDR */
 void post_word_store (ulong a)
 {
-	volatile void *save_addr = (volatile void *)(CFG_OCM_DATA_ADDR + CFG_POST_WORD_ADDR);
-	*(volatile ulong *) save_addr = a;
+	volatile void *save_addr = (volatile void *)(_POST_ADDR);
+
+	out_be32(save_addr, a);
 }
 
 ulong post_word_load (void)
 {
-	volatile void *save_addr = (volatile void *)(CFG_OCM_DATA_ADDR + CFG_POST_WORD_ADDR);
-	return *(volatile ulong *) save_addr;
+	volatile void *save_addr = (volatile void *)(_POST_ADDR);
+
+	return in_be32(save_addr);
 }
-#endif /* CFG_POST_ALT_WORD_ADDR */
 
 #endif	/* CONFIG_POST || CONFIG_LOGBUFFER*/
 

--
1.5.4.3

#3 lore raw

PATCH v2 1/1 PPC4xx: Simplified post_word_{load, store}

Quoted 2 lines · In message <[email protected]> you…

This patch simplifies post_word_{load,store} by using the preprocessor to eliminate redundant, copy-and-pasted code.

...

cpu/ppc4xx/commproc.c line 34

Quoted 2 lines
cpu/ppc4xx/commproc.c +2 -0
+#if defined(CFG_POST_WORD_ADDR)
+# define _POST_ADDR	(CFG_OCM_DATA_ADDR + CFG_POST_WORD_ADDR)

Please make this

# define _POST_ADDR ((CFG_OCM_DATA_ADDR) + (CFG_POST_WORD_ADDR))

This *is* important. Assume

	#define	CFG_OCM_DATA_ADDR	8 | 1
	#define CFG_POST_WORD_ADDR	16 | 3

Then ((CFG_OCM_DATA_ADDR) + (CFG_POST_WORD_ADDR)) gives 28 as intended, but (CFG_OCM_DATA_ADDR + CFG_POST_WORD_ADDR) gives 27.

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
I express preference for a chronological  sequence  of  events  which
precludes a violence.   - Terry Pratchett, _The Dark Side of the Sun_
#4 lore raw

PATCH v2 1/1 PPC4xx: Simplified post_word_{load, store}

Quoted 13 lines · Wolfgang Denk

In message <[email protected]> you

Quoted 2 lines · wrote:

This patch simplifies post_word_{load,store} by using the preprocessor to eliminate redundant, copy-and-pasted code.

...

cpu/ppc4xx/commproc.c line 34

Quoted 2 lines
cpu/ppc4xx/commproc.c +2 -0
+#if defined(CFG_POST_WORD_ADDR)
+# define _POST_ADDR (CFG_OCM_DATA_ADDR + CFG_POST_WORD_ADDR)

Please make this

# define _POST_ADDR ((CFG_OCM_DATA_ADDR) + (CFG_POST_WORD_ADDR))
Quoted 7 lines

This *is* important. Assume

#define CFG_OCM_DATA_ADDR 8 | 1
#define CFG_POST_WORD_ADDR 16 | 3

Then ((CFG_OCM_DATA_ADDR) + (CFG_POST_WORD_ADDR)) gives 28 as intended, but (CFG_OCM_DATA_ADDR + CFG_POST_WORD_ADDR) gives 27.

Agreed and I will make the change; however, were that the case, I would tend to favor the approach that the responsibility is on the definer of '8 | 1' and '16 | 3' to wrap those in parens. Thankfully, parens are a free resource.

Regards,

Grant

#5 lore raw

PATCH v3 1/1 PPC4xx: Simplified post_word_{load, store}

In reply to Grant Erickson

This patch simplifies post_word_{load,store} by using the preprocessor to eliminate redundant, copy-and-pasted code.

---
 cpu/ppc4xx/commproc.c |   26 +++++++++++---------------
 1 files changed, 11 insertions(+), 15 deletions(-)
cpu/ppc4xx/commproc.c +11 -15
index 22156dd..a6940e2 100644
@@ -30,29 +30,25 @@
 
 #if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
 
-#if defined(CFG_POST_ALT_WORD_ADDR)
-void post_word_store (ulong a)
-{
-	out_be32((void *)CFG_POST_ALT_WORD_ADDR, a);
-}
+#if defined(CFG_POST_WORD_ADDR)
+# define _POST_ADDR	((CFG_OCM_DATA_ADDR) + (CFG_POST_WORD_ADDR))
+#elif defined(CFG_POST_ALT_WORD_ADDR)
+# define _POST_ADDR	(CFG_POST_ALT_WORD_ADDR)
+#endif
 
-ulong post_word_load (void)
-{
-	return in_be32((void *)CFG_POST_ALT_WORD_ADDR);
-}
-#else /* CFG_POST_ALT_WORD_ADDR */
 void post_word_store (ulong a)
 {
-	volatile void *save_addr = (volatile void *)(CFG_OCM_DATA_ADDR + CFG_POST_WORD_ADDR);
-	*(volatile ulong *) save_addr = a;
+	volatile void *save_addr = (volatile void *)(_POST_ADDR);
+
+	out_be32(save_addr, a);
 }
 
 ulong post_word_load (void)
 {
-	volatile void *save_addr = (volatile void *)(CFG_OCM_DATA_ADDR + CFG_POST_WORD_ADDR);
-	return *(volatile ulong *) save_addr;
+	volatile void *save_addr = (volatile void *)(_POST_ADDR);
+
+	return in_be32(save_addr);
 }
-#endif /* CFG_POST_ALT_WORD_ADDR */
 
 #endif	/* CONFIG_POST || CONFIG_LOGBUFFER*/
 

--
1.5.4.3

#6 lore raw

PATCH v3 1/1 PPC4xx: Simplified post_word_{load, store}

Quoted 2 lines · Grant Erickson

This patch simplifies post_word_{load,store} by using the preprocessor to eliminate redundant, copy-and-pasted code.

Applied to u-boot-ppc4xx repo. Thanks.

Best regards,
Stefan

=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================

#7 lore raw

PATCH v3 1/1 PPC4xx: Simplified post_word_{load, store}

In reply to Grant Erickson
Quoted 7 lines · In message <[email protected]> you…

This patch simplifies post_word_{load,store} by using the preprocessor to eliminate redundant, copy-and-pasted code.

---
 cpu/ppc4xx/commproc.c |   26 +++++++++++---------------
 1 files changed, 11 insertions(+), 15 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk

Signature · 4 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
If you fail to plan, plan to fail.