summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2002-01-06 12:15:45 +0000
committerAlan Modra <amodra@gmail.com>2002-01-06 12:15:45 +0000
commitd7861ad2a51101a548ed5a8cff4aaa548e0cfaf4 (patch)
tree6e03c2939ce88bd52cecff42b5818011028dc9a9
parentd9cf1b54c5e4b32e5f47be2368514b0feb78d9a5 (diff)
downloadppe42-binutils-d7861ad2a51101a548ed5a8cff4aaa548e0cfaf4.tar.gz
ppe42-binutils-d7861ad2a51101a548ed5a8cff4aaa548e0cfaf4.zip
* config/tc-m68k.h (md_prepare_relax_scan): Rewrite.
* config/tc-m68k.c (md_relax_table): Add md_prepare_relax_scan comment.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-m68k.c3
-rw-r--r--gas/config/tc-m68k.h13
3 files changed, 15 insertions, 6 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index b90a726fcb..8c29411fe0 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 ff209a942e..ef5f8450cd 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 56879d2b6a..fb33db4ed5 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
OpenPOWER on IntegriCloud