[llvm-dev] Clang for the PlayStation 2 (original) (raw)

Dan Ravensloft via llvm-dev llvm-dev at lists.llvm.org
Sat Sep 1 09:04:36 PDT 2018


Hello,

I'm part of the (sadly fairly small) community of PS2 hackers. The current cross-toolchain for the PS2 is based on GCC 3.2.3, an outdated and buggy compiler, which I have personally gotten tired of working with, so I would like to port Clang as a newer cross-compiler for the PS2.

However, the PS2 has some notable quirks which make this a non-trivial task for the current compiler. It has two main CPUs, the "Emotion Engine" (EE), which controls the main operating system, and the "I/O Processor" (IOP), which is used for PS1 compatibility and for I/O.

The EE is based on a custom chip called the R5900, which implements most of MIPS III (except the ll and sc instructions, which make little sense on a single-core CPU), as well as some instructions from MIPS IV (pref, movz/movn, rsqrt.s), and a set of SIMD instructions known as Multimedia Instructions (MMI). It also contains a non-IEEE 754 single-precision FPU (which has provided a lot of headaches). It was later re-used by Toshiba as the TX79, along with a proper FPU.

The IOP is based on the MIPS I R3051A, and was also used as the PS1 CPU.

I'd like to go through some of the issues I've had so far.

I've tried to use mips64el as a target, but it would invoke the system GCC with obvious bad results, so I have used the mips64el-img-linux target to generate ELF files which the PS2 BIOS can load (is there a better solution to generate bare-metal ELF?).

I then tried to compile newlib 3.0.0-20180802, as newlib is used as the standard C library for the PS2, and hit multiple asserts, which I have attached below.

I don't mind trying to fix these myself, but I would appreciate some pointers. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180901/85a09567/attachment-0001.html> -------------- next part -------------- A non-text attachment was scrubbed... Name: llvm-bugs.tgz Type: application/gzip Size: 450900 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180901/85a09567/attachment-0001.bin>



More information about the llvm-dev mailing list