Patchwork [U-Boot] image: push default arch values to arch headers

login
register
mail settings
Submitter Mike Frysinger
Date Sept. 26, 2011, 5:53 a.m.
Message ID <1317016410-608-1-git-send-email-vapier@gentoo.org>
Download mbox | patch
Permalink /patch/116358/
State Changes Requested
Headers show

Comments

Mike Frysinger - Sept. 26, 2011, 5:53 a.m.
This pushes the ugly duplicated arch ifdef lists we maintain in various
image related files out to the arch headers themselves.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 arch/arm/include/asm/u-boot.h        |    3 ++
 arch/avr32/include/asm/u-boot.h      |    3 ++
 arch/blackfin/include/asm/u-boot.h   |    3 ++
 arch/m68k/include/asm/u-boot.h       |    3 ++
 arch/microblaze/include/asm/u-boot.h |    2 +
 arch/mips/include/asm/u-boot.h       |    3 ++
 arch/nios2/include/asm/u-boot.h      |    2 +
 arch/powerpc/include/asm/u-boot.h    |    4 ++
 arch/sh/include/asm/u-boot.h         |    3 ++
 arch/sparc/include/asm/u-boot.h      |    4 ++
 arch/x86/include/asm/u-boot.h        |    3 ++
 common/cmd_bootm.c                   |   26 +--------------
 include/image.h                      |   58 +--------------------------------
 13 files changed, 36 insertions(+), 81 deletions(-)
Wolfgang Denk - Sept. 26, 2011, 6:08 a.m.
Dear Mike Frysinger,

In message <1317016410-608-1-git-send-email-vapier@gentoo.org> you wrote:
> This pushes the ugly duplicated arch ifdef lists we maintain in various
> image related files out to the arch headers themselves.

I appreciate this change in general, but ...

...
> -#else
> -# error Unknown CPU type
> -#endif
> -		return 0;
> -
> -	return 1;
> +	return !fit_image_check_arch(fdt, node, IH_ARCH_DEFAULT));

...here you change a compile time error check into a runtim error.

Please fix this.

Best regards,

Wolfgang Denk
Mike Frysinger - Sept. 26, 2011, 4:09 p.m.
On Monday, September 26, 2011 02:08:51 Wolfgang Denk wrote:
> Mike Frysinger wrote:
> > This pushes the ugly duplicated arch ifdef lists we maintain in various
> > image related files out to the arch headers themselves.
> 
> I appreciate this change in general, but ...
> 
> ...
> 
> > -#else
> > -# error Unknown CPU type
> > -#endif
> > -		return 0;
> > -
> > -	return 1;
> > +	return !fit_image_check_arch(fdt, node, IH_ARCH_DEFAULT));
> 
> ...here you change a compile time error check into a runtim error.

no, it'll still be a build time error as IH_ARCH_DEFAULT will be undefined

it just might not be as clean an error ... gcc will complain about 
IH_ARCH_DEFAULT not being defined rather than a helpful "Unknown CPU type" 
message.
-mike
Wolfgang Denk - Sept. 26, 2011, 5:58 p.m.
Dear Mike Frysinger,

In message <201109261209.46800.vapier@gentoo.org> you wrote:
>
> > ...here you change a compile time error check into a runtim error.
> 
> no, it'll still be a build time error as IH_ARCH_DEFAULT will be undefined
> 
> it just might not be as clean an error ... gcc will complain about 
> IH_ARCH_DEFAULT not being defined rather than a helpful "Unknown CPU type"

Should it not be trivial to add a

	#ifndef IH_ARCH_DEFAULT
	# error Unknown CPU type: IH_ARCH_DEFAULT not set
	#endif

or similar to include/image.h ?

Best regards,

Wolfgang Denk
Mike Frysinger - Sept. 26, 2011, 6:15 p.m.
On Monday, September 26, 2011 13:58:59 Wolfgang Denk wrote:
> Mike Frysinger wrote:
> > > ...here you change a compile time error check into a runtim error.
> > 
> > no, it'll still be a build time error as IH_ARCH_DEFAULT will be
> > undefined
> > 
> > it just might not be as clean an error ... gcc will complain about
> > IH_ARCH_DEFAULT not being defined rather than a helpful "Unknown CPU
> > type"
> 
> Should it not be trivial to add a
> 
> 	#ifndef IH_ARCH_DEFAULT
> 	# error Unknown CPU type: IH_ARCH_DEFAULT not set
> 	#endif
> 
> or similar to include/image.h ?

it'd certainly be easy to do.  i just pointed out that you still get a build 
failure after my change :).  so if you want the #error, i'll resend w/it.
-mike
Wolfgang Denk - Sept. 26, 2011, 6:45 p.m.
Dear Mike Frysinger,

In message <201109261415.14398.vapier@gentoo.org> you wrote:
>
> > Should it not be trivial to add a
> > 
> > 	#ifndef IH_ARCH_DEFAULT
> > 	# error Unknown CPU type: IH_ARCH_DEFAULT not set
> > 	#endif
> > 
> > or similar to include/image.h ?
> 
> it'd certainly be easy to do.  i just pointed out that you still get a build 
> failure after my change :).  so if you want the #error, i'll resend w/it.

Yes, please do.  I think it's easier to decode for most people.

Best regards,

Wolfgang Denk
Wolfgang Denk - Oct. 5, 2011, 6:57 p.m.
Dear Mike Frysinger,

In message <1317016410-608-2-git-send-email-vapier@gentoo.org> you wrote:
> The m68k tree is the only one where `./MAKEALL <arch>` does not work.
> So rename the existing coldfire list in the MAKEALL script to m68k, and
> add an alias from coldfire to m68k.  This makes scripting around MAKEALL
> easier.
> 
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
> ---
>  MAKEALL |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk

Patch

diff --git a/arch/arm/include/asm/u-boot.h b/arch/arm/include/asm/u-boot.h
index ed33327..f30b9fc 100644
--- a/arch/arm/include/asm/u-boot.h
+++ b/arch/arm/include/asm/u-boot.h
@@ -48,4 +48,7 @@  typedef struct bd_info {
     }			bi_dram[CONFIG_NR_DRAM_BANKS];
 } bd_t;
 
+/* For image.h:image_check_target_arch() */
+#define IH_ARCH_DEFAULT IH_ARCH_ARM
+
 #endif	/* _U_BOOT_H_ */
diff --git a/arch/avr32/include/asm/u-boot.h b/arch/avr32/include/asm/u-boot.h
index 8acd056..ff1ed23 100644
--- a/arch/avr32/include/asm/u-boot.h
+++ b/arch/avr32/include/asm/u-boot.h
@@ -40,4 +40,7 @@  typedef struct bd_info {
 #define bi_memstart bi_dram[0].start
 #define bi_memsize bi_dram[0].size
 
+/* For image.h:image_check_target_arch() */
+#define IH_ARCH_DEFAULT IH_ARCH_AVR32
+
 #endif /* __ASM_U_BOOT_H__ */
diff --git a/arch/blackfin/include/asm/u-boot.h b/arch/blackfin/include/asm/u-boot.h
index a6e6cf0f..9712fc0 100644
--- a/arch/blackfin/include/asm/u-boot.h
+++ b/arch/blackfin/include/asm/u-boot.h
@@ -45,4 +45,7 @@  typedef struct bd_info {
 	unsigned long bi_sclk;
 } bd_t;
 
+/* For image.h:image_check_target_arch() */
+#define IH_ARCH_DEFAULT IH_ARCH_BLACKFIN
+
 #endif	/* _U_BOOT_H_ */
diff --git a/arch/m68k/include/asm/u-boot.h b/arch/m68k/include/asm/u-boot.h
index a0f2983..0a48bbd 100644
--- a/arch/m68k/include/asm/u-boot.h
+++ b/arch/m68k/include/asm/u-boot.h
@@ -64,4 +64,7 @@  typedef struct bd_info {
 
 #endif				/* __ASSEMBLY__ */
 
+/* For image.h:image_check_target_arch() */
+#define IH_ARCH_DEFAULT IH_ARCH_M68K
+
 #endif				/* __U_BOOT_H__ */
diff --git a/arch/microblaze/include/asm/u-boot.h b/arch/microblaze/include/asm/u-boot.h
index 543a6b1..21c72d5 100644
--- a/arch/microblaze/include/asm/u-boot.h
+++ b/arch/microblaze/include/asm/u-boot.h
@@ -44,5 +44,7 @@  typedef struct bd_info {
 	unsigned long	bi_baudrate;	/* Console Baudrate */
 } bd_t;
 
+/* For image.h:image_check_target_arch() */
+#define IH_ARCH_DEFAULT IH_ARCH_MICROBLAZE
 
 #endif	/* _U_BOOT_H_ */
diff --git a/arch/mips/include/asm/u-boot.h b/arch/mips/include/asm/u-boot.h
index e839ca1..edb87bb 100644
--- a/arch/mips/include/asm/u-boot.h
+++ b/arch/mips/include/asm/u-boot.h
@@ -43,4 +43,7 @@  typedef struct bd_info {
 	unsigned long	bi_flashoffset;	/* reserved area for startup monitor */
 } bd_t;
 
+/* For image.h:image_check_target_arch() */
+#define IH_ARCH_DEFAULT IH_ARCH_MIPS
+
 #endif	/* _U_BOOT_H_ */
diff --git a/arch/nios2/include/asm/u-boot.h b/arch/nios2/include/asm/u-boot.h
index ec844d0..f7c70ff 100644
--- a/arch/nios2/include/asm/u-boot.h
+++ b/arch/nios2/include/asm/u-boot.h
@@ -43,5 +43,7 @@  typedef struct bd_info {
 	unsigned long	bi_baudrate;	/* Console Baudrate */
 } bd_t;
 
+/* For image.h:image_check_target_arch() */
+#define IH_ARCH_DEFAULT IH_ARCH_NIOS2
 
 #endif	/* __ASM_NIOS2_U_BOOT_H_ */
diff --git a/arch/powerpc/include/asm/u-boot.h b/arch/powerpc/include/asm/u-boot.h
index 721692a..b2fa2b5 100644
--- a/arch/powerpc/include/asm/u-boot.h
+++ b/arch/powerpc/include/asm/u-boot.h
@@ -143,4 +143,8 @@  typedef struct bd_info {
 } bd_t;
 
 #endif /* __ASSEMBLY__ */
+
+/* For image.h:image_check_target_arch() */
+#define IH_ARCH_DEFAULT IH_ARCH_PPC
+
 #endif	/* __U_BOOT_H__ */
diff --git a/arch/sh/include/asm/u-boot.h b/arch/sh/include/asm/u-boot.h
index 27d43b9..4574512 100644
--- a/arch/sh/include/asm/u-boot.h
+++ b/arch/sh/include/asm/u-boot.h
@@ -38,4 +38,7 @@  typedef struct bd_info {
 	unsigned long	bi_boot_params; /* where this board expects params */
 } bd_t;
 
+/* For image.h:image_check_target_arch() */
+#define IH_ARCH_DEFAULT IH_ARCH_SH
+
 #endif
diff --git a/arch/sparc/include/asm/u-boot.h b/arch/sparc/include/asm/u-boot.h
index 209873f..1d94087 100644
--- a/arch/sparc/include/asm/u-boot.h
+++ b/arch/sparc/include/asm/u-boot.h
@@ -59,4 +59,8 @@  typedef struct bd_info {
 } bd_t;
 
 #endif				/* __ASSEMBLY__ */
+
+/* For image.h:image_check_target_arch() */
+#define IH_ARCH_DEFAULT IH_ARCH_SPARC
+
 #endif				/* __U_BOOT_H__ */
diff --git a/arch/x86/include/asm/u-boot.h b/arch/x86/include/asm/u-boot.h
index a43b3aa..26450eb 100644
--- a/arch/x86/include/asm/u-boot.h
+++ b/arch/x86/include/asm/u-boot.h
@@ -58,4 +58,7 @@  typedef struct bd_info {
 	}bi_dram[CONFIG_NR_DRAM_BANKS];
 } bd_t;
 
+/* For image.h:image_check_target_arch() */
+#define IH_ARCH_DEFAULT IH_ARCH_I386
+
 #endif	/* _U_BOOT_H_ */
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 8909ee7..c2e8038 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -165,31 +165,7 @@  void __arch_preboot_os(void)
 }
 void arch_preboot_os(void) __attribute__((weak, alias("__arch_preboot_os")));
 
-#if defined(__ARM__)
-  #define IH_INITRD_ARCH IH_ARCH_ARM
-#elif defined(__avr32__)
-  #define IH_INITRD_ARCH IH_ARCH_AVR32
-#elif defined(__bfin__)
-  #define IH_INITRD_ARCH IH_ARCH_BLACKFIN
-#elif defined(__I386__)
-  #define IH_INITRD_ARCH IH_ARCH_I386
-#elif defined(__M68K__)
-  #define IH_INITRD_ARCH IH_ARCH_M68K
-#elif defined(__microblaze__)
-  #define IH_INITRD_ARCH IH_ARCH_MICROBLAZE
-#elif defined(__mips__)
-  #define IH_INITRD_ARCH IH_ARCH_MIPS
-#elif defined(__nios2__)
-  #define IH_INITRD_ARCH IH_ARCH_NIOS2
-#elif defined(__PPC__)
-  #define IH_INITRD_ARCH IH_ARCH_PPC
-#elif defined(__sh__)
-  #define IH_INITRD_ARCH IH_ARCH_SH
-#elif defined(__sparc__)
-  #define IH_INITRD_ARCH IH_ARCH_SPARC
-#else
-# error Unknown CPU type
-#endif
+#define IH_INITRD_ARCH IH_ARCH_DEFAULT
 
 static void bootm_start_lmb(void)
 {
diff --git a/include/image.h b/include/image.h
index 352e4a0..cbb6669 100644
--- a/include/image.h
+++ b/include/image.h
@@ -484,34 +484,7 @@  void image_print_contents (const void *hdr);
 #ifndef USE_HOSTCC
 static inline int image_check_target_arch (const image_header_t *hdr)
 {
-#if defined(__ARM__)
-	if (!image_check_arch (hdr, IH_ARCH_ARM))
-#elif defined(__avr32__)
-	if (!image_check_arch (hdr, IH_ARCH_AVR32))
-#elif defined(__bfin__)
-	if (!image_check_arch (hdr, IH_ARCH_BLACKFIN))
-#elif defined(__I386__)
-	if (!image_check_arch (hdr, IH_ARCH_I386))
-#elif defined(__M68K__)
-	if (!image_check_arch (hdr, IH_ARCH_M68K))
-#elif defined(__microblaze__)
-	if (!image_check_arch (hdr, IH_ARCH_MICROBLAZE))
-#elif defined(__mips__)
-	if (!image_check_arch (hdr, IH_ARCH_MIPS))
-#elif defined(__nios2__)
-	if (!image_check_arch (hdr, IH_ARCH_NIOS2))
-#elif defined(__PPC__)
-	if (!image_check_arch (hdr, IH_ARCH_PPC))
-#elif defined(__sh__)
-	if (!image_check_arch (hdr, IH_ARCH_SH))
-#elif defined(__sparc__)
-	if (!image_check_arch (hdr, IH_ARCH_SPARC))
-#else
-# error Unknown CPU type
-#endif
-		return 0;
-
-	return 1;
+	return image_check_arch(hdr, IH_ARCH_DEFAULT);
 }
 #endif /* USE_HOSTCC */
 
@@ -636,34 +609,7 @@  void fit_conf_print (const void *fit, int noffset, const char *p);
 #ifndef USE_HOSTCC
 static inline int fit_image_check_target_arch (const void *fdt, int node)
 {
-#if defined(__ARM__)
-	if (!fit_image_check_arch (fdt, node, IH_ARCH_ARM))
-#elif defined(__avr32__)
-	if (!fit_image_check_arch (fdt, node, IH_ARCH_AVR32))
-#elif defined(__bfin__)
-	if (!fit_image_check_arch (fdt, node, IH_ARCH_BLACKFIN))
-#elif defined(__I386__)
-	if (!fit_image_check_arch (fdt, node, IH_ARCH_I386))
-#elif defined(__M68K__)
-	if (!fit_image_check_arch (fdt, node, IH_ARCH_M68K))
-#elif defined(__microblaze__)
-	if (!fit_image_check_arch (fdt, node, IH_ARCH_MICROBLAZE))
-#elif defined(__mips__)
-	if (!fit_image_check_arch (fdt, node, IH_ARCH_MIPS))
-#elif defined(__nios2__)
-	if (!fit_image_check_arch (fdt, node, IH_ARCH_NIOS2))
-#elif defined(__PPC__)
-	if (!fit_image_check_arch (fdt, node, IH_ARCH_PPC))
-#elif defined(__sh__)
-	if (!fit_image_check_arch (fdt, node, IH_ARCH_SH))
-#elif defined(__sparc__)
-	if (!fit_image_check_arch (fdt, node, IH_ARCH_SPARC))
-#else
-# error Unknown CPU type
-#endif
-		return 0;
-
-	return 1;
+	return !fit_image_check_arch(fdt, node, IH_ARCH_DEFAULT));
 }
 #endif /* USE_HOSTCC */