[U-Boot] [PATCH] ftsmc020: enhance for features and asm support.
Wolfgang Denk
wd at denx.de
Thu Mar 31 10:24:28 CEST 2011
Dear Macpaul Lin,
In message <AANLkTi=umWPj8zK+AvL6H8EarhbqSxN2G=8itXXZG6cS at mail.gmail.com> you wrote:
>
> There are lots of register offset is widely been used both in
> lowlevel_init and C environment.
Yes, there is a lot os mess that piled up over the years. It will
take time to clean this up.
> If there is a code wrote as writel(0x1, AT91_ASM_SMC_SETUP0);
> originally must be rewrote as
> writel(0x1, AT91_SMC_BASE + AT91_ASM_SMC_SETUP0);
No, this should be rewritten to acces a C struct instead.
These offesets must ONLY be used in assembler files, but NOT in any C
code.
> I meant, should we make a script that could auto generate asm-offset
> like a translation from
> struct ftsmc020 {
> unsigned bank0_cr;
> unsigned bank0_tpr;
> ...
> }
> into
> #define FTSMC020_BANK0_CR 0x00;
> or
> #define FTSMC020_BANK0_TPR (4);
No. It makes no sense to provide offset fefinitions for allexisting
struct entries. Onle those are needed that are actually being used in
assembler code, and this should be only a handful.
If you find yourself using more of them, you should stop and ask
yourself why you are not writing this code in C.
> without manually reworte the structure in the way as
> OFFSET(FTSMC020_BANK0_CR, ftsmc020, bank0_cr);
> and create a new specific header file for make-asm-offset?
I repeat again: I consider this manual unrolling of the nested structs
a Bad Thing. You should have separate offsets for each of the nested
structs.
> You are right, the comments of FTSMC020_BANK0_TPR (4) is really bad
> for human reading.
Actually not. They explain exactly what's going on there.
> However, when people implementing lowlevel_init or other assembly
> files, they still need such kind of reference
> to write *.S files before the asm-offset has been generated by make.
First of all, people should stop writing assembly code when they
could use C instead. The remaining (small!) parts of aseembler code
will need only a small number of offset definitions. These should be
easy to handle.
Again: if you need larger numbers of such entries you are doing
something fundamentally wrong. Reconsider your coding style. What
exactly enforces you to use assembly?
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
Real computer scientists don't comment their code. The identifiers
are so long they can't afford the disk space.
More information about the U-Boot
mailing list