diff --git a/ci/build.sh b/ci/build.sh
index e63b4f7e2cf64619bebee72c5b9a6b87eb76f211..0df169c452792ffeb1406058eb94ea980bef6d65 100644
--- a/ci/build.sh
+++ b/ci/build.sh
@@ -204,6 +204,8 @@ i686-unknown-netbsd \
 i686-unknown-openbsd \
 mips-unknown-linux-uclibc \
 mipsel-unknown-linux-uclibc \
+mips64-unknown-linux-muslabi64 \
+mips64el-unknown-linux-muslabi64 \
 nvptx64-nvidia-cuda \
 powerpc-unknown-linux-gnuspe \
 powerpc-unknown-netbsd \
diff --git a/ci/docker/mips64-unknown-linux-muslabi64/Dockerfile b/ci/docker/mips64-unknown-linux-muslabi64/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..8f63ade604b5bfa93c50538b9de7a0934c75cb67
--- /dev/null
+++ b/ci/docker/mips64-unknown-linux-muslabi64/Dockerfile
@@ -0,0 +1,15 @@
+FROM ubuntu:19.04
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+  gcc make libc6-dev git curl ca-certificates \
+  gcc-mips64-linux-gnuabi64 qemu-user
+
+COPY install-musl.sh /
+RUN sh /install-musl.sh mips64
+
+# FIXME: shouldn't need the `-lgcc` here, shouldn't that be in libstd?
+ENV PATH=$PATH:/musl-mips64/bin:/rust/bin \
+    CC_mips64_unknown_linux_muslabi64=musl-gcc \
+    RUSTFLAGS='-Clink-args=-lgcc' \
+    CARGO_TARGET_MIPS64_UNKNOWN_LINUX_MUSLABI64_LINKER=musl-gcc \
+    CARGO_TARGET_MIPS64_UNKNOWN_LINUX_MUSLABI64_RUNNER="qemu-mips64 -L /musl-mips64"
diff --git a/ci/docker/mips64el-unknown-linux-muslabi64/Dockerfile b/ci/docker/mips64el-unknown-linux-muslabi64/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..c42c2ba601001aefd8e1e2f930ae1d785746acfb
--- /dev/null
+++ b/ci/docker/mips64el-unknown-linux-muslabi64/Dockerfile
@@ -0,0 +1,15 @@
+FROM ubuntu:19.04
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+  gcc make libc6-dev git curl ca-certificates \
+  gcc-mips64el-linux-gnuabi64 qemu-user
+
+COPY install-musl.sh /
+RUN sh /install-musl.sh mips64el
+
+# FIXME: shouldn't need the `-lgcc` here, shouldn't that be in libstd?
+ENV PATH=$PATH:/musl-mips64el/bin:/rust/bin \
+    CC_mips64el_unknown_linux_muslabi64=musl-gcc \
+    RUSTFLAGS='-Clink-args=-lgcc' \
+    CARGO_TARGET_MIPS64EL_UNKNOWN_LINUX_MUSLABI64_LINKER=musl-gcc \
+    CARGO_TARGET_MIPS64EL_UNKNOWN_LINUX_MUSLABI64_RUNNER="qemu-mips64el -L /musl-mips64el"
diff --git a/ci/install-musl.sh b/ci/install-musl.sh
index ab98c4f0f62cb1e7ee9b255db3196f67deaf0500..d6ec17e60466d75d0240ddbeca334b1089bb7501 100644
--- a/ci/install-musl.sh
+++ b/ci/install-musl.sh
@@ -46,6 +46,20 @@ case ${1} in
         ./configure --prefix="/musl-${musl_arch}"
         make install -j4
         ;;
+    mips64)
+        musl_arch=mips64
+        kernel_arch=mips
+        CC=mips64-linux-gnuabi64-gcc CFLAGS="-march=mips64r2 -mabi=64" \
+          ./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes
+        make install -j4
+        ;;
+    mips64el)
+        musl_arch=mips64el
+        kernel_arch=mips
+        CC=mips64el-linux-gnuabi64-gcc CFLAGS="-march=mips64r2 -mabi=64" \
+          ./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes
+        make install -j4
+        ;;
     *)
         echo "Unknown target arch: \"${1}\""
         exit 1