ARM64 Port Status

Since the discussion is becoming a bit off-topic in other places. I think we should start a topic here.

Current status, not even boot loader is building. So nowhere near a running kernel, or system.
What has been done:

  • Buildtools GCC has been updated for ARM64, may still need improvements
  • Bootstrap Packages has been prepared and built for ARM64
  • There are build- and smaller code-fixes in haiku that makes us go all the way to fail at linking the EFI bootloader

Once the EFI bootloader links and starts I hope to submit these changes and provide info on how to setup a developer environment. Then the hard part of working with ARM64 hardware starts, that I probably can help less with. (I just yesterday learnt the BR assembly code in ARM64 :slight_smile: )

24 Likes

I started learning RISC-V at about beginning of this year…

12 Likes
find . -name "*.efi"
./objects/haiku/arm64/packaging/packages_build/bootstrap/hpkg_- 
haiku_loader.hpkg/contents/haiku_loader.efi
./objects/haiku/arm64/release/system/boot/efi/haiku_loader.efi

It wasn’t the linker script. It was the fake PE header we build in assembly…

3 Likes

PE header still needs more work to be accepted by UEFI. For anyone interested it is this magic part: haiku/crt0-efi-arm64.S at master · haiku/haiku · GitHub
We are trying to make it look like a windows executable which also uses the PE file format: Portable Executable - Wikipedia
This might take some time to get right.

3 Likes

Bootloader runs:
acpi: rsdp points to rsdt at 0x0
acpi: found valid XSDT at 0x0000000048440000
efi/fdt: Probing for device trees from UEFI…
Welcome to the Haiku boot loader!
add_partitions_for(0x00000000462a2258, mountFS = yes)
add_partitions_for(fd = 0, mountFS = yes)
0x00000000462a22b0 Partition::Partition
0x00000000462a22b0 Partition::Scan()
check for partitioning_system: GUID Partition Map
check for partitioning_system: Intel Partition Map
priority: 810
check for partitioning_system: Intel Extended Partition
0x00000000462a24a0 Partition::Partition
0x00000000462a22b0 Partition::AddChild 0x00000000462a24a0
0x00000000462a24a0 Partition::SetParent 0x00000000462a22b0
new child partition!
0x00000000462a22b0 Partition::Scan(): scan child 0x00000000462a24a0 (start = 32256, size = 528450048, parent = 0x00000000462a22b0)!
0x00000000462a24a0 Partition::Scan()
check for partitioning_system: GUID Partition Map
check for partitioning_system: Intel Partition Map
check for partitioning_system: Intel Extended Partition
0x00000000462a24a0 Partition::~Partition
0x00000000462a22b0 Partition::~Partition

18 Likes

nice work! The riscv64 port has been hard on the non-x86 architectures, but in the long-run should help things that depend on dtb / fdt like arm / arm64.

I’ve been trying to rework the fdt stuff in a way that will work on any architecture… definitely shoot some me feedback on this patch :slight_smile:

https://review.haiku-os.org/c/haiku/+/4356

7 Likes

Now when compling arm version of Haiku, many errors is on FDT and dtb, and is not finish a images.

I’m currently in an older unclean tree. So I probably will see that soon when I start merging.

Here is some motivation why this port needs to happen: GitHub - bbenchoff/Raspi-BeBox

19 Likes
10 Likes

Wow! I would have loved to have a Bebox again :gift::grinning:

Geee, more things to try on the 3D printer when we open the fablab here :heart_eyes:

2 Likes

Just saw a press release for a tiny A500 that will be released next year as well. Anyhow, love the BeBox with Pi! :blush:

1 Like

The RPI 400 for how it is built, and for the name it has, I am almost certain that the authors were inspired by the Amiga 500, in a certain sense they paid homage to it.

3 Likes

When I will able to build it, I may help to setup MMU in boot loader and load kernel, adjust compile settings, linker scripts etc. The same approach as in riscv64 with LookupPte() can be used. Unlike 32 bit ARM page lookup table have simpler format and it is possible to setup physical linear RAM mapping.

Some links for reference:

12 Likes

Wow, I did hear the name Pi400 before, but I never realized that this was a nice complete version of it, ready for use, hardware wise. This is going on my wishlist alongside RISC-V :heart_eyes:

2 Likes

Yes, please… :wink:

3 Likes

yes, it is a complete computer for every day use generic desktop based on raspberry pi 4 arm64 architecture equipped with keyboard mouse and power supply and it is relatively cheap

there is a lot of hipe between raspberry and amiga comunity these days, to the point where there was someone who built a raspberry-based amiga 500 accelerator, the PiStorm priced at 11 bucks!

(and I stop with this to reply, we are going off-topic)

I just ordered the front panel in PA-12 Glass Fiber from shapeways for ~$30 usd.
I’ll just print the body myself given the size and hope everything aligns :slight_smile:

1 Like

send me the cad prints, I’ll run one on my cnc machine