[LinuxBIOS] [PATCH] v3: Add ARRAY_SIZE macro

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Fri Jun 29 15:19:18 CEST 2007


On 29.06.2007 15:04, Uwe Hermann wrote:
> 
> Add an ARRAY_SIZE() macro which returns the size of an array, regardless
> of the data types of the individual array elements.
> 
> The macro is defined in lib.h, so code which uses it must include lib.h.
> 
> Signed-off-by: Uwe Hermann <uwe at hermann-uwe.de>

Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
> 
> Index: southbridge/amd/cs5536/cs5536.c
> ===================================================================
> --- southbridge/amd/cs5536/cs5536.c	(Revision 409)
> +++ southbridge/amd/cs5536/cs5536.c	(Arbeitskopie)
> @@ -93,8 +93,6 @@
>  	{FLASH_TYPE_NONE, 0, 0},	/* CS3, or Flash Device 3 */
>  };
>  
> -#define FlashInitTableLen (sizeof(FlashInitTable)/sizeof(FlashInitTable[0]))
> -
>  u32 FlashPort[] = {
>  	MDD_LBAR_FLSH0,
>  	MDD_LBAR_FLSH1,
> @@ -149,7 +147,7 @@
>  	int numEnabled = 0;
>  
>  	printk(BIOS_DEBUG, "chipset_flash_setup: Start\n");
> -	for (i = 0; i < FlashInitTableLen; i++) {
> +	for (i = 0; i < ARRAY_SIZE(FlashInitTable); i++) {
>  		if (FlashInitTable[i].fType != FLASH_TYPE_NONE) {
>  			printk(BIOS_DEBUG, "Enable CS%d\n", i);
>  			/* we need to configure the memory/IO mask */
> Index: include/lib.h
> ===================================================================
> --- include/lib.h	(Revision 409)
> +++ include/lib.h	(Arbeitskopie)
> @@ -21,6 +21,12 @@
>  #ifndef LIB_H
>  #define LIB_H
>  
> +/**
> + * Return the size of a given array, no matter of which data type
> + * the individual array elements are.
> + */
> +#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
> +
>  int log2(unsigned int n);
>  
>  void udelay(unsigned int usecs);
> Index: superio/winbond/w83627hf/superio.c
> ===================================================================
> --- superio/winbond/w83627hf/superio.c	(Revision 409)
> +++ superio/winbond/w83627hf/superio.c	(Arbeitskopie)
> @@ -22,6 +22,7 @@
>   */
>  
>  #include <io.h>
> +#include <lib.h>
>  #include <device/device.h>
>  #include <device/pnp.h>
>  #include <console.h>
> @@ -99,7 +100,7 @@
>                                                                              
>  	};
>  
> -	for(i = 0; i<  sizeof(hwm_reg_values)/sizeof(hwm_reg_values[0]); i+=3 ) { 
> +	for (i = 0; i < ARRAY_SIZE(hwm_reg_values); i += 3) { 
>  		reg = hwm_reg_values[i];	
>  	 	value = pnp_read_index(base, reg);		
>  		value &= 0xff & hwm_reg_values[i+1];
> @@ -207,8 +208,7 @@
>  
>  static void phase2_setup_scan_bus(struct device *dev)
>  {
> -	pnp_enable_devices(dev, &ops,
> -		sizeof(pnp_dev_info)/sizeof(pnp_dev_info[0]), pnp_dev_info);
> +	pnp_enable_devices(dev, &ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
>  }
>  
>  static struct device_operations ops = {
> Index: mainboard/artecgroup/dbe61/initram.c
> ===================================================================
> --- mainboard/artecgroup/dbe61/initram.c	(Revision 409)
> +++ mainboard/artecgroup/dbe61/initram.c	(Arbeitskopie)
> @@ -120,7 +120,7 @@
>  static void dbe61_msr_init(void)
>  {
>  	int i;
> -	for(i = 0; i < sizeof(dbe61_msr)/sizeof(dbe61_msr[0]); i++)
> +	for (i = 0; i < ARRAY_SIZE(dbe61_msr); i++)
>  		wrmsr(dbe61_msr[i].reg, dbe61_msr[i].msr);
>  }
>  
> Index: arch/x86/linuxbios_table.c
> ===================================================================
> --- arch/x86/linuxbios_table.c	(Revision 409)
> +++ arch/x86/linuxbios_table.c	(Arbeitskopie)
> @@ -25,6 +25,7 @@
>  #include <device/device.h>
>  #include <tables.h>
>  #include <mc146818rtc.h>
> +#include <lib.h>
>  //#include <cpu/cpu.h>
>  //#include <pirq_routing.h>
>  //#include <smp/mpspec.h>
> @@ -159,7 +160,7 @@
>  		{ LB_TAG_ASSEMBLER,      (const u8 *)LINUXBIOS_ASSEMBLER      },
>  	};
>  	unsigned int i;
> -	for(i = 0; i < sizeof(strings)/sizeof(strings[0]); i++) {
> +	for(i = 0; i < ARRAY_SIZE(strings); i++) {
>  		struct lb_string *rec;
>  		size_t len;
>  		rec = (struct lb_string *)lb_new_record(header);
> 


-- 
http://www.hailfinger.org/




More information about the coreboot mailing list