From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Roese Date: Mon, 17 Nov 2008 10:34:03 +0100 Subject: [U-Boot] [PATCH] cfi_flash: Make all flash access functions weak In-Reply-To: <20081117100145.3fe0c4b2@hskinnemo-gx745.norway.atmel.com> References: <1226493106-28429-1-git-send-email-sr@denx.de> <200811170945.38488.sr@denx.de> <20081117100145.3fe0c4b2@hskinnemo-gx745.norway.atmel.com> Message-ID: <200811171034.03928.sr@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Monday 17 November 2008, Haavard Skinnemoen wrote: > Stefan Roese wrote: > > Old version without weak aliases: > > text data bss dec hex filename > > 280964 20232 50788 351984 55ef0 ./u-boot > > > > New version with weak aliases: > > text data bss dec hex filename > > 280520 20232 50788 351540 55d34 ./u-boot > > > > So the difference is 444 bytes (with gcc 4.2.2). I have to admit that > > this is more than I thought. If necessary I could make this weak change > > conditionally of course. I just didn't want to "pollute" to the source > > with more #ifdef's. > > Looks like it's 444 bytes _smaller_ with weak functions...that's a bit > surprising. From you comment, it sounds like it's really 444 bytes > larger. Did you mix up the numbers? Yes. > If it's really 444 bytes larger, I think that's a bit much for > something as simple as memory accessors. Ideally, they should boil down > to a single instruction each. > > Perhaps you could allow overriding them in the board header by doing > something like > > #ifndef flash_write8 > # #define flash_write8(value, addr) __raw_writeb(value, addr) > ... > > in cfi_flash.c? I could do it this way, sure. But how about this version: static void __flash_write8(u8 value, void *addr) { __raw_writeb(value, addr); } ... #ifdef CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS void flash_write8(u8 value, void *addr)__attribute__((weak, alias("__flash_write8"))); ... #else #define flash_read8 __flash_read8 ... #endif We would still have the original accessor functions this way. And the resulting source code looks a little "better" to me (less #ifdef's). 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 =====================================================================