Dear Mr. Denk, > Dear Ilko Iliev, > > In message <[EMAIL PROTECTED]> you wrote: > >>> Maybe instead of adding mor #ifdef'ery here, we can turn >>> lowlevel_init() into a "weak" function that can be redefined by board >>> specific code? >>> >> The lowlevel_init() is an assembler function called from another >> assembler function and the attribute .weak doesn't work. >> > > What do you mean by "attribute .weak doesn't work" ? > > >> There are no assembler file in the U-BOOT tree which use weak functions. >> Do you know how can I make an assembler function weak? >> > > Well, if you don't know, then don't ask me, ask your compiler - he > knows how to do this. > > For example, common/cmd_boot.c has this code snippet right at the > beginning: > > 30 > 31 /* Allow ports to override the default behavior */ > 32 __attribute__((weak)) > 33 unsigned long do_go_exec (ulong (*entry)(int, char *[]), int argc, char > *argv[]) > 34 { > 35 return entry (argc, argv); > 36 } > > Compile this with -S option, and you get this: > > 12 .Ltext0: > 13 .align 2 > 14 .weak do_go_exec > 15 .type do_go_exec, @function > 16 do_go_exec: > 17 .LFB87: > 18 .file 1 "cmd_boot.c" > 19 .loc 1 34 0 > 20 .LVL0: > 21 mflr 0 > 22 .LCFI0: > 23 stwu 1,-16(1) > ... > > > So to me it seems as if the attribute .weak is supposed to work just fine. > > What exactly is not working for you? > > With ".weak lowlevel_init" the function is marked as weak (I can see this in the ELF file) but it is not overwritten from the another lowlevel_init().
-- Mit freundlichen Grüßen/With best regards, Ilko Iliev Ronetix Development Tools GmbH CPU Modules, JTAG/BDM Emulators and Flash Programmers Waidhausenstrasse 13/5, 1140 Vienna, Austria E-Mail: [EMAIL PROTECTED]; Web: www.ronetix.at _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot