[U-Boot] [PATCH] at91: board specific lowlevel_init.S
Wolfgang Denk
wd at denx.de
Tue Oct 21 21:08:31 CEST 2008
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?
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"You shouldn't make my toaster angry." - Household security explained
in "Johnny Quest"
More information about the U-Boot
mailing list