diff -Naur gcc-3.2.2-20030218.orig/gcc/config/mips/linux.h gcc-3.2.2-20030218/gcc/config/mips/linux.h --- gcc-3.2.2-20030218.orig/gcc/config/mips/linux.h Tue Apr 16 15:06:27 2002 +++ gcc-3.2.2-20030218/gcc/config/mips/linux.h Tue Jul 1 04:49:31 2003 @@ -138,7 +138,7 @@ -Amachine=mips -D__ELF__ -D__PIC__ -D__pic__" #else #define CPP_PREDEFINES "-DMIPSEB -D_MIPSEB -Dunix -Dmips -D_mips \ --DR3000 -D_R3000 -D__gnu_linux__ -Dlinux -Asystem=posix -Acpu=mips \ +-D__gnu_linux__ -Dlinux -Asystem=posix -Acpu=mips \ -Amachine=mips -D__ELF__ -D__PIC__ -D__pic__" #endif @@ -185,6 +185,8 @@ %{mabi=n32: -D__mips64} \ %{mabi=64: -U__mips64} \ %{!mabi*: -U__mips64} \ +%{mcpu=4kc:-DR4KC -D_R4KC -D__R4KC} \ +%{!mcpu=4kc:-DR3000 -D_R3000 -D__R3000} \ %{fno-PIC:-U__PIC__ -U__pic__} %{fno-pic:-U__PIC__ -U__pic__} \ %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} \ %{pthread:-D_REENTRANT}" diff -Naur gcc-3.2.2-20030218.orig/gcc/config.gcc gcc-3.2.2-20030218/gcc/config.gcc --- gcc-3.2.2-20030218.orig/gcc/config.gcc Tue Jul 1 04:47:53 2003 +++ gcc-3.2.2-20030218/gcc/config.gcc Tue Jul 1 04:49:31 2003 @@ -2385,10 +2385,13 @@ tm_file="mips/little.h $tm_file" ;; esac - tmake_file="t-slibgcc-elf-ver t-linux mips/t-linux" + tmake_file="t-linux mips/t-linux" extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o" gnu_ld=yes gas=yes + if test x$enable_threads = xyes; then + thread_file='posix' + fi ;; mips*el-*-openbsd*) # mips little endian target_cpu_default="MASK_GAS|MASK_ABICALLS" diff -Naur gcc-3.2.2-20030218.orig/gcc/cross_update_cpu.c gcc-3.2.2-20030218/gcc/cross_update_cpu.c --- gcc-3.2.2-20030218.orig/gcc/cross_update_cpu.c Tue Jul 1 04:47:53 2003 +++ gcc-3.2.2-20030218/gcc/cross_update_cpu.c Tue Jul 1 04:53:03 2003 @@ -23,6 +23,10 @@ {"920TDI", "arm9"} }; +struct target_cpu mips_cpu_tbl[] = { + {"4KC", "4kc"} +}; + void cross_update_cpu(argc, argv, family_cpu) int *argc; char ***argv; @@ -33,10 +37,9 @@ int is_arm = 0; if (!strncasecmp(family_cpu, "ppc_", 4) || - (is_arm = !strncasecmp(family_cpu, "arm_", 4))) + (is_arm = !strncasecmp(family_cpu, "arm_", 4)) || + !strncasecmp(family_cpu, "mips_", 5)) { - cpu = family_cpu + 4; - for (i = 0; i < *argc; i++) { if (!strncmp((*argv)[i], "-mcpu=", 6) || @@ -48,7 +51,8 @@ /* The user has not specified cpu option - add it */ char **newargv = xmalloc((*argc + 1)*sizeof(char *)); char *cpu_id = NULL; - if (is_arm) + if (is_arm) { + cpu = family_cpu + 4; for (i = 0; i < sizeof(arm_cpu_tbl)/sizeof(arm_cpu_tbl[0]); i++) { if (! strcmp(arm_cpu_tbl[i].target_arch, cpu)) { @@ -56,13 +60,26 @@ break; } } - else + } else if (!strncasecmp(family_cpu, "ppc_", 4)) + { + cpu = family_cpu + 4; for (i = 0; i < sizeof(ppc_cpu_tbl)/sizeof(ppc_cpu_tbl[0]); i++) { if (! strcmp(ppc_cpu_tbl[i].target_arch, cpu)) { cpu_id = ppc_cpu_tbl[i].cpu_id; break; } + } + } else if (!strncasecmp(family_cpu, "mips_", 5)) + { + cpu = family_cpu + 5; + for (i = 0; i < sizeof(mips_cpu_tbl)/sizeof(mips_cpu_tbl[0]); i++) + { + if (! strcmp(mips_cpu_tbl[i].target_arch, cpu)) { + cpu_id = mips_cpu_tbl[i].cpu_id; + break; + } + } } if (cpu_id) {