diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix index 1ee704a1..997a7a8c 100644 --- a/lib/systems/examples.nix +++ b/lib/systems/examples.nix @@ -93,9 +93,25 @@ rec { config = "mipsel-unknown-linux-gnu"; } // platforms.fuloong2f_n32; - mips64el-linux-gnuabin32 = platforms.mips64el-linux-gnuabin32; # the rust project does not publish a bootstrap tarball for gnuabin32 - mips64el-linux-gnuabi64 = platforms.mips64el-linux-gnuabi64 // { rustc.config = "mips64el-unknown-linux-gnuabi64"; }; - mips64el-qemu-linux-gnuabi64 = platforms.mips64el-qemu-linux-gnuabi64; + # MIPS ABI table transcribed from here: https://wiki.debian.org/Multiarch/Tuples + + # can execute on 32bit chip + mips-linux-gnu = { config = "mips-linux-gnu"; } // platforms.gcc_mips32r2_o32; + mipsel-linux-gnu = { config = "mipsel-linux-gnu"; } // platforms.gcc_mips32r2_o32; + mipsisa32r6-linux-gnu = { config = "mipsisa32r6-linux-gnu"; } // platforms.gcc_mips32r6_o32; + mipsisa32r6el-linux-gnu = { config = "mipsisa32r6el-linux-gnu"; } // platforms.gcc_mips32r6_o32; + + # require 64bit chip (for more registers, 64-bit floating point, 64-bit "long long") but use 32bit pointers + mips64-linux-gnuabin32 = { config = "mips64-linux-gnuabin32"; } // platforms.gcc_mips64r2_n32; + mips64el-linux-gnuabin32 = { config = "mips64el-linux-gnuabin32"; } // platforms.gcc_mips64r2_n32; + mipsisa64r6-linux-gnuabin32 = { config = "mipsisa64r6-linux-gnuabin32"; } // platforms.gcc_mips64r6_n32; + mipsisa64r6el-linux-gnuabin32 = { config = "mipsisa64r6el-linux-gnuabin32"; } // platforms.gcc_mips64r6_n32; + + # 64bit pointers + mips64-linux-gnuabi64 = { config = "mips64-linux-gnuabi64"; } // platforms.gcc_mips64r2_64; + mips64el-linux-gnuabi64 = { config = "mips64el-linux-gnuabi64"; } // platforms.gcc_mips64r2_64; + mipsisa64r6-linux-gnuabi64 = { config = "mipsisa64r6-linux-gnuabi64"; } // platforms.gcc_mips64r6_64; + mipsisa64r6el-linux-gnuabi64 = { config = "mipsisa64r6el-linux-gnuabi64"; } // platforms.gcc_mips64r6_64; muslpi = raspberryPi // { config = "armv6l-unknown-linux-musleabihf"; diff --git a/lib/systems/platforms.nix b/lib/systems/platforms.nix index e7d61b24..04d55416 100644 --- a/lib/systems/platforms.nix +++ b/lib/systems/platforms.nix @@ -489,30 +489,18 @@ rec { }; }; - # MIPS ABI table transcribed from here: https://wiki.debian.org/Multiarch/Tuples - # can execute on 32bit chip - mips-linux-gnu = { gcc = { arch = "mips32r2"; abi = "o32"; }; }; - mipsel-linux-gnu = { gcc = { arch = "mips32r2"; abi = "o32"; }; }; - mipsisa32r6-linux-gnu = { gcc = { arch = "mips32r6"; abi = "o32"; }; }; - mipsisa32r6el-linux-gnu = { gcc = { arch = "mips32r6"; abi = "o32"; }; }; - - # require 64bit chip (for more registers, 64-bit floating point, 64-bit "long long") but use 32bit pointers - mips64-linux-gnuabin32 = { gcc = { arch = "mips64r2"; abi = "n32"; }; }; - mips64el-linux-gnuabin32 = { gcc = { arch = "mips64r2"; abi = "n32"; }; }; - mipsisa64r6-linux-gnuabin32 = { gcc = { arch = "mips64r6"; abi = "n32"; }; }; - mipsisa64r6el-linux-gnuabin32 = { gcc = { arch = "mips64r6"; abi = "n32"; }; }; - - # 64bit pointers - mips64-linux-gnuabi64 = { gcc = { arch = "mips64r2"; abi = "64"; }; }; - mips64el-linux-gnuabi64 = { gcc = { arch = "mips64r2"; abi = "64"; }; }; - mipsisa64r6-linux-gnuabi64 = { gcc = { arch = "mips64r6"; abi = "64"; }; }; - mipsisa64r6el-linux-gnuabi64 = { gcc = { arch = "mips64r6"; abi = "64"; }; }; + gcc_mips32r2_o32 = { gcc = { arch = "mips32r2"; abi = "o32"; }; }; + gcc_mips32r6_o32 = { gcc = { arch = "mips32r6"; abi = "o32"; }; }; + gcc_mips64r2_n32 = { gcc = { arch = "mips64r2"; abi = "n32"; }; }; + gcc_mips64r6_n32 = { gcc = { arch = "mips64r6"; abi = "n32"; }; }; + gcc_mips64r2_64 = { gcc = { arch = "mips64r2"; abi = "64"; }; }; + gcc_mips64r6_64 = { gcc = { arch = "mips64r6"; abi = "64"; }; }; # based on: # https://www.mail-archive.com/qemu-discuss@nongnu.org/msg05179.html # https://gmplib.org/~tege/qemu.html#mips64-debian - mips64el-qemu-linux-gnuabi64 = mips64el-linux-gnuabi64 // { + mips64el-qemu-linux-gnuabi64 = (import ./examples).mips64el-linux-gnuabi64 // { linux-kernel = { name = "mips64el"; baseConfig = "64r2el_defconfig";