All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v8 31/31] arm: Remove duplicated start.S code
Date: Fri, 1 Mar 2013 23:54:26 +0100 (CET)	[thread overview]
Message-ID: <2141850111.221184.1362178466909.JavaMail.root@advansee.com> (raw)
In-Reply-To: <20130301225650.5d3f7f93@lilith>

Hi Albert,

On Friday, March 1, 2013 10:56:50 PM, Albert ARIBAUD wrote:
> Hi Beno?t,
> 
> On Fri, 1 Mar 2013 16:50:44 +0100 (CET), Beno?t Th?baudeau
> <benoit.thebaudeau@advansee.com> wrote:
> 
> > Hi Albert,
> > 
> > On Friday, March 1, 2013 4:46:07 PM, Albert ARIBAUD wrote:
> > > Hi Beno?t,
> > > 
> > > On Fri,  1 Mar 2013 13:10:40 +0100, Beno?t Th?baudeau
> > > <benoit.thebaudeau@advansee.com> wrote:
> > > 
> > > > Factorize start.S code as much as possible.
> > > > 
> > > > Functions that may need to be customized for some start.S are defined
> > > > weak
> > > > for
> > > > that purpose.
> > > > 
> > > > relocate_code_prepare() and relocate_code_finish() are introduced as
> > > > hooks
> > > > to be
> > > > executed at the beginning and at the end of relocate_code() if needed
> > > > by
> > > > some
> > > > start.S, e.g. for special cache or MMU operations.
> > > 
> > > NAK.
> > > 
> > > 1. I don't like this idea of planting hooks inside relocate-code().
> > > This function is about relocating code, not about MMU stuff. If there
> > > are any MMU steps to be performed between calls to board_init_f(),
> > > relocate_code() or board_init_r(), I want them laid out as calls of
> > > their own right in crt0.S.
> > 
> > I also don't like it. The finish hook was used by SMDK6400 before it was
> > removed, and the prepare hook is still used by pxa.
> > 
> > So is it OK for you if I just drop relocate_code_finish() and move and
> > rename the call to relocate_code_prepare() to crt0.S?
> 
> Fine, except for the name: "prepare for relocation" is what every
> instruction does from board_init_f() return to relocate_code() entry.
> This 'hook' does only a small part, if at all, of preparing for
> relocation, and this part must get a less improper name. If we are
> enabling the I-cache here, then let's name the function accordingly.
> Better yet, let us find out if we do need to enable the instruction
> cache here at all.

Correct. For PXA25X, this cpu_init_crit() is paired with lock_cache_for_stack(),
apparently for some hardware hack, but this is not very clear if this is
required or if it could not be done otherwise. Do you know a PXA expert?

Marek, you introduced that in commit 7f4cfcf. Do you know the details about why?

If we could drop it or move it elsewhere, that would be great.

> > > 2. If we're going to factorize out relocate_code() from the various
> > > start.S files, I want it moved not in crt0.S but in its own file.
> > 
> > It is not in crt0.S, but in arch/arm/include/asm/start_marco.S, which is
> > almost its own file apart from another macro.
> 
> I do not want it as a macro. It is and should stay a function.
> Regarding your added comment:
> 
> Actually, I'd stopped dead at the relocate_code() changes, but the
> other macros I don't like much either; I don't see the point of it.
> 
> To be faire, I don't see the point of the whole patch wrt the
> objective.

This patch is just appended to the series because it depends on it, not because
the series needs it.

This patch only aims at cleaning up code by removing copied/pasted code in order
to simplify maintenance and to clarify things.

There have been many changes in this relocate_code(), and not always the same
for all start.S, so from the outside, the purpose is unclear because one might
wonder if those differences have been created on purpose or not.

> > And in case you ask, with relocate_code() as a function in its own
> > file instead of a macro called from start.S, it does not work because
> > of the _start-relative word values that require relocate_code() to be
> > in _start's section.
> 
> How does it "not work" exactly?

The assembler issues an error (I don't remember the exact message) for all lines
like ".word __rel_dyn_start - _start", complaining that this is not a kind of
expression that it can prepare for the linker to resolve.

Though, it would still be possible to find a more complicated way of doing the
same thing at runtime.

> > > This
> > > way, i) people can easily create binaries which use crt0.S but do not
> > > relocate, ii) people who want to make relocate_code() a C function
> > > will have it easier, and iii) crt0.S keeps being the ugly ASM glue
> > > needed for flash inits, relocation and RAM inits to have a C proper
> > > run-time environment.
> > 
> > Which is already the case with this implementation?
> 
> Not with relocate_code() as a macro, though.
> 
> This whole thing/way of "factorizing" start.S using macros feels wrong
> to me; this departs from what I have started with crt0.S, where code
> is actually really factorized in a single file which is actually a
> compilation unit, not a helper file.

Yes. Well, for this patch, I had first moved relocate_code() to crt0.S (could
have been its own file), but I eventually switched to the macro solution because
of the assembler errors.

> Do you need patch 31/31 in your series?

As explained above, no. But I really think that something should be done to stop
relocate_code() duplication, one way or another, by me or someone else. I just
wanted to help here.

> > > Incidentally, CC:ing Simon:
> > > 
> > > > Signed-off-by: Beno?t Th?baudeau <benoit.thebaudeau@advansee.com>
> > > > ---
> > > > Changes in v8:
> > > >  - New patch.
> > > > 
> > > > Changes in v7: None
> > > > Changes in v6: None
> > > > Changes in v5: None
> > > > Changes in v4: None
> > > > Changes in v3: None
> > > > Changes in v2: None
> > > 
> > > Is this produced by patman?
> > 
> > Yes [...]
> 
> Ok, then, don't bother to fix patman's behavior manually in your
> own patches -- I'll try and see if I can submit a patch to fix patman
> itself.

OK.

patman had also removed some "Reviewed-by" that I had to restore manually before
sending. This is a documented behavior, but not cool.

And contrary to what the documentation says, patman adds my SoB line even if I
have forced another SoB in the commit message, which I also had to fix manually.

Best regards,
Beno?t

  parent reply	other threads:[~2013-03-01 22:54 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-01 12:10 [U-Boot] [PATCH v8 01/31] mtd: nand: Introduce CONFIG_SYS_NAND_BUSWIDTH_16BIT Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 02/31] mtd: nand: mxc_nand: Fix is_16bit_nand() Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 03/31] nand: mxc: Prepare to add support for i.MX5 Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 04/31] nand: mxc: Add " Benoît Thébaudeau
2013-03-01 15:33   ` Fabio Estevam
2013-03-01 15:30     ` Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 05/31] imx: mx5: lowlevel_init: Simplify code Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 06/31] imx: mx53ard: Add support for NAND Flash Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 07/31] nand: mxc: Fix debug trace in mxc_nand_read_oob_syndrome() Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 08/31] nand: mxc: Use appropriate page number in syndrome functions Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 09/31] arm: start.S: Fix _TEXT_BASE for SPL Benoît Thébaudeau
2013-03-01 21:17   ` Tom Rini
2013-03-01 12:10 ` [U-Boot] [PATCH v8 10/31] arm: relocate_code() is no longer noreturn Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 11/31] arm1136: Remove redundant relocate_code() return Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 12/31] arm: relocate_code(): Remove useless relocation offset computation Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 13/31] arm: relocate_code(): Use __image_copy_end for end of relocation Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 14/31] arm: crt0.S: Remove bogus .globl Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 15/31] autoconfig.mk: Make it possible to define configs from other configs Benoît Thébaudeau
2013-03-01 21:20   ` Tom Rini
2013-03-01 21:30     ` Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 16/31] Makefile: Change CONFIG_SPL_PAD_TO to image offset Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 17/31] imx: Fix automatic make targets for imx images Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 18/31] nand: mxc: Switch NAND SPL to generic SPL Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 19/31] arm926ejs: Remove deprecated and now unused NAND SPL Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 20/31] arm: Remove unused relocate_code() parameters Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 21/31] Makefile: Move SHELL setup to config.mk Benoît Thébaudeau
2013-03-01 21:26   ` Tom Rini
2013-03-01 12:10 ` [U-Boot] [PATCH v8 22/31] .gitignore: Add /SPL Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 23/31] imx: Add u-boot-with-spl.imx make target Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 24/31] imx: Add u-boot-with-nand-spl.imx " Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 25/31] arm: Remove support for smdk6400 Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 26/31] Revert "mkconfig: start deprecating Makefile config targets" Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 27/31] arm: Remove support for unused s3c64xx Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 28/31] arm: Remove deprecated and now unused NAND SPL Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 29/31] arm1176: Remove unused MMU setup from start.S Benoît Thébaudeau
2013-03-01 15:25   ` Albert ARIBAUD
2013-03-01 15:23     ` Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 30/31] arm: Make all linker scripts compatible with per-symbol sections Benoît Thébaudeau
2013-03-01 12:10 ` [U-Boot] [PATCH v8 31/31] arm: Remove duplicated start.S code Benoît Thébaudeau
2013-03-01 15:46   ` Albert ARIBAUD
2013-03-01 15:50     ` Benoît Thébaudeau
2013-03-01 16:33       ` Benoît Thébaudeau
2013-03-01 21:56       ` Albert ARIBAUD
2013-03-01 22:02         ` Albert ARIBAUD
2013-03-01 22:54         ` Benoît Thébaudeau [this message]
2013-03-02  0:22           ` Simon Glass
2013-03-02  1:10             ` Benoît Thébaudeau
2013-03-02  6:45           ` Albert ARIBAUD
2013-03-02 13:42             ` Benoît Thébaudeau
2013-03-03  8:14               ` Albert ARIBAUD
2013-03-01 15:33 ` [U-Boot] [PATCH v8 01/31] mtd: nand: Introduce CONFIG_SYS_NAND_BUSWIDTH_16BIT Benoît Thébaudeau
2013-03-01 15:39   ` Fabio Estevam

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2141850111.221184.1362178466909.JavaMail.root@advansee.com \
    --to=benoit.thebaudeau@advansee.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.