diff --git a/rules.mk b/rules.mk
index e13d8ccc9fc5df35edec772a98897081f25bb17c..cb0b7da4aebb25f76efeb0b7037c331212b671c1 100644
--- a/rules.mk
+++ b/rules.mk
@@ -89,7 +89,7 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
   REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux$(if $(TARGET_SUFFIX),-$(TARGET_SUFFIX))
   GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux
   DIR_SUFFIX:=_$(LIBC)-$(LIBCV)$(if $(CONFIG_arm),_eabi)
-  BIN_DIR:=$(BIN_DIR)$(if $(CONFIG_USE_UCLIBC),,-$(LIBC))
+  BIN_DIR:=$(BIN_DIR)$(if $(CONFIG_USE_MUSL),,-$(LIBC))
   TARGET_DIR_NAME = target-$(ARCH)$(ARCH_SUFFIX)$(DIR_SUFFIX)$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX))
   TOOLCHAIN_DIR_NAME = toolchain-$(ARCH)$(ARCH_SUFFIX)_gcc-$(GCCV)$(DIR_SUFFIX)
 else
diff --git a/toolchain/Config.in b/toolchain/Config.in
index 7b365e4c5e613ec28306f810117dfbdcc85d3166..1e9460244dbf0f8e7c06b81d9dd9088c13cb688f 100644
--- a/toolchain/Config.in
+++ b/toolchain/Config.in
@@ -211,8 +211,8 @@ comment "C Library"
 
 choice
 	prompt "C Library implementation" if TOOLCHAINOPTS
-	default LIBC_USE_GLIBC if (aarch64 || aarch64_be)
-	default LIBC_USE_UCLIBC
+	default LIBC_USE_UCLIBC if mips64 || mips64el
+	default LIBC_USE_MUSL
 	help
 	  Select the C library implementation.
 
@@ -257,13 +257,13 @@ config INSIGHT
 
 config USE_GLIBC
 	bool
-	default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && (aarch64 || aarch64_be || octeon)
 
 config USE_UCLIBC
+	default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && (mips64 || mips64el)
 	bool
-	default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && !(aarch64 || aarch64_be || octeon)
 
 config USE_MUSL
+	default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && !(mips64 || mips64el)
 	bool
 
 config USE_EXTERNAL_LIBC