diff -ruN binutils-2.20-debian-orig/config/override.m4 binutils-2.20/config/override.m4 --- binutils-2.20-debian-orig/config/override.m4 2009-08-22 12:56:38.000000000 -0400 +++ binutils-2.20/config/override.m4 2010-04-06 21:10:39.000000000 -0400 @@ -40,7 +40,7 @@ dnl Ensure exactly this Autoconf version is used m4_ifndef([_GCC_AUTOCONF_VERSION], - [m4_define([_GCC_AUTOCONF_VERSION], [2.64])]) + [m4_define([_GCC_AUTOCONF_VERSION], [2.65])]) dnl Test for the exact version when AC_INIT is expanded. dnl This allows to update the tree in steps (for testing) diff -ruN binutils-2.20-debian-orig/debian/changelog binutils-2.20/debian/changelog --- binutils-2.20-debian-orig/debian/changelog 2010-04-06 12:58:00.000000000 -0400 +++ binutils-2.20/debian/changelog 2010-04-06 21:48:34.000000000 -0400 @@ -1,3 +1,13 @@ +binutils (2.20-4~metad+1) metad; urgency=low + + * Backported workarounds for loongson2f bugs from cvs. + * Add --enable-fix-loongson2f-nop option to gas/configure, + which makes -mfix-loongson2f-nop the default for MIPS targets + (unless overridden by -mnofix-loongson2f-nop). + * Pass --enable-fix-loongson2f-nop from debian/rules. + + -- Mark H Weaver Tue, 06 Apr 2010 21:48:17 -0400 + binutils (2.20-4~bpo50+1) lenny-backports; urgency=low * Rebuild for lenny-backports. diff -ruN binutils-2.20-debian-orig/debian/rules binutils-2.20/debian/rules --- binutils-2.20-debian-orig/debian/rules 2010-04-06 12:58:00.000000000 -0400 +++ binutils-2.20/debian/rules 2010-04-06 21:10:39.000000000 -0400 @@ -97,6 +97,7 @@ CONFARGS = \ --enable-shared \ --enable-plugins \ + --enable-fix-loongson2f-nop \ --prefix=/usr \ --build=$(DEB_BUILD_GNU_TYPE) \ --host=$(DEB_HOST_GNU_TYPE) \ diff -ruN binutils-2.20-debian-orig/gas/config/tc-mips.c binutils-2.20/gas/config/tc-mips.c --- binutils-2.20-debian-orig/gas/config/tc-mips.c 2009-09-22 11:41:00.000000000 -0400 +++ binutils-2.20/gas/config/tc-mips.c 2010-04-06 21:10:39.000000000 -0400 @@ -1,6 +1,7 @@ /* tc-mips.c -- assemble code for a MIPS chip. Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Contributed by the OSF and Ralph Campbell. Written by Keith Knowles and Ralph Campbell, working independently. Modified for ECOFF and R4000 support by Ian Lance Taylor of Cygnus @@ -751,7 +752,8 @@ /* Classifies the kind of instructions we're interested in when implementing -mfix-vr4120. */ -enum fix_vr4120_class { +enum fix_vr4120_class +{ FIX_VR4120_MACC, FIX_VR4120_DMACC, FIX_VR4120_MULT, @@ -761,6 +763,19 @@ NUM_FIX_VR4120_CLASSES }; +/* ...likewise -mfix-loongson2f-jump. */ +static bfd_boolean mips_fix_loongson2f_jump = FALSE; + +/* ...likewise -mfix-loongson2f-nop. */ +#ifdef MIPS_DEFAULT_FIX_LOONGSON2F_NOP +static bfd_boolean mips_fix_loongson2f_nop = TRUE; +#else +static bfd_boolean mips_fix_loongson2f_nop = FALSE; +#endif + +/* True if -mfix-loongson2f-nop or -mfix-loongson2f-jump passed. */ +static bfd_boolean mips_fix_loongson2f; + /* Given two FIX_VR4120_* values X and Y, bit Y of element X is set if there must be at least one other instruction between an instruction of type X and an instruction of type Y. */ @@ -1048,8 +1063,9 @@ enum mips_regclass { MIPS_GR_REG, MIPS_FP_REG, MIPS16_REG }; static void append_insn - (struct mips_cl_insn *ip, expressionS *p, bfd_reloc_code_real_type *r); + (struct mips_cl_insn *, expressionS *, bfd_reloc_code_real_type *); static void mips_no_prev_insn (void); +static void macro_build (expressionS *, const char *, const char *, ...); static void mips16_macro_build (expressionS *, const char *, const char *, va_list); static void load_register (int, expressionS *, int); @@ -1918,6 +1934,8 @@ if (nop_insn.insn_mo == NULL && strcmp (name, "nop") == 0) { create_insn (&nop_insn, mips_opcodes + i); + if (mips_fix_loongson2f_nop) + nop_insn.insn_opcode = LOONGSON2F_NOP_INSN; nop_insn.fixed_p = 1; } } @@ -2731,6 +2749,54 @@ return nops; } +/* Fix NOP issue: Replace nops by "or at,at,zero". */ + +static void +fix_loongson2f_nop (struct mips_cl_insn * ip) +{ + if (strcmp (ip->insn_mo->name, "nop") == 0) + ip->insn_opcode = LOONGSON2F_NOP_INSN; +} + +/* Fix Jump Issue: Eliminate instruction fetch from outside 256M region + jr target pc &= 'hffff_ffff_cfff_ffff. */ + +static void +fix_loongson2f_jump (struct mips_cl_insn * ip) +{ + if (strcmp (ip->insn_mo->name, "j") == 0 + || strcmp (ip->insn_mo->name, "jr") == 0 + || strcmp (ip->insn_mo->name, "jalr") == 0) + { + int sreg; + expressionS ep; + + if (! mips_opts.at) + return; + + sreg = EXTRACT_OPERAND (RS, *ip); + if (sreg == ZERO || sreg == KT0 || sreg == KT1 || sreg == ATREG) + return; + + ep.X_op = O_constant; + ep.X_add_number = 0xcfff0000; + macro_build (&ep, "lui", "t,u", ATREG, BFD_RELOC_HI16); + ep.X_add_number = 0xffff; + macro_build (&ep, "ori", "t,r,i", ATREG, ATREG, BFD_RELOC_LO16); + macro_build (NULL, "and", "d,v,t", sreg, sreg, ATREG); + } +} + +static void +fix_loongson2f (struct mips_cl_insn * ip) +{ + if (mips_fix_loongson2f_nop) + fix_loongson2f_nop (ip); + + if (mips_fix_loongson2f_jump) + fix_loongson2f_jump (ip); +} + /* Output an instruction. IP is the instruction information. ADDRESS_EXPR is an operand of the instruction to be used with RELOC_TYPE. */ @@ -2744,6 +2810,9 @@ bfd_boolean relaxed_branch = FALSE; segment_info_type *si = seg_info (now_seg); + if (mips_fix_loongson2f) + fix_loongson2f (ip); + /* Mark instruction labels in mips16 mode. */ mips16_mark_labels (); @@ -11220,6 +11289,10 @@ OPTION_MNO_7000_HILO_FIX, OPTION_FIX_24K, OPTION_NO_FIX_24K, + OPTION_FIX_LOONGSON2F_JUMP, + OPTION_NO_FIX_LOONGSON2F_JUMP, + OPTION_FIX_LOONGSON2F_NOP, + OPTION_NO_FIX_LOONGSON2F_NOP, OPTION_FIX_VR4120, OPTION_NO_FIX_VR4120, OPTION_FIX_VR4130, @@ -11308,6 +11381,10 @@ {"mfix7000", no_argument, NULL, OPTION_M7000_HILO_FIX}, {"no-fix-7000", no_argument, NULL, OPTION_MNO_7000_HILO_FIX}, {"mno-fix7000", no_argument, NULL, OPTION_MNO_7000_HILO_FIX}, + {"mfix-loongson2f-jump", no_argument, NULL, OPTION_FIX_LOONGSON2F_JUMP}, + {"mno-fix-loongson2f-jump", no_argument, NULL, OPTION_NO_FIX_LOONGSON2F_JUMP}, + {"mfix-loongson2f-nop", no_argument, NULL, OPTION_FIX_LOONGSON2F_NOP}, + {"mno-fix-loongson2f-nop", no_argument, NULL, OPTION_NO_FIX_LOONGSON2F_NOP}, {"mfix-vr4120", no_argument, NULL, OPTION_FIX_VR4120}, {"mno-fix-vr4120", no_argument, NULL, OPTION_NO_FIX_VR4120}, {"mfix-vr4130", no_argument, NULL, OPTION_FIX_VR4130}, @@ -11575,6 +11652,22 @@ mips_fix_24k = 0; break; + case OPTION_FIX_LOONGSON2F_JUMP: + mips_fix_loongson2f_jump = TRUE; + break; + + case OPTION_NO_FIX_LOONGSON2F_JUMP: + mips_fix_loongson2f_jump = FALSE; + break; + + case OPTION_FIX_LOONGSON2F_NOP: + mips_fix_loongson2f_nop = TRUE; + break; + + case OPTION_NO_FIX_LOONGSON2F_NOP: + mips_fix_loongson2f_nop = FALSE; + break; + case OPTION_FIX_VR4120: mips_fix_vr4120 = 1; break; @@ -11789,6 +11882,8 @@ return 0; } + mips_fix_loongson2f = mips_fix_loongson2f_nop || mips_fix_loongson2f_jump; + return 1; } @@ -14794,6 +14889,8 @@ mips_handle_align (fragS *fragp) { char *p; + int bytes, size, excess; + valueT opcode; if (fragp->fr_type != rs_align_code) return; @@ -14801,17 +14898,28 @@ p = fragp->fr_literal + fragp->fr_fix; if (*p) { - int bytes; + opcode = mips16_nop_insn.insn_opcode; + size = 2; + } + else + { + opcode = nop_insn.insn_opcode; + size = 4; + } - bytes = fragp->fr_next->fr_address - fragp->fr_address - fragp->fr_fix; - if (bytes & 1) - { - *p++ = 0; - fragp->fr_fix++; - } - md_number_to_chars (p, mips16_nop_insn.insn_opcode, 2); - fragp->fr_var = 2; + bytes = fragp->fr_next->fr_address - fragp->fr_address - fragp->fr_fix; + excess = bytes % size; + if (excess != 0) + { + /* If we're not inserting a whole number of instructions, + pad the end of the fixed part of the frag with zeros. */ + memset (p, 0, excess); + p += excess; + fragp->fr_fix += excess; } + + md_number_to_chars (p, opcode, size); + fragp->fr_var = size; } static void @@ -15523,6 +15631,8 @@ -mmt generate MT instructions\n\ -mno-mt do not generate MT instructions\n")); fprintf (stream, _("\ +-mfix-loongson2f-jump work around Loongson2F JUMP instructions\n\ +-mfix-loongson2f-nop work around Loongson2F NOP errata\n\ -mfix-vr4120 work around certain VR4120 errata\n\ -mfix-vr4130 work around VR4130 mflo/mfhi errata\n\ -mfix-24k insert a nop after ERET and DERET instructions\n\ diff -ruN binutils-2.20-debian-orig/gas/config/tc-mips.h binutils-2.20/gas/config/tc-mips.h --- binutils-2.20-debian-orig/gas/config/tc-mips.h 2009-09-02 03:24:20.000000000 -0400 +++ binutils-2.20/gas/config/tc-mips.h 2010-04-06 21:10:39.000000000 -0400 @@ -1,6 +1,6 @@ /* tc-mips.h -- header file for tc-mips.c. Copyright 1993, 1994, 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by the OSF and Ralph Campbell. Written by Keith Knowles and Ralph Campbell, working independently. Modified for ECOFF support by Ian Lance Taylor of Cygnus Support. @@ -59,7 +59,7 @@ extern void mips_handle_align (struct frag *); #define HANDLE_ALIGN(fragp) mips_handle_align (fragp) -#define MAX_MEM_FOR_RS_ALIGN_CODE (1 + 2) +#define MAX_MEM_FOR_RS_ALIGN_CODE (3 + 4) struct insn_label_list; struct mips_segment_info { diff -ruN binutils-2.20-debian-orig/gas/config.in binutils-2.20/gas/config.in --- binutils-2.20-debian-orig/gas/config.in 2009-09-07 08:09:32.000000000 -0400 +++ binutils-2.20/gas/config.in 2010-04-06 21:10:39.000000000 -0400 @@ -138,6 +138,9 @@ /* Choose a default ABI for MIPS targets. */ #undef MIPS_DEFAULT_ABI +/* Define to work around loongson2f NOP bug by default on MIPS targets. */ +#undef MIPS_DEFAULT_FIX_LOONGSON2F_NOP + /* Define if environ is not declared in system header files. */ #undef NEED_DECLARATION_ENVIRON diff -ruN binutils-2.20-debian-orig/gas/configure binutils-2.20/gas/configure --- binutils-2.20-debian-orig/gas/configure 2009-09-07 08:09:27.000000000 -0400 +++ binutils-2.20/gas/configure 2010-04-06 21:10:39.000000000 -0400 @@ -1,10 +1,12 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.64. +# Generated by GNU Autoconf 2.65. +# # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software -# Foundation, Inc. +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. @@ -673,7 +675,8 @@ -exec 7<&0 &1 +test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, @@ -901,6 +904,7 @@ enable_libtool_lock enable_targets enable_checking +enable_fix_loongson2f_nop enable_werror enable_build_warnings enable_nls @@ -1545,6 +1549,7 @@ --disable-libtool-lock avoid locking (might break parallel builds) --enable-targets alternative target configurations besides the primary --enable-checking enable run-time checks + --enable-fix-loongson2f-nop work around loongson2f NOP bug by default on MIPS targets --enable-werror treat compile warnings as errors --enable-build-warnings enable build-time compiler warnings --disable-nls do not use Native Language Support @@ -1564,7 +1569,7 @@ LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor YACC The `Yet Another C Compiler' implementation to use. Defaults to @@ -1640,7 +1645,7 @@ if $ac_init_version; then cat <<\_ACEOF configure -generated by GNU Autoconf 2.64 +generated by GNU Autoconf 2.65 Copyright (C) 2009 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation @@ -1687,7 +1692,7 @@ ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval + as_fn_set_status $ac_retval } # ac_fn_c_try_compile @@ -1733,7 +1738,7 @@ # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval + as_fn_set_status $ac_retval } # ac_fn_c_try_link @@ -1770,7 +1775,7 @@ ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval + as_fn_set_status $ac_retval } # ac_fn_c_try_cpp @@ -1899,7 +1904,7 @@ fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval + as_fn_set_status $ac_retval } # ac_fn_c_try_run @@ -2044,7 +2049,7 @@ running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was -generated by GNU Autoconf 2.64. Invocation command line was +generated by GNU Autoconf 2.65. Invocation command line was $ $0 $@ @@ -2297,7 +2302,7 @@ for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue - if test -r "$ac_site_file"; then + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 @@ -2306,9 +2311,9 @@ done if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in @@ -2850,8 +2855,8 @@ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 - rm -f conftest.er1 conftest.err fi + rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -2868,12 +2873,12 @@ } _ACEOF ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out" +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: @@ -2935,10 +2940,10 @@ else ac_file='' fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } if test -z "$ac_file"; then : - $as_echo "$as_me: failed program was:" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 @@ -2946,51 +2951,18 @@ { as_fn_set_status 77 as_fn_error "C compiler cannot create executables See \`config.log' for more details." "$LINENO" 5; }; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" @@ -3023,13 +2995,72 @@ as_fn_error "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." "$LINENO" 5; } fi -rm -f conftest$ac_cv_exeext +rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then : @@ -3666,6 +3697,7 @@ fi + test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else @@ -3673,7 +3705,6 @@ # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. - test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi @@ -4342,8 +4373,8 @@ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 - rm -f conftest.er1 conftest.err fi + rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -5699,13 +5730,13 @@ else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:5702: $ac_compile\"" >&5) + (eval echo "\"\$as_me:5733: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:5705: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:5736: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:5708: output\"" >&5) + (eval echo "\"\$as_me:5739: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -6910,7 +6941,7 @@ ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 6913 "configure"' > conftest.$ac_ext + echo '#line 6944 "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -8172,11 +8203,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8175: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8206: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8179: \$? = $ac_status" >&5 + echo "$as_me:8210: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -8511,11 +8542,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8514: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8545: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8518: \$? = $ac_status" >&5 + echo "$as_me:8549: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -8616,11 +8647,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8619: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8650: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:8623: \$? = $ac_status" >&5 + echo "$as_me:8654: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -8671,11 +8702,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8674: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8705: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:8678: \$? = $ac_status" >&5 + echo "$as_me:8709: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -11053,7 +11084,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11056 "configure" +#line 11087 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11149,7 +11180,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11152 "configure" +#line 11183 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11404,6 +11435,19 @@ fi +# Check whether --enable-fix-loongson2f-nop was given. +if test "${enable_fix_loongson2f_nop+set}" = set; then : + enableval=$enable_fix_loongson2f_nop; ENABLE_FIX_LOONGSON2F_NOP=$enableval +else + ENABLE_FIX_LOONGSON2F_NOP=no +fi + +if test "${ENABLE_FIX_LOONGSON2F_NOP}" != "no" ; then + +$as_echo "#define MIPS_DEFAULT_FIX_LOONGSON2F_NOP 1" >>confdefs.h + +fi + using_cgen=no @@ -14451,7 +14495,7 @@ # values after options handling. ac_log=" This file was extended by $as_me, which was -generated by GNU Autoconf 2.64. Invocation command line was +generated by GNU Autoconf 2.65. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -14491,6 +14535,7 @@ -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit + --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files @@ -14513,10 +14558,11 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ config.status -configured by $0, generated by GNU Autoconf 2.64, - with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" +configured by $0, generated by GNU Autoconf 2.65, + with options \\"\$ac_cs_config\\" Copyright (C) 2009 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation @@ -14554,6 +14600,8 @@ ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) @@ -15014,7 +15062,7 @@ t delim :nl h -s/\(.\{148\}\).*/\1/ +s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p @@ -15028,7 +15076,7 @@ t nl :delim h -s/\(.\{148\}\).*/\1/ +s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p diff -ruN binutils-2.20-debian-orig/gas/configure.in binutils-2.20/gas/configure.in --- binutils-2.20-debian-orig/gas/configure.in 2009-09-07 05:16:07.000000000 -0400 +++ binutils-2.20/gas/configure.in 2010-04-06 21:10:39.000000000 -0400 @@ -51,6 +51,15 @@ AC_DEFINE(ENABLE_CHECKING, 1, [Define if you want run-time sanity checks.]) fi +AC_ARG_ENABLE(fix-loongson2f-nop, +[ --enable-fix-loongson2f-nop work around loongson2f NOP bug by default on MIPS targets], +ENABLE_FIX_LOONGSON2F_NOP=$enableval, +ENABLE_FIX_LOONGSON2F_NOP=no) +if test "${ENABLE_FIX_LOONGSON2F_NOP}" != "no" ; then + AC_DEFINE(MIPS_DEFAULT_FIX_LOONGSON2F_NOP, 1, + [Define to work around loongson2f NOP bug by default on MIPS targets. ]) +fi + using_cgen=no AM_BINUTILS_WARNINGS diff -ruN binutils-2.20-debian-orig/gas/doc/as.info binutils-2.20/gas/doc/as.info --- binutils-2.20-debian-orig/gas/doc/as.info 2009-10-16 07:52:13.000000000 -0400 +++ binutils-2.20/gas/doc/as.info 2010-04-06 21:21:55.000000000 -0400 @@ -1,5 +1,6 @@ -This is as.info, produced by makeinfo version 4.8 from as.texinfo. +This is as.info, produced by makeinfo version 4.13 from as.texinfo. +INFO-DIR-SECTION Software development START-INFO-DIR-ENTRY * As: (as). The GNU assembler. * Gas: (as). The GNU assembler. @@ -53,7 +54,7 @@ 1 Overview ********** -Here is a brief summary of how to invoke `as'. For details, see *Note +Here is a brief summary of how to invoke `as'. For details, see *note Command-Line Options: Invoking. as [-a[cdghlns][=FILE]] [-alternate] [-D] @@ -568,7 +569,7 @@ For details about the PDP-11 machine dependent features options, see -*Note PDP-11-Options::. +*note PDP-11-Options::. `-mpic | -mno-pic' Generate position-independent (or position-dependent) code. The @@ -1106,7 +1107,7 @@ directives; they bear no relation to physical files. Logical file names help error messages reflect the original source file, when `as' source is itself synthesized from other files. `as' understands the -`#' directives emitted by the `gcc' preprocessor. See also *Note +`#' directives emitted by the `gcc' preprocessor. See also *note `.file': File.  @@ -1166,7 +1167,7 @@ ********************** This chapter describes command-line options available in _all_ versions -of the GNU assembler; see *Note Machine Dependencies::, for options +of the GNU assembler; see *note Machine Dependencies::, for options specific to particular machine architectures. If you are invoking `as' via the GNU C compiler, you can use the @@ -1256,7 +1257,7 @@ 2.2 `--alternate' ================= -Begin in alternate macro mode, see *Note `.altmacro': Altmacro. +Begin in alternate macro mode, see *note `.altmacro': Altmacro.  File: as.info, Node: D, Next: f, Prev: alternate, Up: Invoking @@ -1653,8 +1654,7 @@ include file processing with the `.include' directive (*note `.include': Include.). You can use the GNU C compiler driver to get other "CPP" style preprocessing by giving the input file a `.S' suffix. -*Note Options Controlling the Kind of Output: (gcc.info)Overall -Options. +*Note Options Controlling the Kind of Output: (gcc.info)Overall Options. Excess whitespace, comments, and character constants cannot be used in the portions of the input text that are not preprocessed. @@ -1706,7 +1706,7 @@ Sunplus SCORE; `!' for the Renesas / SuperH SH; `!' on the SPARC; `#' on the ip2k; `#' on the m32c; `#' on the m32r; `|' on the 680x0; `#' on the 68HC11 and 68HC12; `#' on the Vax; `;' for the Z80; `!' for the -Z8000; `#' on the V850; `#' for Xtensa systems; see *Note Machine +Z8000; `#' on the V850; `#' for Xtensa systems; see *note Machine Dependencies::. On some machines there are two different line comment characters. @@ -1743,7 +1743,7 @@ A "symbol" is one or more characters chosen from the set of all letters (both upper and lower case), digits and the three characters `_.$'. On most machines, you can also use `$' in symbol names; exceptions are -noted in *Note Machine Dependencies::. No symbol may begin with a +noted in *note Machine Dependencies::. No symbol may begin with a digit. Case is significant. There is no length limit: all characters are significant. Symbols are delimited by characters not in that set, or by the beginning of a file (since the source program must end with a @@ -1758,7 +1758,7 @@ A "statement" ends at a newline character (`\n') or line separator character. (The line separator is usually `;', unless this conflicts -with the comment character; see *Note Machine Dependencies::.) The +with the comment character; see *note Machine Dependencies::.) The newline or separator character is considered part of the preceding statement. Newlines and separators within character constants are an exception: they do not end statements. @@ -2287,14 +2287,14 @@ running, all the contents of the bss section are zeroed bytes. The `.lcomm' pseudo-op defines a symbol in the bss section; see -*Note `.lcomm': Lcomm. +*note `.lcomm': Lcomm. The `.comm' pseudo-op may be used to declare a common symbol, which -is another form of uninitialized symbol; see *Note `.comm': Comm. +is another form of uninitialized symbol; see *note `.comm': Comm. When assembling for a target which supports multiple sections, such as ELF or COFF, you may switch into the `.bss' section and define -symbols as usual; see *Note `.section': Section. You may only assemble +symbols as usual; see *note `.section': Section. You may only assemble zero values into the section. Typically the section will only contain symbol definitions and `.skip' directives (*note `.skip': Skip.). @@ -2359,7 +2359,7 @@ Symbol names begin with a letter or with one of `._'. On most machines, you can also use `$' in symbol names; exceptions are noted in -*Note Machine Dependencies::. That character may be followed by any +*note Machine Dependencies::. That character may be followed by any string of digits, letters, dollar signs (unless otherwise noted for a particular target machine), and underscores. @@ -3401,7 +3401,7 @@ 7.37 `.else' ============ -`.else' is part of the `as' support for conditional assembly; see *Note +`.else' is part of the `as' support for conditional assembly; see *note `.if': If. It marks the beginning of a section of code to be assembled if the condition for the preceding `.if' was false. @@ -3412,7 +3412,7 @@ ============== `.elseif' is part of the `as' support for conditional assembly; see -*Note `.if': If. It is shorthand for beginning a new `.if' block that +*note `.if': If. It is shorthand for beginning a new `.if' block that would otherwise fill the entire `.else' section.  @@ -3457,13 +3457,13 @@ ============================== This directive sets the value of SYMBOL to EXPRESSION. It is -synonymous with `.set'; see *Note `.set': Set. +synonymous with `.set'; see *note `.set': Set. The syntax for `equ' on the HPPA is `SYMBOL .equ EXPRESSION'. The syntax for `equ' on the Z80 is `SYMBOL equ EXPRESSION'. On the Z80 it is an eror if SYMBOL is already defined, but the symbol is not -protected from later redefinition. Compare *Note Equiv::. +protected from later redefinition. Compare *note Equiv::.  File: as.info, Node: Equiv, Next: Eqv, Prev: Equ, Up: Pseudo Ops @@ -3871,7 +3871,7 @@ move d2,address@hidden move d3,address@hidden - For some caveats with the spelling of SYMBOL, see also *Note Macro::. + For some caveats with the spelling of SYMBOL, see also *note Macro::.  File: as.info, Node: Irpc, Next: Lcomm, Prev: Irp, Up: Pseudo Ops @@ -4914,7 +4914,7 @@ than one string to copy, separated by commas. Unless otherwise specified for a particular machine, the assembler marks the end of each string with a 0 byte. You can use any of the escape sequences -described in *Note Strings: Strings. +described in *note Strings: Strings. The variants `string16', `string32' and `string64' differ from the `string' pseudo opcode in that each 8-bit character from STR is copied @@ -5304,9 +5304,9 @@ attributes. Each attribute has a "vendor", "tag", and "value". The vendor is a string, and indicates who sets the meaning of the tag. The tag is an integer, and indicates what property the attribute describes. -The value may be a string or an integer, and indicates how the -property affects this object. Missing attributes are the same as -attributes with a zero value or empty string value. +The value may be a string or an integer, and indicates how the property +affects this object. Missing attributes are the same as attributes +with a zero value or empty string value. Object attributes were developed as part of the ABI for the ARM Architecture. The file format is documented in `ELF for the ARM @@ -5591,8 +5591,8 @@ `-g' This option is used when the compiler generates debug information. - When `gcc' is using `mips-tfile' to generate debug information - for ECOFF, local labels must be passed through to the object file. + When `gcc' is using `mips-tfile' to generate debug information for + ECOFF, local labels must be passed through to the object file. Otherwise this option has no effect. `-GSIZE' @@ -6752,7 +6752,7 @@ `.syntax [`unified' | `divided']' This directive sets the Instruction Set Syntax as described in the - *Note ARM-Instruction-Set:: section. + *note ARM-Instruction-Set:: section. `.thumb' This performs the same action as .CODE 16. @@ -6916,7 +6916,6 @@ To illustrate the use of these pseudo ops, we will examine the code that G++ generates for the following C++ input: - void callee (int *); int @@ -6935,7 +6934,6 @@ The code generated by one particular version of G++ when compiling the example above is: - _Z6callerv: .fnstart .LFB2: @@ -9627,7 +9625,7 @@ `source, dest' convention is maintained for compatibility with previous Unix assemblers. Note that `bound', `invlpga', and instructions with 2 immediate operands, such as the `enter' - instruction, do _not_ have reversed order. *Note i386-Bugs::. + instruction, do _not_ have reversed order. *note i386-Bugs::. * In AT&T syntax the size of memory operands is determined from the last character of the instruction mnemonic. Mnemonic suffixes of @@ -12329,7 +12327,7 @@ `-mips32', `-mips32r2', `-mips64', and `-mips64r2' correspond to generic MIPS V, MIPS32, MIPS32 RELEASE 2, MIPS64, and MIPS64 RELEASE 2 ISA processors, respectively. You can also switch - instruction sets during the assembly; see *Note Directives to + instruction sets during the assembly; see *note Directives to override the ISA level: MIPS ISA. `-mgp32' @@ -12409,6 +12407,20 @@ of an mfhi or mflo instruction occurs in the following two instructions. +`-mfix-loongson2f-jump' +`-mno-fix-loongson2f-jump' + Eliminate instruction fetch from outside 256M region to work + around the Loongson2F `jump' instructions. Without it, under + extreme cases, the kernel may crash. The issue has been solved in + latest processor batches, but this fix has no side effect to them. + +`-mfix-loongson2f-nop' +`-mno-fix-loongson2f-nop' + Replace nops by `or at,at,zero' to work around the Loongson2F + `nop' errata. Without it, under extreme cases, cpu might + deadlock. The issue has been solved in latest loongson2f batches, + but this fix has no side effect to them. + `-mfix-vr4120' `-no-mfix-vr4120' Insert nops to work around certain VR4120 errata. This option is @@ -12811,7 +12823,7 @@ The MMIX version of `as' has some machine-dependent options. When `--fixed-special-register-names' is specified, only the register -names specified in *Note MMIX-Regs:: are recognized in the instructions +names specified in *note MMIX-Regs:: are recognized in the instructions `PUT' and `GET'. You can use the `--globalize-symbols' to make all symbols global. @@ -14120,7 +14132,7 @@ All instructions documented in the Principles of Operation are supported with the mnemonic and order of operands as described. The instruction -mnemonic identifies the instruction format (*Note s390 Formats::) and +mnemonic identifies the instruction format (*note s390 Formats::) and the specific operation code for the instruction. For example, the `lr' mnemonic denotes the instruction format `RR' with the operation code `0x18'. @@ -14279,175 +14291,150 @@ available with the `.insn' pseudo directive: `E format' - +-------------+ | OpCode | +-------------+ 0 15 `RI format: R1,I2' - +--------+----+----+------------------+ | OpCode | R1 |OpCd| I2 | +--------+----+----+------------------+ 0 8 12 16 31 `RIE format: R1,R3,I2' - +--------+----+----+------------------+--------+--------+ | OpCode | R1 | R3 | I2 |////////| OpCode | +--------+----+----+------------------+--------+--------+ 0 8 12 16 32 40 47 `RIL format: R1,I2' - +--------+----+----+------------------------------------+ | OpCode | R1 |OpCd| I2 | +--------+----+----+------------------------------------+ 0 8 12 16 47 `RILU format: R1,U2' - +--------+----+----+------------------------------------+ | OpCode | R1 |OpCd| U2 | +--------+----+----+------------------------------------+ 0 8 12 16 47 `RIS format: R1,I2,M3,D4(B4)' - +--------+----+----+----+-------------+--------+--------+ | OpCode | R1 | M3 | B4 | D4 | I2 | Opcode | +--------+----+----+----+-------------+--------+--------+ 0 8 12 16 20 32 36 47 `RR format: R1,R2' - +--------+----+----+ | OpCode | R1 | R2 | +--------+----+----+ 0 8 12 15 `RRE format: R1,R2' - +------------------+--------+----+----+ | OpCode |////////| R1 | R2 | +------------------+--------+----+----+ 0 16 24 28 31 `RRF format: R1,R2,R3,M4' - +------------------+----+----+----+----+ | OpCode | R3 | M4 | R1 | R2 | +------------------+----+----+----+----+ 0 16 20 24 28 31 `RRS format: R1,R2,M3,D4(B4)' - +--------+----+----+----+-------------+----+----+--------+ | OpCode | R1 | R3 | B4 | D4 | M3 |////| OpCode | +--------+----+----+----+-------------+----+----+--------+ 0 8 12 16 20 32 36 40 47 `RS format: R1,R3,D2(B2)' - +--------+----+----+----+-------------+ | OpCode | R1 | R3 | B2 | D2 | +--------+----+----+----+-------------+ 0 8 12 16 20 31 `RSE format: R1,R3,D2(B2)' - +--------+----+----+----+-------------+--------+--------+ | OpCode | R1 | R3 | B2 | D2 |////////| OpCode | +--------+----+----+----+-------------+--------+--------+ 0 8 12 16 20 32 40 47 `RSI format: R1,R3,I2' - +--------+----+----+------------------------------------+ | OpCode | R1 | R3 | I2 | +--------+----+----+------------------------------------+ 0 8 12 16 47 `RSY format: R1,R3,D2(B2)' - +--------+----+----+----+-------------+--------+--------+ | OpCode | R1 | R3 | B2 | DL2 | DH2 | OpCode | +--------+----+----+----+-------------+--------+--------+ 0 8 12 16 20 32 40 47 `RX format: R1,D2(X2,B2)' - +--------+----+----+----+-------------+ | OpCode | R1 | X2 | B2 | D2 | +--------+----+----+----+-------------+ 0 8 12 16 20 31 `RXE format: R1,D2(X2,B2)' - +--------+----+----+----+-------------+--------+--------+ | OpCode | R1 | X2 | B2 | D2 |////////| OpCode | +--------+----+----+----+-------------+--------+--------+ 0 8 12 16 20 32 40 47 `RXF format: R1,R3,D2(X2,B2)' - +--------+----+----+----+-------------+----+---+--------+ | OpCode | R3 | X2 | B2 | D2 | R1 |///| OpCode | +--------+----+----+----+-------------+----+---+--------+ 0 8 12 16 20 32 36 40 47 `RXY format: R1,D2(X2,B2)' - +--------+----+----+----+-------------+--------+--------+ | OpCode | R1 | X2 | B2 | DL2 | DH2 | OpCode | +--------+----+----+----+-------------+--------+--------+ 0 8 12 16 20 32 36 40 47 `S format: D2(B2)' - +------------------+----+-------------+ | OpCode | B2 | D2 | +------------------+----+-------------+ 0 16 20 31 `SI format: D1(B1),I2' - +--------+---------+----+-------------+ | OpCode | I2 | B1 | D1 | +--------+---------+----+-------------+ 0 8 16 20 31 `SIY format: D1(B1),U2' - +--------+---------+----+-------------+--------+--------+ | OpCode | I2 | B1 | DL1 | DH1 | OpCode | +--------+---------+----+-------------+--------+--------+ 0 8 16 20 32 36 40 47 `SIL format: D1(B1),I2' - +------------------+----+-------------+-----------------+ | OpCode | B1 | D1 | I2 | +------------------+----+-------------+-----------------+ 0 16 20 32 47 `SS format: D1(R1,B1),D2(B3),R3' - +--------+----+----+----+-------------+----+------------+ | OpCode | R1 | R3 | B1 | D1 | B2 | D2 | +--------+----+----+----+-------------+----+------------+ 0 8 12 16 20 32 36 47 `SSE format: D1(B1),D2(B2)' - +------------------+----+-------------+----+------------+ | OpCode | B1 | D1 | B2 | D2 | +------------------+----+-------------+----+------------+ 0 8 12 16 20 32 36 47 `SSF format: D1(B1),D2(B2),R3' - +--------+----+----+----+-------------+----+------------+ | OpCode | R3 |OpCd| B1 | D1 | B2 | D2 | +--------+----+----+----+-------------+----+------------+ @@ -14670,7 +14657,7 @@ A literal pool is a collection of values. To access the values a pointer to the literal pool is loaded to a register, the literal pool register. -Usually, register %r13 is used as the literal pool register (*Note s390 +Usually, register %r13 is used as the literal pool register (*note s390 Register::). Literal pool entries are created by adding the suffix :lit1, :lit2, :lit4, or :lit8 to the end of an expression for an instruction operand. The expression is added to the literal pool and the @@ -14719,7 +14706,7 @@ `.insn' This directive permits the numeric representation of an instructions and makes the assembler insert the operands according - to one of the instructions formats for `.insn' (*Note s390 + to one of the instructions formats for `.insn' (*note s390 Formats::). For example, the instruction `l %r1,24(%r15)' could be written as `.insn rx,0x58000000,%r1,24(%r15)'. @@ -14795,7 +14782,7 @@ `.ltorg' This directive causes the current contents of the literal pool to - be dumped to the current location (*Note s390 Literal Pool + be dumped to the current location (*note s390 Literal Pool Entries::).  @@ -18757,13 +18744,12 @@ Often people omit facts because they think they know what causes the problem and assume that some details do not matter. Thus, you might assume that the name of a symbol you use in an example does not matter. -Well, probably it does not, but one cannot be sure. Perhaps the bug -is a stray memory reference which happens to fetch from the location -where that name is stored in memory; perhaps, if the name were -different, the contents of that location would fool the assembler into -doing the right thing despite the bug. Play it safe and give a -specific, complete example. That is the easiest thing for you to do, -and the most helpful. +Well, probably it does not, but one cannot be sure. Perhaps the bug is +a stray memory reference which happens to fetch from the location where +that name is stored in memory; perhaps, if the name were different, the +contents of that location would fool the assembler into doing the right +thing despite the bug. Play it safe and give a specific, complete +example. That is the easiest thing for you to do, and the most helpful. Keep in mind that the purpose of a bug report is to enable us to fix the bug if it is new to us. Therefore, always write your bug reports @@ -19487,12 +19473,12 @@ * Menu: * #: Comments. (line 39) -* #APP: Preprocessing. (line 27) -* #NO_APP: Preprocessing. (line 27) -* $ in symbol names <1>: D30V-Chars. (line 63) -* $ in symbol names <2>: SH64-Chars. (line 10) -* $ in symbol names <3>: D10V-Chars. (line 46) -* $ in symbol names: SH-Chars. (line 10) +* #APP: Preprocessing. (line 26) +* #NO_APP: Preprocessing. (line 26) +* $ in symbol names <1>: SH64-Chars. (line 10) +* $ in symbol names <2>: SH-Chars. (line 10) +* $ in symbol names <3>: D30V-Chars. (line 63) +* $ in symbol names: D10V-Chars. (line 46) * $a: ARM Mapping Symbols. (line 9) * $acos math builtin, TIC54X: TIC54X-Builtins. (line 10) * $asin math builtin, TIC54X: TIC54X-Builtins. (line 13) @@ -19789,7 +19775,7 @@ * -mno-regnames option, s390: s390 Options. (line 35) * -mno-skip-bug command line option, AVR: AVR Options. (line 65) * -mno-spl: PDP-11-Options. (line 80) -* -mno-sym32: MIPS Opts. (line 189) +* -mno-sym32: MIPS Opts. (line 203) * -mno-wrap command line option, AVR: AVR Options. (line 68) * -mpic: PDP-11-Options. (line 11) * -mregnames option, s390: s390 Options. (line 32) @@ -19803,7 +19789,7 @@ * -msse-check= option, x86-64: i386-Options. (line 68) * -msse2avx option, i386: i386-Options. (line 64) * -msse2avx option, x86-64: i386-Options. (line 64) -* -msym32: MIPS Opts. (line 189) +* -msym32: MIPS Opts. (line 203) * -msyntax= option, i386: i386-Options. (line 87) * -msyntax= option, x86-64: i386-Options. (line 87) * -mt11: PDP-11-Options. (line 130) @@ -19830,7 +19816,7 @@ * -no-warn-explicit-parallel-conflicts option, M32RX: M32R-Opts. (line 79) * -no-warn-unmatched-high option, M32R: M32R-Opts. (line 111) -* -nocpp ignored (MIPS): MIPS Opts. (line 192) +* -nocpp ignored (MIPS): MIPS Opts. (line 206) * -noreplace command line option, Alpha: Alpha Options. (line 40) * -o: o. (line 6) * -O option, M32RX: M32R-Opts. (line 59) @@ -19978,8 +19964,8 @@ * a.out symbol attributes: a.out Symbols. (line 6) * A_DIR environment variable, TIC54X: TIC54X-Env. (line 6) * ABI options, SH64: SH64 Options. (line 29) -* abort directive: Abort. (line 6) * ABORT directive: ABORT (COFF). (line 6) +* abort directive: Abort. (line 6) * absolute section: Ld Sections. (line 29) * absolute-literals directive: Absolute Literals Directive. (line 6) @@ -20095,8 +20081,8 @@ * assembler version: v. (line 6) * assembler, and linker: Secs Background. (line 10) * assembly listings, enabling: a. (line 6) -* assigning values to symbols <1>: Setting Symbols. (line 6) -* assigning values to symbols: Equ. (line 6) +* assigning values to symbols <1>: Equ. (line 6) +* assigning values to symbols: Setting Symbols. (line 6) * atmp directive, i860: Directives-i860. (line 16) * att_syntax pseudo op, i386: i386-Syntax. (line 6) * att_syntax pseudo op, x86-64: i386-Syntax. (line 6) @@ -20420,8 +20406,8 @@ * files, including: Include. (line 6) * files, input: Input Files. (line 6) * fill directive: Fill. (line 6) -* filling memory <1>: Skip. (line 6) -* filling memory: Space. (line 6) +* filling memory <1>: Space. (line 6) +* filling memory: Skip. (line 6) * FLIX syntax: Xtensa Syntax. (line 6) * float directive: Float. (line 6) * float directive, i386: i386-Float. (line 14) @@ -20432,8 +20418,8 @@ * float directive, x86-64: i386-Float. (line 14) * floating point numbers: Flonums. (line 6) * floating point numbers (double): Double. (line 6) -* floating point numbers (single) <1>: Float. (line 6) -* floating point numbers (single): Single. (line 6) +* floating point numbers (single) <1>: Single. (line 6) +* floating point numbers (single): Float. (line 6) * floating point, Alpha (IEEE): Alpha Floating Point. (line 6) * floating point, ARC (IEEE): ARC Floating Point. (line 6) @@ -20631,7 +20617,7 @@ * internal directive: Internal. (line 6) * invalid input: Bug Criteria. (line 14) * invocation summary: Overview. (line 6) -* IP2K architecture options: IP2K-Opts. (line 14) +* IP2K architecture options: IP2K-Opts. (line 9) * IP2K options: IP2K-Opts. (line 6) * IP2K support: IP2K-Dependent. (line 6) * irp directive: Irp. (line 6) @@ -21068,7 +21054,7 @@ * prefix operators: Prefix Ops. (line 6) * prefixes, i386: i386-Prefixes. (line 6) * preprocessing: Preprocessing. (line 6) -* preprocessing, turning on and off: Preprocessing. (line 27) +* preprocessing, turning on and off: Preprocessing. (line 26) * previous directive: Previous. (line 6) * primary attributes, COFF symbols: COFF Symbols. (line 13) * print directive: Print. (line 6) @@ -21200,11 +21186,11 @@ * section directive (ELF version): Section. (line 70) * section directive, V850: V850 Directives. (line 9) * section override prefixes, i386: i386-Prefixes. (line 23) -* Section Stack <1>: Section. (line 65) -* Section Stack <2>: SubSection. (line 6) -* Section Stack <3>: PopSection. (line 6) -* Section Stack <4>: PushSection. (line 6) -* Section Stack: Previous. (line 6) +* Section Stack <1>: SubSection. (line 6) +* Section Stack <2>: Section. (line 65) +* Section Stack <3>: PushSection. (line 6) +* Section Stack <4>: Previous. (line 6) +* Section Stack: PopSection. (line 6) * section-relative addressing: Secs Background. (line 68) * sections: Sections. (line 6) * sections in messages, internal: As Sections. (line 6) @@ -21348,13 +21334,13 @@ * symbol attributes, COFF: COFF Symbols. (line 6) * symbol attributes, SOM: SOM Symbols. (line 6) * symbol descriptor, COFF: Desc. (line 6) -* symbol modifiers <1>: AVR-Modifiers. (line 12) -* symbol modifiers <2>: LM32-Modifiers. (line 12) -* symbol modifiers <3>: M32C-Modifiers. (line 11) -* symbol modifiers: M68HC11-Modifiers. (line 12) +* symbol modifiers <1>: M68HC11-Modifiers. (line 12) +* symbol modifiers <2>: M32C-Modifiers. (line 11) +* symbol modifiers <3>: LM32-Modifiers. (line 12) +* symbol modifiers: AVR-Modifiers. (line 12) * symbol names: Symbol Names. (line 6) -* symbol names, $ in <1>: SH-Chars. (line 10) -* symbol names, $ in <2>: SH64-Chars. (line 10) +* symbol names, $ in <1>: SH64-Chars. (line 10) +* symbol names, $ in <2>: SH-Chars. (line 10) * symbol names, $ in <3>: D30V-Chars. (line 63) * symbol names, $ in: D10V-Chars. (line 46) * symbol names, local: Symbol Names. (line 22) @@ -21396,7 +21382,7 @@ * tab (\t): Strings. (line 27) * tab directive, TIC54X: TIC54X-Directives. (line 248) * tag directive: Tag. (line 6) -* tag directive, TIC54X: TIC54X-Directives. (line 251) +* tag directive, TIC54X: TIC54X-Directives. (line 217) * tdaoff pseudo-op, V850: V850 Opcodes. (line 81) * temporary symbol names: Symbol Names. (line 35) * text and data sections, joining: R. (line 6) @@ -21417,7 +21403,7 @@ * tp register, V850: V850-Regs. (line 20) * transform directive: Transform Directive. (line 6) * trusted compiler: f. (line 6) -* turning preprocessing on and off: Preprocessing. (line 27) +* turning preprocessing on and off: Preprocessing. (line 26) * type directive (COFF version): Type. (line 11) * type directive (ELF version): Type. (line 22) * type of a symbol: Symbol Type. (line 6) @@ -21465,8 +21451,8 @@ * version directive, TIC54X: TIC54X-Directives. (line 277) * version of assembler: v. (line 6) * versions of symbols: Symver. (line 6) -* visibility <1>: Internal. (line 6) -* visibility <2>: Protected. (line 6) +* visibility <1>: Protected. (line 6) +* visibility <2>: Internal. (line 6) * visibility: Hidden. (line 6) * VMS (VAX) options: VAX-Opts. (line 42) * vtable_entry directive: VTableEntry. (line 6) @@ -21551,523 +21537,523 @@  Tag Table: -Node: Top770 -Node: Overview1756 -Node: Manual30673 -Node: GNU Assembler31617 -Node: Object Formats32788 -Node: Command Line33240 -Node: Input Files34327 -Node: Object36308 -Node: Errors37204 -Node: Invoking38399 -Node: a40354 -Node: alternate42265 -Node: D42437 -Node: f42670 -Node: I43178 -Node: K43722 -Node: L44026 -Node: listing44765 -Node: M46424 -Node: MD50825 -Node: o51251 -Node: R51706 -Node: statistics52736 -Node: traditional-format53143 -Node: v53616 -Node: W53891 -Node: Z54798 -Node: Syntax55320 -Node: Preprocessing55911 -Node: Whitespace57474 -Node: Comments57870 -Node: Symbol Intro60069 -Node: Statements60759 -Node: Constants62680 -Node: Characters63311 -Node: Strings63813 -Node: Chars65979 -Node: Numbers66733 -Node: Integers67273 -Node: Bignums67929 -Node: Flonums68285 -Node: Sections70032 -Node: Secs Background70410 -Node: Ld Sections75449 -Node: As Sections77833 -Node: Sub-Sections78743 -Node: bss81888 -Node: Symbols82838 -Node: Labels83486 -Node: Setting Symbols84217 -Node: Symbol Names84771 -Node: Dot89812 -Node: Symbol Attributes90259 -Node: Symbol Value90996 -Node: Symbol Type92041 -Node: a.out Symbols92429 -Node: Symbol Desc92691 -Node: Symbol Other92986 -Node: COFF Symbols93155 -Node: SOM Symbols93828 -Node: Expressions94270 -Node: Empty Exprs95019 -Node: Integer Exprs95366 -Node: Arguments95761 -Node: Operators96867 -Node: Prefix Ops97202 -Node: Infix Ops97530 -Node: Pseudo Ops99920 -Node: Abort105421 -Node: ABORT (COFF)105833 -Node: Align106041 -Node: Altmacro108323 -Node: Ascii109652 -Node: Asciz109961 -Node: Balign110206 -Node: Byte112069 -Node: CFI directives112317 -Node: Comm117944 -Ref: Comm-Footnote-1119545 -Node: Data119907 -Node: Def120224 -Node: Desc120456 -Node: Dim120956 -Node: Double121213 -Node: Eject121551 -Node: Else121726 -Node: Elseif122026 -Node: End122320 -Node: Endef122535 -Node: Endfunc122712 -Node: Endif122887 -Node: Equ123148 -Node: Equiv123662 -Node: Eqv124218 -Node: Err124582 -Node: Error124893 -Node: Exitm125338 -Node: Extern125507 -Node: Fail125768 -Node: File126213 -Node: Fill127542 -Node: Float128506 -Node: Func128848 -Node: Global129438 -Node: Gnu_attribute130195 -Node: Hidden130420 -Node: hword131006 -Node: Ident131334 -Node: If131908 -Node: Incbin134967 -Node: Include135662 -Node: Int136213 -Node: Internal136594 -Node: Irp137242 -Node: Irpc138121 -Node: Lcomm139038 -Node: Lflags139786 -Node: Line139980 -Node: Linkonce140893 -Node: List142122 -Node: Ln142730 -Node: Loc142880 -Node: Loc_mark_labels144266 -Node: Local144750 -Node: Long145362 -Node: Macro145540 -Node: MRI151462 -Node: Noaltmacro151800 -Node: Nolist151969 -Node: Octa152399 -Node: Org152733 -Node: P2align154016 -Node: PopSection155944 -Node: Previous156452 -Node: Print157865 -Node: Protected158094 -Node: Psize158741 -Node: Purgem159425 -Node: PushSection159646 -Node: Quad160389 -Node: Reloc160845 -Node: Rept161606 -Node: Sbttl162020 -Node: Scl162385 -Node: Section162726 -Node: Set168163 -Node: Short168800 -Node: Single169121 -Node: Size169466 -Node: Skip170140 -Node: Sleb128170464 -Node: Space170788 -Node: Stab171429 -Node: String173433 -Node: Struct174427 -Node: SubSection175152 -Node: Symver175715 -Node: Tag178108 -Node: Text178490 -Node: Title178811 -Node: Type179192 -Node: Uleb128181486 -Node: Val181810 -Node: Version182060 -Node: VTableEntry182335 -Node: VTableInherit182625 -Node: Warning183075 -Node: Weak183309 -Node: Weakref183978 -Node: Word184943 -Node: Deprecated186789 -Node: Object Attributes187024 -Node: GNU Object Attributes188744 -Node: Defining New Object Attributes191297 -Node: Machine Dependencies192094 -Node: Alpha-Dependent195219 -Node: Alpha Notes195633 -Node: Alpha Options195914 -Node: Alpha Syntax198390 -Node: Alpha-Chars198859 -Node: Alpha-Regs199090 -Node: Alpha-Relocs199477 -Node: Alpha Floating Point205735 -Node: Alpha Directives205957 -Node: Alpha Opcodes211480 -Node: ARC-Dependent211775 -Node: ARC Options212158 -Node: ARC Syntax213227 -Node: ARC-Chars213459 -Node: ARC-Regs213591 -Node: ARC Floating Point213715 -Node: ARC Directives214026 -Node: ARC Opcodes219998 -Node: ARM-Dependent220224 -Node: ARM Options220689 -Node: ARM Syntax227822 -Node: ARM-Instruction-Set228136 -Node: ARM-Chars229368 -Node: ARM-Regs229920 -Node: ARM Floating Point230129 -Node: ARM-Relocations230328 -Node: ARM Directives231281 -Ref: arm_pad232145 -Ref: arm_fnend235217 -Ref: arm_fnstart235541 -Ref: arm_save238553 -Ref: arm_setfp239254 -Node: ARM Opcodes242335 -Node: ARM Mapping Symbols244423 -Node: ARM Unwinding Tutorial245233 -Node: AVR-Dependent251435 -Node: AVR Options251725 -Node: AVR Syntax254929 -Node: AVR-Chars255216 -Node: AVR-Regs255622 -Node: AVR-Modifiers256201 -Node: AVR Opcodes258261 -Node: Blackfin-Dependent263507 -Node: Blackfin Options263819 -Node: Blackfin Syntax264677 -Node: Blackfin Directives270410 -Node: CR16-Dependent270829 -Node: CR16 Operand Qualifiers271077 -Node: CRIS-Dependent273718 -Node: CRIS-Opts274064 -Ref: march-option275682 -Node: CRIS-Expand277499 -Node: CRIS-Symbols278682 -Node: CRIS-Syntax279851 -Node: CRIS-Chars280187 -Node: CRIS-Pic280738 -Ref: crispic280934 -Node: CRIS-Regs284474 -Node: CRIS-Pseudos284891 -Ref: crisnous285667 -Node: D10V-Dependent286949 -Node: D10V-Opts287300 -Node: D10V-Syntax288263 -Node: D10V-Size288792 -Node: D10V-Subs289765 -Node: D10V-Chars290800 -Node: D10V-Regs292404 -Node: D10V-Addressing293449 -Node: D10V-Word294135 -Node: D10V-Float294650 -Node: D10V-Opcodes294961 -Node: D30V-Dependent295354 -Node: D30V-Opts295707 -Node: D30V-Syntax296382 -Node: D30V-Size296914 -Node: D30V-Subs297885 -Node: D30V-Chars298920 -Node: D30V-Guarded301218 -Node: D30V-Regs301898 -Node: D30V-Addressing303037 -Node: D30V-Float303705 -Node: D30V-Opcodes304016 -Node: H8/300-Dependent304409 -Node: H8/300 Options304821 -Node: H8/300 Syntax305088 -Node: H8/300-Chars305389 -Node: H8/300-Regs305688 -Node: H8/300-Addressing306607 -Node: H8/300 Floating Point307648 -Node: H8/300 Directives307975 -Node: H8/300 Opcodes309103 -Node: HPPA-Dependent317425 -Node: HPPA Notes317860 -Node: HPPA Options318618 -Node: HPPA Syntax318813 -Node: HPPA Floating Point320083 -Node: HPPA Directives320289 -Node: HPPA Opcodes328975 -Node: ESA/390-Dependent329234 -Node: ESA/390 Notes329694 -Node: ESA/390 Options330485 -Node: ESA/390 Syntax330695 -Node: ESA/390 Floating Point332868 -Node: ESA/390 Directives333147 -Node: ESA/390 Opcodes336436 -Node: i386-Dependent336698 -Node: i386-Options337822 -Node: i386-Directives341789 -Node: i386-Syntax342527 -Node: i386-Mnemonics344960 -Node: i386-Regs348199 -Node: i386-Prefixes350244 -Node: i386-Memory353004 -Node: i386-Jumps355941 -Node: i386-Float357062 -Node: i386-SIMD358893 -Node: i386-16bit360004 -Node: i386-Bugs362044 -Node: i386-Arch362798 -Node: i386-Notes365355 -Node: i860-Dependent366213 -Node: Notes-i860366609 -Node: Options-i860367514 -Node: Directives-i860368877 -Node: Opcodes for i860369946 -Node: i960-Dependent372113 -Node: Options-i960372516 -Node: Floating Point-i960376401 -Node: Directives-i960376669 -Node: Opcodes for i960378703 -Node: callj-i960379320 -Node: Compare-and-branch-i960379809 -Node: IA-64-Dependent381713 -Node: IA-64 Options382014 -Node: IA-64 Syntax385174 -Node: IA-64-Chars385537 -Node: IA-64-Regs385767 -Node: IA-64-Bits386693 -Node: IA-64 Opcodes387202 -Node: IP2K-Dependent387474 -Node: IP2K-Opts387702 -Node: LM32-Dependent388182 -Node: LM32 Options388477 -Node: LM32 Syntax389111 -Node: LM32-Regs389358 -Node: LM32-Modifiers390317 -Node: LM32 Opcodes391673 -Node: M32C-Dependent391977 -Node: M32C-Opts392501 -Node: M32C-Modifiers392924 -Node: M32R-Dependent394711 -Node: M32R-Opts395032 -Node: M32R-Directives399199 -Node: M32R-Warnings403174 -Node: M68K-Dependent406180 -Node: M68K-Opts406647 -Node: M68K-Syntax414039 -Node: M68K-Moto-Syntax415879 -Node: M68K-Float418469 -Node: M68K-Directives418989 -Node: M68K-opcodes420317 -Node: M68K-Branch420543 -Node: M68K-Chars424741 -Node: M68HC11-Dependent425154 -Node: M68HC11-Opts425691 -Node: M68HC11-Syntax429512 -Node: M68HC11-Modifiers431726 -Node: M68HC11-Directives433554 -Node: M68HC11-Float434930 -Node: M68HC11-opcodes435458 -Node: M68HC11-Branch435640 -Node: MicroBlaze-Dependent438089 -Node: MicroBlaze Directives438719 -Node: MIPS-Dependent440076 -Node: MIPS Opts441239 -Node: MIPS Object450983 -Node: MIPS Stabs452549 -Node: MIPS symbol sizes453271 -Node: MIPS ISA454940 -Node: MIPS autoextend456414 -Node: MIPS insn457144 -Node: MIPS option stack458414 -Node: MIPS ASE instruction generation overrides459188 -Node: MIPS floating-point461002 -Node: MMIX-Dependent461888 -Node: MMIX-Opts462268 -Node: MMIX-Expand465872 -Node: MMIX-Syntax467187 -Ref: mmixsite467544 -Node: MMIX-Chars468385 -Node: MMIX-Symbols469039 -Node: MMIX-Regs471107 -Node: MMIX-Pseudos472132 -Ref: MMIX-loc472273 -Ref: MMIX-local473353 -Ref: MMIX-is473885 -Ref: MMIX-greg474156 -Ref: GREG-base475075 -Ref: MMIX-byte476392 -Ref: MMIX-constants476863 -Ref: MMIX-prefix477509 -Ref: MMIX-spec477883 -Node: MMIX-mmixal478217 -Node: MSP430-Dependent481715 -Node: MSP430 Options482181 -Node: MSP430 Syntax482467 -Node: MSP430-Macros482783 -Node: MSP430-Chars483514 -Node: MSP430-Regs483827 -Node: MSP430-Ext484387 -Node: MSP430 Floating Point486208 -Node: MSP430 Directives486432 -Node: MSP430 Opcodes487223 -Node: MSP430 Profiling Capability487618 -Node: PDP-11-Dependent489947 -Node: PDP-11-Options490336 -Node: PDP-11-Pseudos495407 -Node: PDP-11-Syntax495752 -Node: PDP-11-Mnemonics496504 -Node: PDP-11-Synthetic496806 -Node: PJ-Dependent497024 -Node: PJ Options497249 -Node: PPC-Dependent497526 -Node: PowerPC-Opts497813 -Node: PowerPC-Pseudo500365 -Node: S/390-Dependent500964 -Node: s390 Options501667 -Node: s390 Characters503205 -Node: s390 Syntax503398 -Node: s390 Register504299 -Node: s390 Mnemonics505112 -Node: s390 Operands508132 -Node: s390 Formats510751 -Node: s390 Aliases518622 -Node: s390 Operand Modifier522519 -Node: s390 Instruction Marker526320 -Node: s390 Literal Pool Entries527336 -Node: s390 Directives529259 -Node: s390 Floating Point533174 -Node: SCORE-Dependent533620 -Node: SCORE-Opts533894 -Node: SCORE-Pseudo535182 -Node: SH-Dependent537238 -Node: SH Options537650 -Node: SH Syntax538658 -Node: SH-Chars538931 -Node: SH-Regs539225 -Node: SH-Addressing539839 -Node: SH Floating Point540748 -Node: SH Directives541842 -Node: SH Opcodes542212 -Node: SH64-Dependent546534 -Node: SH64 Options546897 -Node: SH64 Syntax548694 -Node: SH64-Chars548977 -Node: SH64-Regs549277 -Node: SH64-Addressing550373 -Node: SH64 Directives551556 -Node: SH64 Opcodes552666 -Node: Sparc-Dependent553382 -Node: Sparc-Opts553794 -Node: Sparc-Aligned-Data556051 -Node: Sparc-Syntax556883 -Node: Sparc-Chars557457 -Node: Sparc-Regs557690 -Node: Sparc-Constants562801 -Node: Sparc-Relocs567561 -Node: Sparc-Size-Translations572241 -Node: Sparc-Float573890 -Node: Sparc-Directives574085 -Node: TIC54X-Dependent576045 -Node: TIC54X-Opts576771 -Node: TIC54X-Block577814 -Node: TIC54X-Env578174 -Node: TIC54X-Constants578522 -Node: TIC54X-Subsyms578924 -Node: TIC54X-Locals580833 -Node: TIC54X-Builtins581577 -Node: TIC54X-Ext584048 -Node: TIC54X-Directives584619 -Node: TIC54X-Macros595521 -Node: TIC54X-MMRegs597632 -Node: Z80-Dependent597848 -Node: Z80 Options598236 -Node: Z80 Syntax599659 -Node: Z80-Chars600331 -Node: Z80-Regs600865 -Node: Z80-Case601217 -Node: Z80 Floating Point601662 -Node: Z80 Directives601856 -Node: Z80 Opcodes603481 -Node: Z8000-Dependent604825 -Node: Z8000 Options605786 -Node: Z8000 Syntax606003 -Node: Z8000-Chars606293 -Node: Z8000-Regs606526 -Node: Z8000-Addressing607316 -Node: Z8000 Directives608433 -Node: Z8000 Opcodes610042 -Node: Vax-Dependent619984 -Node: VAX-Opts620501 -Node: VAX-float624236 -Node: VAX-directives624868 -Node: VAX-opcodes625729 -Node: VAX-branch626118 -Node: VAX-operands628625 -Node: VAX-no629388 -Node: V850-Dependent629625 -Node: V850 Options630023 -Node: V850 Syntax632412 -Node: V850-Chars632652 -Node: V850-Regs632817 -Node: V850 Floating Point634385 -Node: V850 Directives634591 -Node: V850 Opcodes635734 -Node: Xtensa-Dependent641626 -Node: Xtensa Options642355 -Node: Xtensa Syntax645165 -Node: Xtensa Opcodes647054 -Node: Xtensa Registers648848 -Node: Xtensa Optimizations649481 -Node: Density Instructions649933 -Node: Xtensa Automatic Alignment651035 -Node: Xtensa Relaxation653482 -Node: Xtensa Branch Relaxation654390 -Node: Xtensa Call Relaxation655762 -Node: Xtensa Immediate Relaxation657548 -Node: Xtensa Directives660122 -Node: Schedule Directive661831 -Node: Longcalls Directive662171 -Node: Transform Directive662715 -Node: Literal Directive663457 -Ref: Literal Directive-Footnote-1666996 -Node: Literal Position Directive667138 -Node: Literal Prefix Directive668837 -Node: Absolute Literals Directive669735 -Node: Reporting Bugs671042 -Node: Bug Criteria671768 -Node: Bug Reporting672535 -Node: Acknowledgements679184 -Ref: Acknowledgements-Footnote-1684150 -Node: GNU Free Documentation License684176 -Node: AS Index709345 +Node: Top826 +Node: Overview1812 +Node: Manual30729 +Node: GNU Assembler31673 +Node: Object Formats32844 +Node: Command Line33296 +Node: Input Files34383 +Node: Object36364 +Node: Errors37260 +Node: Invoking38455 +Node: a40410 +Node: alternate42321 +Node: D42493 +Node: f42726 +Node: I43234 +Node: K43778 +Node: L44082 +Node: listing44821 +Node: M46480 +Node: MD50881 +Node: o51307 +Node: R51762 +Node: statistics52792 +Node: traditional-format53199 +Node: v53672 +Node: W53947 +Node: Z54854 +Node: Syntax55376 +Node: Preprocessing55967 +Node: Whitespace57530 +Node: Comments57926 +Node: Symbol Intro60125 +Node: Statements60815 +Node: Constants62736 +Node: Characters63367 +Node: Strings63869 +Node: Chars66035 +Node: Numbers66789 +Node: Integers67329 +Node: Bignums67985 +Node: Flonums68341 +Node: Sections70088 +Node: Secs Background70466 +Node: Ld Sections75505 +Node: As Sections77889 +Node: Sub-Sections78799 +Node: bss81944 +Node: Symbols82894 +Node: Labels83542 +Node: Setting Symbols84273 +Node: Symbol Names84827 +Node: Dot89868 +Node: Symbol Attributes90315 +Node: Symbol Value91052 +Node: Symbol Type92097 +Node: a.out Symbols92485 +Node: Symbol Desc92747 +Node: Symbol Other93042 +Node: COFF Symbols93211 +Node: SOM Symbols93884 +Node: Expressions94326 +Node: Empty Exprs95075 +Node: Integer Exprs95422 +Node: Arguments95817 +Node: Operators96923 +Node: Prefix Ops97258 +Node: Infix Ops97586 +Node: Pseudo Ops99976 +Node: Abort105477 +Node: ABORT (COFF)105889 +Node: Align106097 +Node: Altmacro108379 +Node: Ascii109708 +Node: Asciz110017 +Node: Balign110262 +Node: Byte112125 +Node: CFI directives112373 +Node: Comm118000 +Ref: Comm-Footnote-1119601 +Node: Data119963 +Node: Def120280 +Node: Desc120512 +Node: Dim121012 +Node: Double121269 +Node: Eject121607 +Node: Else121782 +Node: Elseif122082 +Node: End122376 +Node: Endef122591 +Node: Endfunc122768 +Node: Endif122943 +Node: Equ123204 +Node: Equiv123718 +Node: Eqv124274 +Node: Err124638 +Node: Error124949 +Node: Exitm125394 +Node: Extern125563 +Node: Fail125824 +Node: File126269 +Node: Fill127598 +Node: Float128562 +Node: Func128904 +Node: Global129494 +Node: Gnu_attribute130251 +Node: Hidden130476 +Node: hword131062 +Node: Ident131390 +Node: If131964 +Node: Incbin135023 +Node: Include135718 +Node: Int136269 +Node: Internal136650 +Node: Irp137298 +Node: Irpc138177 +Node: Lcomm139094 +Node: Lflags139842 +Node: Line140036 +Node: Linkonce140949 +Node: List142178 +Node: Ln142786 +Node: Loc142936 +Node: Loc_mark_labels144322 +Node: Local144806 +Node: Long145418 +Node: Macro145596 +Node: MRI151518 +Node: Noaltmacro151856 +Node: Nolist152025 +Node: Octa152455 +Node: Org152789 +Node: P2align154072 +Node: PopSection156000 +Node: Previous156508 +Node: Print157921 +Node: Protected158150 +Node: Psize158797 +Node: Purgem159481 +Node: PushSection159702 +Node: Quad160445 +Node: Reloc160901 +Node: Rept161662 +Node: Sbttl162076 +Node: Scl162441 +Node: Section162782 +Node: Set168219 +Node: Short168856 +Node: Single169177 +Node: Size169522 +Node: Skip170196 +Node: Sleb128170520 +Node: Space170844 +Node: Stab171485 +Node: String173489 +Node: Struct174483 +Node: SubSection175208 +Node: Symver175771 +Node: Tag178164 +Node: Text178546 +Node: Title178867 +Node: Type179248 +Node: Uleb128181542 +Node: Val181866 +Node: Version182116 +Node: VTableEntry182391 +Node: VTableInherit182681 +Node: Warning183131 +Node: Weak183365 +Node: Weakref184034 +Node: Word184999 +Node: Deprecated186845 +Node: Object Attributes187080 +Node: GNU Object Attributes188800 +Node: Defining New Object Attributes191353 +Node: Machine Dependencies192150 +Node: Alpha-Dependent195275 +Node: Alpha Notes195689 +Node: Alpha Options195970 +Node: Alpha Syntax198446 +Node: Alpha-Chars198915 +Node: Alpha-Regs199146 +Node: Alpha-Relocs199533 +Node: Alpha Floating Point205791 +Node: Alpha Directives206013 +Node: Alpha Opcodes211536 +Node: ARC-Dependent211831 +Node: ARC Options212214 +Node: ARC Syntax213283 +Node: ARC-Chars213515 +Node: ARC-Regs213647 +Node: ARC Floating Point213771 +Node: ARC Directives214082 +Node: ARC Opcodes220054 +Node: ARM-Dependent220280 +Node: ARM Options220745 +Node: ARM Syntax227878 +Node: ARM-Instruction-Set228192 +Node: ARM-Chars229424 +Node: ARM-Regs229976 +Node: ARM Floating Point230185 +Node: ARM-Relocations230384 +Node: ARM Directives231337 +Ref: arm_pad232201 +Ref: arm_fnend235273 +Ref: arm_fnstart235597 +Ref: arm_save238609 +Ref: arm_setfp239310 +Node: ARM Opcodes242391 +Node: ARM Mapping Symbols244479 +Node: ARM Unwinding Tutorial245289 +Node: AVR-Dependent251489 +Node: AVR Options251779 +Node: AVR Syntax254983 +Node: AVR-Chars255270 +Node: AVR-Regs255676 +Node: AVR-Modifiers256255 +Node: AVR Opcodes258315 +Node: Blackfin-Dependent263561 +Node: Blackfin Options263873 +Node: Blackfin Syntax264731 +Node: Blackfin Directives270464 +Node: CR16-Dependent270883 +Node: CR16 Operand Qualifiers271131 +Node: CRIS-Dependent273772 +Node: CRIS-Opts274118 +Ref: march-option275736 +Node: CRIS-Expand277553 +Node: CRIS-Symbols278736 +Node: CRIS-Syntax279905 +Node: CRIS-Chars280241 +Node: CRIS-Pic280792 +Ref: crispic280988 +Node: CRIS-Regs284528 +Node: CRIS-Pseudos284945 +Ref: crisnous285721 +Node: D10V-Dependent287003 +Node: D10V-Opts287354 +Node: D10V-Syntax288317 +Node: D10V-Size288846 +Node: D10V-Subs289819 +Node: D10V-Chars290854 +Node: D10V-Regs292458 +Node: D10V-Addressing293503 +Node: D10V-Word294189 +Node: D10V-Float294704 +Node: D10V-Opcodes295015 +Node: D30V-Dependent295408 +Node: D30V-Opts295761 +Node: D30V-Syntax296436 +Node: D30V-Size296968 +Node: D30V-Subs297939 +Node: D30V-Chars298974 +Node: D30V-Guarded301272 +Node: D30V-Regs301952 +Node: D30V-Addressing303091 +Node: D30V-Float303759 +Node: D30V-Opcodes304070 +Node: H8/300-Dependent304463 +Node: H8/300 Options304875 +Node: H8/300 Syntax305142 +Node: H8/300-Chars305443 +Node: H8/300-Regs305742 +Node: H8/300-Addressing306661 +Node: H8/300 Floating Point307702 +Node: H8/300 Directives308029 +Node: H8/300 Opcodes309157 +Node: HPPA-Dependent317479 +Node: HPPA Notes317914 +Node: HPPA Options318672 +Node: HPPA Syntax318867 +Node: HPPA Floating Point320137 +Node: HPPA Directives320343 +Node: HPPA Opcodes329029 +Node: ESA/390-Dependent329288 +Node: ESA/390 Notes329748 +Node: ESA/390 Options330539 +Node: ESA/390 Syntax330749 +Node: ESA/390 Floating Point332922 +Node: ESA/390 Directives333201 +Node: ESA/390 Opcodes336490 +Node: i386-Dependent336752 +Node: i386-Options337876 +Node: i386-Directives341843 +Node: i386-Syntax342581 +Node: i386-Mnemonics345014 +Node: i386-Regs348253 +Node: i386-Prefixes350298 +Node: i386-Memory353058 +Node: i386-Jumps355995 +Node: i386-Float357116 +Node: i386-SIMD358947 +Node: i386-16bit360058 +Node: i386-Bugs362098 +Node: i386-Arch362852 +Node: i386-Notes365409 +Node: i860-Dependent366267 +Node: Notes-i860366663 +Node: Options-i860367568 +Node: Directives-i860368931 +Node: Opcodes for i860370000 +Node: i960-Dependent372167 +Node: Options-i960372570 +Node: Floating Point-i960376455 +Node: Directives-i960376723 +Node: Opcodes for i960378757 +Node: callj-i960379374 +Node: Compare-and-branch-i960379863 +Node: IA-64-Dependent381767 +Node: IA-64 Options382068 +Node: IA-64 Syntax385228 +Node: IA-64-Chars385591 +Node: IA-64-Regs385821 +Node: IA-64-Bits386747 +Node: IA-64 Opcodes387256 +Node: IP2K-Dependent387528 +Node: IP2K-Opts387756 +Node: LM32-Dependent388236 +Node: LM32 Options388531 +Node: LM32 Syntax389165 +Node: LM32-Regs389412 +Node: LM32-Modifiers390371 +Node: LM32 Opcodes391727 +Node: M32C-Dependent392031 +Node: M32C-Opts392555 +Node: M32C-Modifiers392978 +Node: M32R-Dependent394765 +Node: M32R-Opts395086 +Node: M32R-Directives399253 +Node: M32R-Warnings403228 +Node: M68K-Dependent406234 +Node: M68K-Opts406701 +Node: M68K-Syntax414093 +Node: M68K-Moto-Syntax415933 +Node: M68K-Float418523 +Node: M68K-Directives419043 +Node: M68K-opcodes420371 +Node: M68K-Branch420597 +Node: M68K-Chars424795 +Node: M68HC11-Dependent425208 +Node: M68HC11-Opts425745 +Node: M68HC11-Syntax429566 +Node: M68HC11-Modifiers431780 +Node: M68HC11-Directives433608 +Node: M68HC11-Float434984 +Node: M68HC11-opcodes435512 +Node: M68HC11-Branch435694 +Node: MicroBlaze-Dependent438143 +Node: MicroBlaze Directives438773 +Node: MIPS-Dependent440130 +Node: MIPS Opts441293 +Node: MIPS Object451664 +Node: MIPS Stabs453230 +Node: MIPS symbol sizes453952 +Node: MIPS ISA455621 +Node: MIPS autoextend457095 +Node: MIPS insn457825 +Node: MIPS option stack459095 +Node: MIPS ASE instruction generation overrides459869 +Node: MIPS floating-point461683 +Node: MMIX-Dependent462569 +Node: MMIX-Opts462949 +Node: MMIX-Expand466553 +Node: MMIX-Syntax467868 +Ref: mmixsite468225 +Node: MMIX-Chars469066 +Node: MMIX-Symbols469720 +Node: MMIX-Regs471788 +Node: MMIX-Pseudos472813 +Ref: MMIX-loc472954 +Ref: MMIX-local474034 +Ref: MMIX-is474566 +Ref: MMIX-greg474837 +Ref: GREG-base475756 +Ref: MMIX-byte477073 +Ref: MMIX-constants477544 +Ref: MMIX-prefix478190 +Ref: MMIX-spec478564 +Node: MMIX-mmixal478898 +Node: MSP430-Dependent482396 +Node: MSP430 Options482862 +Node: MSP430 Syntax483148 +Node: MSP430-Macros483464 +Node: MSP430-Chars484195 +Node: MSP430-Regs484508 +Node: MSP430-Ext485068 +Node: MSP430 Floating Point486889 +Node: MSP430 Directives487113 +Node: MSP430 Opcodes487904 +Node: MSP430 Profiling Capability488299 +Node: PDP-11-Dependent490628 +Node: PDP-11-Options491017 +Node: PDP-11-Pseudos496088 +Node: PDP-11-Syntax496433 +Node: PDP-11-Mnemonics497185 +Node: PDP-11-Synthetic497487 +Node: PJ-Dependent497705 +Node: PJ Options497930 +Node: PPC-Dependent498207 +Node: PowerPC-Opts498494 +Node: PowerPC-Pseudo501046 +Node: S/390-Dependent501645 +Node: s390 Options502348 +Node: s390 Characters503886 +Node: s390 Syntax504079 +Node: s390 Register504980 +Node: s390 Mnemonics505793 +Node: s390 Operands508813 +Node: s390 Formats511432 +Node: s390 Aliases519278 +Node: s390 Operand Modifier523175 +Node: s390 Instruction Marker526976 +Node: s390 Literal Pool Entries527992 +Node: s390 Directives529915 +Node: s390 Floating Point533830 +Node: SCORE-Dependent534276 +Node: SCORE-Opts534550 +Node: SCORE-Pseudo535838 +Node: SH-Dependent537894 +Node: SH Options538306 +Node: SH Syntax539314 +Node: SH-Chars539587 +Node: SH-Regs539881 +Node: SH-Addressing540495 +Node: SH Floating Point541404 +Node: SH Directives542498 +Node: SH Opcodes542868 +Node: SH64-Dependent547190 +Node: SH64 Options547553 +Node: SH64 Syntax549350 +Node: SH64-Chars549633 +Node: SH64-Regs549933 +Node: SH64-Addressing551029 +Node: SH64 Directives552212 +Node: SH64 Opcodes553322 +Node: Sparc-Dependent554038 +Node: Sparc-Opts554450 +Node: Sparc-Aligned-Data556707 +Node: Sparc-Syntax557539 +Node: Sparc-Chars558113 +Node: Sparc-Regs558346 +Node: Sparc-Constants563457 +Node: Sparc-Relocs568217 +Node: Sparc-Size-Translations572897 +Node: Sparc-Float574546 +Node: Sparc-Directives574741 +Node: TIC54X-Dependent576701 +Node: TIC54X-Opts577427 +Node: TIC54X-Block578470 +Node: TIC54X-Env578830 +Node: TIC54X-Constants579178 +Node: TIC54X-Subsyms579580 +Node: TIC54X-Locals581489 +Node: TIC54X-Builtins582233 +Node: TIC54X-Ext584704 +Node: TIC54X-Directives585275 +Node: TIC54X-Macros596177 +Node: TIC54X-MMRegs598288 +Node: Z80-Dependent598504 +Node: Z80 Options598892 +Node: Z80 Syntax600315 +Node: Z80-Chars600987 +Node: Z80-Regs601521 +Node: Z80-Case601873 +Node: Z80 Floating Point602318 +Node: Z80 Directives602512 +Node: Z80 Opcodes604137 +Node: Z8000-Dependent605481 +Node: Z8000 Options606442 +Node: Z8000 Syntax606659 +Node: Z8000-Chars606949 +Node: Z8000-Regs607182 +Node: Z8000-Addressing607972 +Node: Z8000 Directives609089 +Node: Z8000 Opcodes610698 +Node: Vax-Dependent620640 +Node: VAX-Opts621157 +Node: VAX-float624892 +Node: VAX-directives625524 +Node: VAX-opcodes626385 +Node: VAX-branch626774 +Node: VAX-operands629281 +Node: VAX-no630044 +Node: V850-Dependent630281 +Node: V850 Options630679 +Node: V850 Syntax633068 +Node: V850-Chars633308 +Node: V850-Regs633473 +Node: V850 Floating Point635041 +Node: V850 Directives635247 +Node: V850 Opcodes636390 +Node: Xtensa-Dependent642282 +Node: Xtensa Options643011 +Node: Xtensa Syntax645821 +Node: Xtensa Opcodes647710 +Node: Xtensa Registers649504 +Node: Xtensa Optimizations650137 +Node: Density Instructions650589 +Node: Xtensa Automatic Alignment651691 +Node: Xtensa Relaxation654138 +Node: Xtensa Branch Relaxation655046 +Node: Xtensa Call Relaxation656418 +Node: Xtensa Immediate Relaxation658204 +Node: Xtensa Directives660778 +Node: Schedule Directive662487 +Node: Longcalls Directive662827 +Node: Transform Directive663371 +Node: Literal Directive664113 +Ref: Literal Directive-Footnote-1667652 +Node: Literal Position Directive667794 +Node: Literal Prefix Directive669493 +Node: Absolute Literals Directive670391 +Node: Reporting Bugs671698 +Node: Bug Criteria672424 +Node: Bug Reporting673191 +Node: Acknowledgements679840 +Ref: Acknowledgements-Footnote-1684806 +Node: GNU Free Documentation License684832 +Node: AS Index710001  End Tag Table diff -ruN binutils-2.20-debian-orig/gas/doc/c-mips.texi binutils-2.20/gas/doc/c-mips.texi --- binutils-2.20-debian-orig/gas/doc/c-mips.texi 2009-09-28 06:23:57.000000000 -0400 +++ binutils-2.20/gas/doc/c-mips.texi 2010-04-06 21:10:39.000000000 -0400 @@ -172,6 +172,20 @@ Cause nops to be inserted if the read of the destination register of an mfhi or mflo instruction occurs in the following two instructions. address@hidden -mfix-loongson2f-jump address@hidden -mno-fix-loongson2f-jump +Eliminate instruction fetch from outside 256M region to work around the +Loongson2F @samp{jump} instructions. Without it, under extreme cases, +the kernel may crash. The issue has been solved in latest processor +batches, but this fix has no side effect to them. + address@hidden -mfix-loongson2f-nop address@hidden -mno-fix-loongson2f-nop +Replace nops by @code{or at,at,zero} to work around the Loongson2F address@hidden errata. Without it, under extreme cases, cpu might +deadlock. The issue has been solved in latest loongson2f batches, but +this fix has no side effect to them. + @item -mfix-vr4120 @itemx -no-mfix-vr4120 Insert nops to work around certain VR4120 errata. This option is diff -ruN binutils-2.20-debian-orig/gas/testsuite/gas/mips/eret-2.d binutils-2.20/gas/testsuite/gas/mips/eret-2.d --- binutils-2.20-debian-orig/gas/testsuite/gas/mips/eret-2.d 2009-05-27 10:14:42.000000000 -0400 +++ binutils-2.20/gas/testsuite/gas/mips/eret-2.d 2010-04-06 22:51:13.000000000 -0400 @@ -14,3 +14,4 @@ 10: 42000018 eret 14: 00000000 nop 18: 1000fffd b 0x10 + 1c: 00000000 nop diff -ruN binutils-2.20-debian-orig/gas/testsuite/gas/mips/eret-3.d binutils-2.20/gas/testsuite/gas/mips/eret-3.d --- binutils-2.20-debian-orig/gas/testsuite/gas/mips/eret-3.d 2009-05-27 10:14:42.000000000 -0400 +++ binutils-2.20/gas/testsuite/gas/mips/eret-3.d 2010-04-06 22:51:27.000000000 -0400 @@ -16,3 +16,4 @@ 10: aca40000 sw a0,0\(a1\) 14: 03e00008 jr ra 18: 00000000 nop + 1c: 00000000 nop diff -ruN binutils-2.20-debian-orig/gas/testsuite/gas/mips/loongson-2f-2.d binutils-2.20/gas/testsuite/gas/mips/loongson-2f-2.d --- binutils-2.20-debian-orig/gas/testsuite/gas/mips/loongson-2f-2.d 1969-12-31 19:00:00.000000000 -0500 +++ binutils-2.20/gas/testsuite/gas/mips/loongson-2f-2.d 2010-04-06 21:10:39.000000000 -0400 @@ -0,0 +1,18 @@ +#as: -mfix-loongson2f-nop +#objdump: -M reg-names=numeric -dr +#name: ST Microelectronics Loongson-2F workarounds of nop issue + +.*: file format .* + + +Disassembly of section .text: + +00000000 : + 0: 00200825 move \$1,\$1 + 4: 00200825 move \$1,\$1 + 8: 00200825 move \$1,\$1 + c: 00200825 move \$1,\$1 + 10: 00200825 move \$1,\$1 + 14: 00200825 move \$1,\$1 + 18: 00200825 move \$1,\$1 + 1c: 00200825 move \$1,\$1 diff -ruN binutils-2.20-debian-orig/gas/testsuite/gas/mips/loongson-2f-2.s binutils-2.20/gas/testsuite/gas/mips/loongson-2f-2.s --- binutils-2.20-debian-orig/gas/testsuite/gas/mips/loongson-2f-2.s 1969-12-31 19:00:00.000000000 -0500 +++ binutils-2.20/gas/testsuite/gas/mips/loongson-2f-2.s 2010-04-06 21:10:39.000000000 -0400 @@ -0,0 +1,10 @@ +# Test the work around of the NOP issue of loongson2F + .text + .set noreorder + + .align 5 # Test _implicit_ nops +loongson2f_nop_insn: + nop # Test _explicit_ nops + +# align section end to 16-byte boundary for easier testing on multiple targets + .p2align 4 diff -ruN binutils-2.20-debian-orig/gas/testsuite/gas/mips/loongson-2f-3.d binutils-2.20/gas/testsuite/gas/mips/loongson-2f-3.d --- binutils-2.20-debian-orig/gas/testsuite/gas/mips/loongson-2f-3.d 1969-12-31 19:00:00.000000000 -0500 +++ binutils-2.20/gas/testsuite/gas/mips/loongson-2f-3.d 2010-04-06 21:10:39.000000000 -0400 @@ -0,0 +1,35 @@ +#as: -mfix-loongson2f-jump +#objdump: -M reg-names=numeric -dr +#name: ST Microelectronics Loongson-2F workarounds of Jump Instruction issue + +.*: file format .* + + +Disassembly of section .text: + +00000000 <.text>: + 0: 3c01cfff lui \$1,0xcfff + 4: 3421ffff ori \$1,\$1,0xffff + 8: 03c1f024 and \$30,\$30,\$1 + c: 03c00008 jr \$30 + 10: 00000000 nop + + 14: 3c01cfff lui \$1,0xcfff + 18: 3421ffff ori \$1,\$1,0xffff + 1c: 03e1f824 and \$31,\$31,\$1 + 20: 03e00008 jr \$31 + 24: 00000000 nop + + 28: 3c01cfff lui \$1,0xcfff + 2c: 3421ffff ori \$1,\$1,0xffff + 30: 03c1f024 and \$30,\$30,\$1 + 34: 03c0f809 jalr \$30 + 38: 00000000 nop + + 3c: 00200008 jr \$1 + 40: 00000000 nop + + 44: 08000000 j 0x0 + 44: R_MIPS_26 external_label + 48: 00000000 nop + 4c: 00000000 nop diff -ruN binutils-2.20-debian-orig/gas/testsuite/gas/mips/loongson-2f-3.s binutils-2.20/gas/testsuite/gas/mips/loongson-2f-3.s --- binutils-2.20-debian-orig/gas/testsuite/gas/mips/loongson-2f-3.s 1969-12-31 19:00:00.000000000 -0500 +++ binutils-2.20/gas/testsuite/gas/mips/loongson-2f-3.s 2010-04-06 21:10:39.000000000 -0400 @@ -0,0 +1,23 @@ +# Test the work around of the Jump instruction Issue of Loongson2F + .text + .set noreorder + + j $30 # j with register + nop + + jr $31 # jr + nop + + jalr $30 # jalr + nop + + .set noat + jr $1 # jr with at register and .set annotation + nop + .set at + + j external_label # j with label + nop + +# align section end to 16-byte boundary for easier testing on multiple targets + .p2align 4 diff -ruN binutils-2.20-debian-orig/gas/testsuite/gas/mips/mips.exp binutils-2.20/gas/testsuite/gas/mips/mips.exp --- binutils-2.20-debian-orig/gas/testsuite/gas/mips/mips.exp 2009-09-22 11:41:03.000000000 -0400 +++ binutils-2.20/gas/testsuite/gas/mips/mips.exp 2010-04-06 21:13:07.000000000 -0400 @@ -87,6 +87,12 @@ # Catch becuase the variable won't be set the first time through. catch {unset mips_arches} + + # Disable the loongson2f nop fix by default, because most of the + # existing test cases for mips will fail otherwise. + global ASFLAGS + set old_ASFLAGS "$ASFLAGS" + set ASFLAGS "$ASFLAGS -mno-fix-loongson2f-nop" } # mips_arch_create ARCH GPRSIZE EXTENDS PROPS AS_FLAGS OBJDUMP_FLAGS \ @@ -789,6 +795,8 @@ run_dump_test "loongson-2e" run_dump_test "loongson-2f" + run_dump_test "loongson-2f-2" + run_dump_test "loongson-2f-3" run_dump_test_arches "octeon" [mips_arch_list_matching octeon] run_list_test_arches "octeon-ill" "" \ diff -ruN binutils-2.20-debian-orig/include/opcode/mips.h binutils-2.20/include/opcode/mips.h --- binutils-2.20-debian-orig/include/opcode/mips.h 2009-09-02 03:21:40.000000000 -0400 +++ binutils-2.20/include/opcode/mips.h 2010-04-06 21:10:39.000000000 -0400 @@ -1,6 +1,6 @@ /* mips.h. Mips opcode list for GDB, the GNU debugger. Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2008, 2009 + 2003, 2004, 2005, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Ralph Campbell and OSF Commented and modified by Ian Lance Taylor, Cygnus Support @@ -1106,4 +1106,8 @@ extern const struct mips_opcode mips16_opcodes[]; extern const int bfd_mips16_num_opcodes; +/* A NOP insn impemented as "or at,at,zero". + Used to implement -mfix-loongson2f. */ +#define LOONGSON2F_NOP_INSN 0x00200825 + #endif /* _MIPS_H_ */ diff -ruN binutils-2.20-debian-orig/ld/testsuite/ld-mips-elf/mips-elf.exp binutils-2.20/ld/testsuite/ld-mips-elf/mips-elf.exp --- binutils-2.20-debian-orig/ld/testsuite/ld-mips-elf/mips-elf.exp 2009-09-30 08:55:57.000000000 -0400 +++ binutils-2.20/ld/testsuite/ld-mips-elf/mips-elf.exp 2010-04-06 21:19:01.000000000 -0400 @@ -20,6 +20,12 @@ # MA 02110-1301, USA. # +# Disable the loongson2f nop fix by default, because most of the +# existing test cases for mips will fail otherwise. +global ASFLAGS +set old_ASFLAGS "$ASFLAGS" +set ASFLAGS "$ASFLAGS -mno-fix-loongson2f-nop" + if {[istarget "mips*-*-vxworks"]} { set mipsvxtests { {"VxWorks shared library test 1" "-shared -Tvxworks1.ld"