As part of SUSE 11, Mono needs to run on the PowerPC in 64 bit mode. The effort was bootstrapped with some early work from Andreas Faerber.
It was fun to watch Mark's daily commits progress of the port, the tests referenced here are the basic runtime tests that we use to check for regressions and to get a port up and running, it is a good roadmap for how a port comes to life:
* mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes. PPC64 passes basic.exe now. --- * cpu-ppc64.md: Fixed a few instruction lengths. * mini-ppc64.c: Don't emit SETLRET. Now PPC64 passes basic-float.exe. --- * decompose.c: Decompose carry and overflow add on PPC64 like on other 64 bit archs. Don't decompose sub at all on PPC64. * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md: Several fixes and new opcodes. Now PPC64 runs (but doesn't pass) basic-long.exe. --- * ppc/ppc-codegen.h: Use ppc_load_reg instead of ppc_ld in ppc_load_func to fix the 2 bit shift. --- * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes. Now PPC64 passes basic-long.exe. --- * ppc/ppc-codegen.h: Make ppc_is_[u]imm16() work with 64 bit values. --- * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating point regs. Now PPC64 passes basic-calls.exe. --- * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md: Several fixes. PPC64 now runs objects.exe. --- * mini-ppc64.c, tramp-ppc64.c: Small fixes. PPC64 now runs arrays.exe and basic-math.exe. --- * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md: Several fixes. PPC64 now runs exceptions.exe and devirtualization.exe. --- * mini-ppc64.c: Several fixes. PPC64 now runs iltests.exe. --- * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code sharing. PPC64 now passes generics.exe. --- * basic-long.cs: New test case. --- * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several fixes. PPC64 now passes most of the runtime regressions.
Followed by today's tweet:
The bootstrap means that the Mono JIT is actually doing a full build of Mono's compilers and class libraries and can be built on the target platform.
Update: Mark has posted a great picture of Jim Purbrick from Second Life, the man behind Mono running on Second Life.