/* cache following instructions, as memory gets put to sleep */
        la      t0, 1f
-       .set    mips3
+       .set    arch=r4000
        cache   0x14, 0(t0)
        cache   0x14, 32(t0)
        cache   0x14, 64(t0)
 
        /* cache following instructions, as memory gets put to sleep */
        la      t0, 1f
-       .set    mips3
+       .set    arch=r4000
        cache   0x14, 0(t0)
        cache   0x14, 32(t0)
        cache   0x14, 64(t0)
        la      t1, 4f
        subu    t2, t1, t0
 
-       .set    mips3
+       .set    arch=r4000
 
 1:     cache   0x14, 0(t0)
        subu    t2, t2, 32
 
 
 #define PREF(hint,addr)                                        \
                .set    push;                           \
-               .set    mips4;                          \
+               .set    arch=r5000;                     \
                pref    hint, addr;                     \
                .set    pop
 
 
 #define PREFX(hint,addr)                               \
                .set    push;                           \
-               .set    mips4;                          \
+               .set    arch=r5000;                     \
                prefx   hint, addr;                     \
                .set    pop
 
 
                int temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     ll      %0, %1          # atomic_add            \n"
                "       addu    %0, %2                                  \n"
                "       sc      %0, %1                                  \n"
 
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       ll      %0, %1          # atomic_add    \n"
                        "       addu    %0, %2                          \n"
                        "       sc      %0, %1                          \n"
                int temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     ll      %0, %1          # atomic_sub            \n"
                "       subu    %0, %2                                  \n"
                "       sc      %0, %1                                  \n"
 
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       ll      %0, %1          # atomic_sub    \n"
                        "       subu    %0, %2                          \n"
                        "       sc      %0, %1                          \n"
                int temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     ll      %1, %2          # atomic_add_return     \n"
                "       addu    %0, %1, %3                              \n"
                "       sc      %0, %2                                  \n"
 
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       ll      %1, %2  # atomic_add_return     \n"
                        "       addu    %0, %1, %3                      \n"
                        "       sc      %0, %2                          \n"
                int temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     ll      %1, %2          # atomic_sub_return     \n"
                "       subu    %0, %1, %3                              \n"
                "       sc      %0, %2                                  \n"
 
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       ll      %1, %2  # atomic_sub_return     \n"
                        "       subu    %0, %1, %3                      \n"
                        "       sc      %0, %2                          \n"
                int temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     ll      %1, %2          # atomic_sub_if_positive\n"
                "       subu    %0, %1, %3                              \n"
                "       bltz    %0, 1f                                  \n"
                int temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     ll      %1, %2          # atomic_sub_if_positive\n"
                "       subu    %0, %1, %3                              \n"
                "       bltz    %0, 1f                                  \n"
                long temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     lld     %0, %1          # atomic64_add          \n"
                "       daddu   %0, %2                                  \n"
                "       scd     %0, %1                                  \n"
 
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       lld     %0, %1          # atomic64_add  \n"
                        "       daddu   %0, %2                          \n"
                        "       scd     %0, %1                          \n"
                long temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     lld     %0, %1          # atomic64_sub          \n"
                "       dsubu   %0, %2                                  \n"
                "       scd     %0, %1                                  \n"
 
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       lld     %0, %1          # atomic64_sub  \n"
                        "       dsubu   %0, %2                          \n"
                        "       scd     %0, %1                          \n"
                long temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     lld     %1, %2          # atomic64_add_return   \n"
                "       daddu   %0, %1, %3                              \n"
                "       scd     %0, %2                                  \n"
 
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       lld     %1, %2  # atomic64_add_return   \n"
                        "       daddu   %0, %1, %3                      \n"
                        "       scd     %0, %2                          \n"
                long temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     lld     %1, %2          # atomic64_sub_return   \n"
                "       dsubu   %0, %1, %3                              \n"
                "       scd     %0, %2                                  \n"
 
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       lld     %1, %2  # atomic64_sub_return   \n"
                        "       dsubu   %0, %1, %3                      \n"
                        "       scd     %0, %2                          \n"
                long temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     lld     %1, %2          # atomic64_sub_if_positive\n"
                "       dsubu   %0, %1, %3                              \n"
                "       bltz    %0, 1f                                  \n"
                long temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     lld     %1, %2          # atomic64_sub_if_positive\n"
                "       dsubu   %0, %1, %3                              \n"
                "       bltz    %0, 1f                                  \n"
 
 
        if (kernel_uses_llsc && R10000_LLSC_WAR) {
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     " __LL "%0, %1                  # set_bit       \n"
                "       or      %0, %2                                  \n"
                "       " __SC  "%0, %1                                 \n"
        } else if (kernel_uses_llsc) {
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       " __LL "%0, %1          # set_bit       \n"
                        "       or      %0, %2                          \n"
                        "       " __SC  "%0, %1                         \n"
 
        if (kernel_uses_llsc && R10000_LLSC_WAR) {
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     " __LL "%0, %1                  # clear_bit     \n"
                "       and     %0, %2                                  \n"
                "       " __SC "%0, %1                                  \n"
        } else if (kernel_uses_llsc) {
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       " __LL "%0, %1          # clear_bit     \n"
                        "       and     %0, %2                          \n"
                        "       " __SC "%0, %1                          \n"
                unsigned long temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                           \n"
+               "       .set    arch=r4000                      \n"
                "1:     " __LL "%0, %1          # change_bit    \n"
                "       xor     %0, %2                          \n"
                "       " __SC  "%0, %1                         \n"
 
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       " __LL "%0, %1          # change_bit    \n"
                        "       xor     %0, %2                          \n"
                        "       " __SC  "%0, %1                         \n"
                unsigned long temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     " __LL "%0, %1          # test_and_set_bit      \n"
                "       or      %2, %0, %3                              \n"
                "       " __SC  "%2, %1                                 \n"
 
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       " __LL "%0, %1  # test_and_set_bit      \n"
                        "       or      %2, %0, %3                      \n"
                        "       " __SC  "%2, %1                         \n"
                unsigned long temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     " __LL "%0, %1          # test_and_set_bit      \n"
                "       or      %2, %0, %3                              \n"
                "       " __SC  "%2, %1                                 \n"
 
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       " __LL "%0, %1  # test_and_set_bit      \n"
                        "       or      %2, %0, %3                      \n"
                        "       " __SC  "%2, %1                         \n"
                unsigned long temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     " __LL  "%0, %1         # test_and_clear_bit    \n"
                "       or      %2, %0, %3                              \n"
                "       xor     %2, %3                                  \n"
 
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       " __LL  "%0, %1 # test_and_clear_bit    \n"
                        "       or      %2, %0, %3                      \n"
                        "       xor     %2, %3                          \n"
                unsigned long temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     " __LL  "%0, %1         # test_and_change_bit   \n"
                "       xor     %2, %0, %3                              \n"
                "       " __SC  "%2, %1                                 \n"
 
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       " __LL  "%0, %1 # test_and_change_bit   \n"
                        "       xor     %2, %0, %3                      \n"
                        "       " __SC  "\t%2, %1                       \n"
 
                unsigned long dummy;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     ll      %0, %3                  # xchg_u32      \n"
                "       .set    mips0                                   \n"
                "       move    %2, %z4                                 \n"
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "       sc      %2, %1                                  \n"
                "       beqzl   %2, 1b                                  \n"
                "       .set    mips0                                   \n"
 
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       ll      %0, %3          # xchg_u32      \n"
                        "       .set    mips0                           \n"
                        "       move    %2, %z4                         \n"
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       sc      %2, %1                          \n"
                        "       .set    mips0                           \n"
                        : "=&r" (retval), "=m" (*m), "=&r" (dummy)
                unsigned long dummy;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     lld     %0, %3                  # xchg_u64      \n"
                "       move    %2, %z4                                 \n"
                "       scd     %2, %1                                  \n"
 
                do {
                        __asm__ __volatile__(
-                       "       .set    mips3                           \n"
+                       "       .set    arch=r4000                      \n"
                        "       lld     %0, %3          # xchg_u64      \n"
                        "       move    %2, %z4                         \n"
                        "       scd     %2, %1                          \n"
                __asm__ __volatile__(                                   \
                "       .set    push                            \n"     \
                "       .set    noat                            \n"     \
-               "       .set    mips3                           \n"     \
+               "       .set    arch=r4000                      \n"     \
                "1:     " ld "  %0, %2          # __cmpxchg_asm \n"     \
                "       bne     %0, %z3, 2f                     \n"     \
                "       .set    mips0                           \n"     \
                "       move    $1, %z4                         \n"     \
-               "       .set    mips3                           \n"     \
+               "       .set    arch=r4000                      \n"     \
                "       " st "  $1, %1                          \n"     \
                "       beqzl   $1, 1b                          \n"     \
                "2:                                             \n"     \
                __asm__ __volatile__(                                   \
                "       .set    push                            \n"     \
                "       .set    noat                            \n"     \
-               "       .set    mips3                           \n"     \
+               "       .set    arch=r4000                      \n"     \
                "1:     " ld "  %0, %2          # __cmpxchg_asm \n"     \
                "       bne     %0, %z3, 2f                     \n"     \
                "       .set    mips0                           \n"     \
                "       move    $1, %z4                         \n"     \
-               "       .set    mips3                           \n"     \
+               "       .set    arch=r4000                      \n"     \
                "       " st "  $1, %1                          \n"     \
                "       beqz    $1, 1b                          \n"     \
                "       .set    pop                             \n"     \
 
                __asm__ __volatile__(                                   \
                "       .set    push                            \n"     \
                "       .set    noat                            \n"     \
-               "       .set    mips3                           \n"     \
+               "       .set    arch=r4000                      \n"     \
                "1:     ll      %1, %4  # __futex_atomic_op     \n"     \
                "       .set    mips0                           \n"     \
                "       " insn  "                               \n"     \
-               "       .set    mips3                           \n"     \
+               "       .set    arch=r4000                      \n"     \
                "2:     sc      $1, %2                          \n"     \
                "       beqzl   $1, 1b                          \n"     \
                __WEAK_LLSC_MB                                          \
                __asm__ __volatile__(                                   \
                "       .set    push                            \n"     \
                "       .set    noat                            \n"     \
-               "       .set    mips3                           \n"     \
+               "       .set    arch=r4000                      \n"     \
                "1:     "user_ll("%1", "%4")" # __futex_atomic_op\n"    \
                "       .set    mips0                           \n"     \
                "       " insn  "                               \n"     \
-               "       .set    mips3                           \n"     \
+               "       .set    arch=r4000                      \n"     \
                "2:     "user_sc("$1", "%2")"                   \n"     \
                "       beqz    $1, 1b                          \n"     \
                __WEAK_LLSC_MB                                          \
                "# futex_atomic_cmpxchg_inatomic                        \n"
                "       .set    push                                    \n"
                "       .set    noat                                    \n"
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     ll      %1, %3                                  \n"
                "       bne     %1, %z4, 3f                             \n"
                "       .set    mips0                                   \n"
                "       move    $1, %z5                                 \n"
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "2:     sc      $1, %2                                  \n"
                "       beqzl   $1, 1b                                  \n"
                __WEAK_LLSC_MB
                "# futex_atomic_cmpxchg_inatomic                        \n"
                "       .set    push                                    \n"
                "       .set    noat                                    \n"
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:     "user_ll("%1", "%3")"                           \n"
                "       bne     %1, %z4, 3f                             \n"
                "       .set    mips0                                   \n"
                "       move    $1, %z5                                 \n"
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "2:     "user_sc("$1", "%2")"                           \n"
                "       beqz    $1, 1b                                  \n"
                __WEAK_LLSC_MB
 
                if (irq)                                                \
                        local_irq_save(__flags);                        \
                __asm__ __volatile__(                                   \
-                       ".set   mips3"          "\t\t# __writeq""\n\t"  \
+                       ".set   arch=r4000"     "\t\t# __writeq""\n\t"  \
                        "dsll32 %L0, %L0, 0"                    "\n\t"  \
                        "dsrl32 %L0, %L0, 0"                    "\n\t"  \
                        "dsll32 %M0, %M0, 0"                    "\n\t"  \
                if (irq)                                                \
                        local_irq_save(__flags);                        \
                __asm__ __volatile__(                                   \
-                       ".set   mips3"          "\t\t# __readq" "\n\t"  \
+                       ".set   arch=r4000"     "\t\t# __readq" "\n\t"  \
                        "ld     %L0, %1"                        "\n\t"  \
                        "dsra32 %M0, %L0, 0"                    "\n\t"  \
                        "sll    %L0, %L0, 0"                    "\n\t"  \
 
                unsigned long temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:"    __LL    "%1, %2         # local_add_return      \n"
                "       addu    %0, %1, %3                              \n"
                        __SC    "%0, %2                                 \n"
                unsigned long temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:"    __LL    "%1, %2         # local_add_return      \n"
                "       addu    %0, %1, %3                              \n"
                        __SC    "%0, %2                                 \n"
                unsigned long temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:"    __LL    "%1, %2         # local_sub_return      \n"
                "       subu    %0, %1, %3                              \n"
                        __SC    "%0, %2                                 \n"
                unsigned long temp;
 
                __asm__ __volatile__(
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "1:"    __LL    "%1, %2         # local_sub_return      \n"
                "       subu    %0, %1, %3                              \n"
                        __SC    "%0, %2                                 \n"
 
 
        __asm__ __volatile__(
        "       .set    push                            \n"
-       "       .set    mips3                           \n"
+       "       .set    arch=r4000                      \n"
        "1:     ll      %0, %1  # set_value_reg32       \n"
        "       and     %0, %2                          \n"
        "       or      %0, %3                          \n"
 
        __asm__ __volatile__(
        "       .set    push                            \n"
-       "       .set    mips3                           \n"
+       "       .set    arch=r4000                      \n"
        "1:     ll      %0, %1          # set_reg32     \n"
        "       or      %0, %2                          \n"
        "       sc      %0, %1                          \n"
 
        __asm__ __volatile__(
        "       .set    push                            \n"
-       "       .set    mips3                           \n"
+       "       .set    arch=r4000                      \n"
        "1:     ll      %0, %1          # clear_reg32   \n"
        "       and     %0, %2                          \n"
        "       sc      %0, %1                          \n"
 
        __asm__ __volatile__(
        "       .set    push                            \n"
-       "       .set    mips3                           \n"
+       "       .set    arch=r4000                      \n"
        "1:     ll      %0, %1          # toggle_reg32  \n"
        "       xor     %0, %2                          \n"
        "       sc      %0, %1                          \n"
 #define custom_read_reg32(address, tmp)                                \
        __asm__ __volatile__(                                   \
        "       .set    push                            \n"     \
-       "       .set    mips3                           \n"     \
+       "       .set    arch=r4000                      \n"     \
        "1:     ll      %0, %1  #custom_read_reg32      \n"     \
        "       .set    pop                             \n"     \
        : "=r" (tmp), "=m" (*address)                           \
 #define custom_write_reg32(address, tmp)                       \
        __asm__ __volatile__(                                   \
        "       .set    push                            \n"     \
-       "       .set    mips3                           \n"     \
+       "       .set    arch=r4000                      \n"     \
        "       sc      %0, %1  #custom_write_reg32     \n"     \
        "       "__beqz"%0, 1b                          \n"     \
        "       nop                                     \n"     \
 
        __asm__ __volatile__(                                           \
        "       .set    push                                    \n"     \
        "       .set    noreorder                               \n"     \
-       "       .set    mips3\n\t                               \n"     \
+       "       .set    arch=r4000                              \n"     \
        "       cache   %0, %1                                  \n"     \
        "       .set    pop                                     \n"     \
        :                                                               \
        __asm__ __volatile__(                                   \
        "       .set    push                    \n"             \
        "       .set    noreorder               \n"             \
-       "       .set    mips3                   \n"             \
+       "       .set    arch=r4000              \n"             \
        "1:     cache   %0, (%1)                \n"             \
        "2:     .set    pop                     \n"             \
        "       .section __ex_table,\"a\"       \n"             \
 
 
                .macro  RESTORE_SP_AND_RET
                LONG_L  sp, PT_R29(sp)
-               .set    mips3
+               .set    arch=r4000
                eret
                .set    mips0
                .endm
 
        jr      k0
 
        RESTORE_ALL
-       .set    mips3
+       .set    arch=r4000
        eret
 
 /***********************************************************************
 
  */
 NESTED(except_vec3_r4000, 0, sp)
        .set    push
-       .set    mips3
+       .set    arch=r4000
        .set    noat
        mfc0    k1, CP0_CAUSE
        li      k0, 31<<2
        nop
        nop
 #endif
-       .set    mips3
+       .set    arch=r4000
        wait
        /* end of rollback region (the region size must be power of two) */
 1:
        ori     k1, _THREAD_MASK
        xori    k1, _THREAD_MASK
        LONG_L  v1, TI_TP_VALUE(k1)
-       .set    mips3
+       .set    arch=r4000
        eret
        .set    mips0
 #endif
 
        if (!need_resched())
                __asm__(
                "       .set    push            \n"
-               "       .set    mips3           \n"
+               "       .set    arch=r4000      \n"
                "       wait                    \n"
                "       .set    pop             \n");
        local_irq_enable();
        if (!need_resched())
                __asm__(
                "       .set    push                                    \n"
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "       .set    noat                                    \n"
                "       mfc0    $1, $12                                 \n"
                "       sync                                            \n"
        unsigned long c0status = read_c0_status() | 1;  /* irqs on */
 
        __asm__(
-       "       .set    mips3                   \n"
+       "       .set    arch=r4000                      \n"
        "       cache   0x14, 0(%0)             \n"
        "       cache   0x14, 32(%0)            \n"
        "       sync                            \n"
 
        .endm
 
        .set    noreorder
-       .set    mips3
+       .set    arch=r4000
 
 LEAF(_save_fp_context)
        cfc1    t1, fcr31
 
 1:     .set    pop
 #endif /* CONFIG_CPU_MIPS32_R2 */
 #else
-       .set    mips3
+       .set    arch=r4000
        dmtc1   t1, $f0
        dmtc1   t1, $f2
        dmtc1   t1, $f4
 
 
        if (cpu_has_llsc && R10000_LLSC_WAR) {
                __asm__ __volatile__ (
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "       li      %[err], 0                               \n"
                "1:     ll      %[old], (%[addr])                       \n"
                "       move    %[tmp], %[new]                          \n"
                : "memory");
        } else if (cpu_has_llsc) {
                __asm__ __volatile__ (
-               "       .set    mips3                                   \n"
+               "       .set    arch=r4000                              \n"
                "       li      %[err], 0                               \n"
                "1:     ll      %[old], (%[addr])                       \n"
                "       move    %[tmp], %[new]                          \n"
 
        /* Cache the reset code of this function */
        __asm__ __volatile__ (
                "       .set    push                            \n"
-               "       .set    mips3                           \n"
+               "       .set    arch=r4000                      \n"
                "       la      %0,startpoint                   \n"
                "       la      %1,endpoint                     \n"
                "       .set    pop                             \n"