All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lokesh Vutla <lokeshvutla@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] ARMv7 Execution Flow
Date: Mon, 6 Jun 2016 09:18:53 +0530	[thread overview]
Message-ID: <5754F2A5.3020108@ti.com> (raw)
In-Reply-To: <CAB=FTDMhJ4dczOAQzUeHqoNrz8Kp_F8Oj+aEXt_G9ROpceOOvQ@mail.gmail.com>

Hi James,

On Saturday 04 June 2016 12:25 AM, James Pollard wrote:
> Hi,
> 
> I'm a new U-Boot user. I'm trying to follow the flow of execution for the
> ARMv7 architecture, and have found myself running into confusion.
> 
> At the end of arch/arm/cpu/armv7/start.S, lowlevel_init is called. This is
> defined (for the ARMv7 architecture in arch/arm/cpu/armv7/low_level_init.S
> (not sure if there's a reason for the discrepancy in the use of
> underscores?), and at the end of this file, s_init is called.

So, s_init is called by cpu_init_crit and after that _main will be
called. Below is the code flow for u-boot(Skipped all the #ifdefs).

- reset
	- save_boot_params
	- cpu_init_cp15:
		- Invalidate caches and apply erratas:
	- cpu_init_crit:
		- lowlevel_init
			- s_init
	- _main (arch/arm/lib/crt0.S)
		- Setup C runtime environment
		- board_init_f
		- relocate code if !SPL
		- board_init_r

> 
> As far as I can tell, s_init is only defined for some of the ARMv7 CPUs:
> the bcm281xx folder doesn't contain any files that define this function. In
> the case of the am33xx CPU it's defined in board.c, but this function seems
> to return without calling board_init_f.

s_init is not necessary to be called for all the boards. board_init_f
should take care of system init. As per the above code flow board_init_f
will be called for every board.

> 
> My questions are:
> 
>    1.  In the case of the bcm281xx, what happens? s_init doesn't seem to be
>    defined for this CPU.

Yes, board_init_f will take care of the initialization.

>    2.  In the case of the am33xx, where is board_init_f called? As far as I
>    can tell, s_init should return to lowlevel_init without having
>    called board_init_f , which then returns back to start.S, terminating
>    the execution prematurely.

This has been answered above.

> 
> I presume my analysis of the assembly must be highly incorrect?
> 
> Sorry if this is the wrong place for such a question.


Yes, this is the right place to ask :)

Thanks and regards,
Lokesh

> 
> Yours,
> 
> James Pollard
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
> 

  reply	other threads:[~2016-06-06  3:48 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-03 18:55 [U-Boot] ARMv7 Execution Flow James Pollard
2016-06-06  3:48 ` Lokesh Vutla [this message]
2016-06-06 13:38   ` James Chargin
2016-06-06 23:58     ` Simon Glass

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=5754F2A5.3020108@ti.com \
    --to=lokeshvutla@ti.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.