Auto merge of #135074 - wzssyqa:mips-mti, r=oli-obk

Target: Add mips mti baremetal support

Do the same thing as gcc, which use the vendor `mti` to mark the toolchain as MIPS32r2 default.

We support both big endian and little endian flavor:
  mips-mti-none-elf
  mipsel-mti-none-elf
This commit is contained in:
bors 2025-01-05 07:01:38 +00:00
commit 7270e73b62
12 changed files with 120 additions and 4 deletions

View file

@ -62,6 +62,7 @@
- [m68k-unknown-linux-gnu](platform-support/m68k-unknown-linux-gnu.md)
- [mips64-openwrt-linux-musl](platform-support/mips64-openwrt-linux-musl.md)
- [mipsel-sony-psx](platform-support/mipsel-sony-psx.md)
- [mips\*-mti-none-elf](platform-support/mips-mti-none-elf.md)
- [mipsisa\*r6\*-unknown-linux-gnu\*](platform-support/mips-release-6.md)
- [nvptx64-nvidia-cuda](platform-support/nvptx64-nvidia-cuda.md)
- [powerpc-unknown-openbsd](platform-support/powerpc-unknown-openbsd.md)

View file

@ -332,6 +332,8 @@ target | std | host | notes
`mipsel-unknown-linux-uclibc` | ✓ | | MIPS (LE) Linux with uClibc
[`mipsel-unknown-netbsd`](platform-support/netbsd.md) | ✓ | ✓ | 32-bit MIPS (LE), requires mips32 cpu support
`mipsel-unknown-none` | * | | Bare MIPS (LE) softfloat
[`mips-mti-none-elf`](platform-support/mips-mti-none-elf.md) | * | | Bare MIPS32r2 (BE) softfloat
[`mipsel-mti-none-elf`](platform-support/mips-mti-none-elf.md) | * | | Bare MIPS32r2 (LE) softfloat
[`mipsisa32r6-unknown-linux-gnu`](platform-support/mips-release-6.md) | ? | | 32-bit MIPS Release 6 Big Endian
[`mipsisa32r6el-unknown-linux-gnu`](platform-support/mips-release-6.md) | ? | | 32-bit MIPS Release 6 Little Endian
[`mipsisa64r6-unknown-linux-gnuabi64`](platform-support/mips-release-6.md) | ? | | 64-bit MIPS Release 6 Big Endian

View file

@ -0,0 +1,31 @@
# `mips*-mti-none-elf`
**Tier: 3**
MIPS32r2 baremetal softfloat, Big Endian or Little Endian.
- mips-mti-none-elf
- mipsel-mti-none-elf
## Target maintainers
- YunQiang Su, `syq@debian.org`, https://github.com/wzssyqa
## Background
These 2 targets, aka mips-mti-none-elf and mipsel-mti-none-elf, are for
baremetal development of MIPS32r2. The lld is used instead of Gnu-ld.
## Requirements
The target only supports cross compilation and no host tools. The target
supports `alloc` with a default allocator while only support `no-std` development.
The vendor name `mti` follows the naming of gcc to indicate MIPS32r2.
## Cross-compilation toolchains and C code
Compatible C code can be built for this target on any compiler that has a MIPS32r2
target. On clang and ld.lld linker, it can be generated using the
`-march=mips`/`-march=mipsel`, `-mabi=32` with llvm features flag
`features=+mips32r2,+soft-float,+noabicalls`.

View file

@ -128,6 +128,8 @@ static TARGETS: &[&str] = &[
"mipsisa64r6el-unknown-linux-gnuabi64",
"mipsel-unknown-linux-gnu",
"mipsel-unknown-linux-musl",
"mips-mti-none-elf",
"mipsel-mti-none-elf",
"nvptx64-nvidia-cuda",
"powerpc-unknown-linux-gnu",
"powerpc64-unknown-linux-gnu",