On 15:07 Wed 22 Oct , Ilko Iliev wrote: > Jean-Christophe PLAGNIOL-VILLARD wrote: >> On 13:12 Wed 22 Oct , Ilko Iliev wrote: >> >>> 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(). >>> >> try
>> > I tried and the result is: > lowlevel_init.S:32: Error: junk at end of line, first unrecognized > character is `=' > sorry try this .global __default_lowlevel_init ..... .weak lowlevel_init .set lowlevel_init,__default_lowlevel_init after in the other asm .global lowlevel_init ....... Best Regards, J. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot