diff options
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-m68k.c | 3 | ||||
-rw-r--r-- | gas/config/tc-m68k.h | 13 |
3 files changed, 15 insertions, 6 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index b90a726..8c29411 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2002-01-06 Alan Modra <amodra@bigpond.net.au> + + * config/tc-m68k.h (md_prepare_relax_scan): Rewrite. + * config/tc-m68k.c (md_relax_table): Add md_prepare_relax_scan comment. + 2002-01-05 Daniel Jacobowitz <drow@mvista.com> * tc-mips.c (mips_cprestore_valid): New flag. diff --git a/gas/config/tc-m68k.c b/gas/config/tc-m68k.c index ff209a9..ef5f845 100644 --- a/gas/config/tc-m68k.c +++ b/gas/config/tc-m68k.c @@ -471,7 +471,8 @@ static const int n_archs = sizeof (archs) / sizeof (archs[0]); How far Backward this mode will reach: How many bytes this mode will add to the size of the frag Which mode to go to if the offset won't fit in this one - */ + + Please check tc-m68k.h:md_prepare_relax_scan if changing this table. */ relax_typeS md_relax_table[] = { { 127, -128, 0, TAB (BRANCHBWL, SHORT) }, diff --git a/gas/config/tc-m68k.h b/gas/config/tc-m68k.h index 56879d2..fb33db4 100644 --- a/gas/config/tc-m68k.h +++ b/gas/config/tc-m68k.h @@ -227,11 +227,14 @@ extern int m68k_parse_long_option PARAMS ((char *)); extern struct relax_type md_relax_table[]; #define TC_GENERIC_RELAX_TABLE md_relax_table -/* Copied from write.c */ -/* This was formerly called M68K_AIM_KLUDGE. */ +/* We can't do a byte jump to the next instruction, so in that case + force word mode by faking AIM. */ #define md_prepare_relax_scan(fragP, address, aim, this_state, this_type) \ - if (aim==0 && this_state== 4) { /* hard encoded from tc-m68k.c */ \ - aim=this_type->rlx_forward+1; /* Force relaxation into word mode */ \ - } + do \ + { \ + if (aim == 0 && this_type->rlx_forward == 127) \ + aim = 128; \ + } \ + while (0) #define DWARF2_LINE_MIN_INSN_LENGTH 2 |