[U-Boot] [PATCH] at91: board specific lowlevel_init.S
Jean-Christophe PLAGNIOL-VILLARD
plagnioj at jcrosoft.com
Wed Oct 22 15:22:53 CEST 2008
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 <48FDFCA0.4090608 at ronetix.at> 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.
More information about the U-Boot
mailing list