Skip to content

Commit

Permalink
Ericson2314's suggestion here: NixOS/nixpkgs#161158 (comment)
Browse files Browse the repository at this point in the history
  • Loading branch information
Adam Joseph committed Mar 11, 2022
1 parent 6ecc6a3 commit 578bb8b
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 22 deletions.
22 changes: 19 additions & 3 deletions lib/systems/examples.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down
26 changes: 7 additions & 19 deletions lib/systems/platforms.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down

0 comments on commit 578bb8b

Please sign in to comment.