
Code: Select all
arm_control=0x200
Bit 9 of arm_control determines if arm is booted in 32 or 64-bit mode. You could set arm_control=0x0 or remove it completely to boot in 32-bit mode.swarren wrote:So "arm_control=0x200" selects AArch64 mode. What value selects AArch32 mode, or does that only happen if you completely remove that entry from config.txt?


There is no 64-bit arm loader code. You should be running with kernel_old=1 and your 64-bit arm code should start from zero.MrTomasz wrote: 1. When ARM boots in AArch64 mode, in which exception level (EL) we are while trying to load & run kernel.img ? Is it EL3 or we are already switched to EL2/EL1 by VC arm loader ?
2. Are there any other special magic things we have to do ? (arm_control=0x200 was undocumented until somebody asked)
3. In AArch64 mode, is kernel image still loaded @ 0x8000 or at different address?
4. Before [64-bit] kernel.img is entered, do we have all ARM cores configured, up and running or just the first one?

We are using an identical kernel on Pi2 and Pi3 so I believe everything must be the same. The only difference I'm aware of between the arm code on Pi2 and Pi3 is in the bootcode we inject from firmware.MrTomasz wrote: @dom
As I understand all posts regarding RPi3 SoC, the things like ARM core management, Interrupt controller, etc. - everything is same as on RPi2 ? -- I mean done via custom mailboxes and no GIC inside, no PSCI calls needed or whatever?
Code: Select all
#ifdef BCM2710
mrrc p15, 1, r0, r1, c15 @ CPU Extended Control Register
orr r0, r0, #(1<<6) @ SMP
mcrr p15, 1, r0, r1, c15 @ CPU Extended Control Register
#else
mrc p15, 0, r0, c1, c0, 1 @ Read Auxiliary Control Register
orr r0, r0, #(1<<6) @ SMP
mcr p15, 0, r0, c1, c0, 1 @ Write Auxiliary Control Register
#endif
Thanks for the demo! Please try to addswarren wrote:The compiler-optimization dependency is odd. I wonder if that's related to your issue?
Code: Select all
disable_commandline_tags=1
Nice!swarren wrote:Here's something that demos AArch64 mode:
https://github.com/swarren/rpi-3-aarch64-demo
Thanks, that fixed it. I actually modified the code so that this option isn't needed though, by leaving a hole in the binary.rst wrote:Please try to addto your config.txt file. The boot loader will otherwise overwrite your code (without -O2) at 0x100 with ATAGS.Code: Select all
disable_commandline_tags=1
Code: Select all
git clone https://github.com/zeldin/u-boot-rpi3.git
cd u-boot-rpi3
make rpi_3_defconfig
make CROSS_COMPILE=aarch64-unknown-linux-gnu-
Code: Select all
dtoverlay=pi3-miniuart-bt-overlay
kernel=u-boot.bin
kernel_old=1
arm_control=0x200
disable_commandline_tags=1

Excellent!marcus_c wrote: I got U-Boot working in 64-bit mode.
That's what I am exactly working on as a first step of bringing up RPi3 in AArch64 world, however was bit busy in last days...Electron752 wrote:Hi,
I've been doing some reading of web pages and it appears that 64 bit ARM may not be that easy since there are some pointer dependencies between the firmware, bootloader, and linux kernel.
I was wondering if anybody has any thoughts on getting a 64 bit compile of the linux kernel running with the video and audio disabled. That should eliminate some of the dependency on the firmware. The console would simply be one of the COM ports of the SOC.
I'm thinking this would still be acceptable for server and embedded applications since the video isn't really required. People could use those cheap FTDI based USB to TTL COM cables that are floating all over the Internet.
Thoughts/Comments....
Thoughts.