PPC4xx: Simplified post_word_{load,store}
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
@@ -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
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]>PATCH v2 1/1 PPC4xx: Simplified post_word_{load, store}
In reply to Grant EricksonThis 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
@@ -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
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_
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_ADDR8 | 1
#defineCFG_POST_WORD_ADDR16 | 3Then ((
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
PATCH v3 1/1 PPC4xx: Simplified post_word_{load, store}
In reply to Grant EricksonThis 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
@@ -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
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
=====================================================================
Wolfgang Denk
AppliedPATCH v3 1/1 PPC4xx: Simplified post_word_{load, store}
In reply to Grant EricksonQuoted 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.
Signed-off-by Grant Erickson <[email protected]>--- 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.