Discussion:
[gem5-users] ARM bootloader
Thawra Kadeed
2018-10-18 16:45:30 UTC
Permalink
Hello,

I have, please, a small question about how GEM5 deals with the
ARM-specific bootloader.

In GEM5 there are two bootloaders belong to ARM
(http://www.gem5.org/ARM_Implementation). Let's talk about the simple
bootloader which starts Cpu0 from the start address of the kernel, and
puts other cores in a spin-loop until they are started by the kernel.

My main question is:
How GEM5 uses the ARM-specific bootloader? e.g. GEM5 loads it to the
simulated memory and then who executes it at the start-up of the system?


Thanks in advance.
Thawra
Ciro Santilli
2018-10-18 17:02:20 UTC
Permalink
Post by Thawra Kadeed
Hello,
I have, please, a small question about how GEM5 deals with the
ARM-specific bootloader.
In GEM5 there are two bootloaders belong to ARM
(http://www.gem5.org/ARM_Implementation). Let's talk about the simple
bootloader which starts Cpu0 from the start address of the kernel, and
puts other cores in a spin-loop until they are started by the kernel.
How GEM5 uses the ARM-specific bootloader? e.g. GEM5 loads it to the
simulated memory and then who executes it at the start-up of the system?
Well, gem5 sets the PC to the start of the bootloader that was loaded
in memory, and then it just runs like any other code, there is nothing
more than that to
it.

Use gem5.opt --debug-flags=Exec and see the trace.
Post by Thawra Kadeed
Thanks in advance.
Thawra
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
Ciro Santilli
2018-10-19 09:23:22 UTC
Permalink
Post by Ciro Santilli
Post by Thawra Kadeed
Hello,
I have, please, a small question about how GEM5 deals with the
ARM-specific bootloader.
In GEM5 there are two bootloaders belong to ARM
(http://www.gem5.org/ARM_Implementation). Let's talk about the simple
bootloader which starts Cpu0 from the start address of the kernel, and
puts other cores in a spin-loop until they are started by the kernel.
How GEM5 uses the ARM-specific bootloader? e.g. GEM5 loads it to the
simulated memory and then who executes it at the start-up of the system?
Well, gem5 sets the PC to the start of the bootloader that was loaded
in memory, and then it just runs like any other code, there is nothing
more than that to
it.
Use gem5.opt --debug-flags=Exec and see the trace.
Thanks a lot Ciro for your answer.
So gem5 sets the PC to the start of the bootloader. Then in case of a
multi-core system, the PC of all cores are set by GEM5 to the start
address of the bootloader, and then the bootloader tells the cores what
to do. Right?
I haven't studied arm multicore startup yet, so I'm not sure.

In x86, the secondary cores start in sleep mode and the first core
setups the their code in memory and wakes them up.

My guess is that arm is similar.
Post by Ciro Santilli
Post by Thawra Kadeed
Thanks in advance.
Thawra
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
Loading...