Re: [PATCH v2] ata: increase retry count but shorten duration for Calxeda controller

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello.

On 31-05-2013 10:53, Clemens Ladisch wrote:

+    const unsigned long timing[] = { 5, 100, 500};

You'll save space and time if you also make this array "static",
otherwise the compiler will build the array every time this function is
called.

No, *const* specifier is enough to not build this array every time. It will be put into the .const section.

gcc disagrees:

$ cat const_static.c
int f(int x) {
	const unsigned long timing[] = { 5, 100, 500};
	static const unsigned long timing2[] = { 5, 100, 500};
	return timing[x] + timing2[x];
}
$ gcc -Os -S const_static.c
$ cat const_static.s
	...
timing2.0:
         .long   5
         .long   100
         .long   500
	...
         movl    8(%ebp), %edx
         movl    $5, -16(%ebp)
         movl    $100, -12(%ebp)
         movl    $500, -8(%ebp)
         movl    timing2.0(,%edx,4), %eax
         addl    -16(%ebp,%edx,4), %eax

Hm, I remember I was convinced by somebody just *const* was enough for the data to be put to .const section. Don't remember if he gave an object code example... Well, it means that person was wrong. Mark, we then need *static* as well...

Regards,
Clemens

WBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux