aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-mips.h
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2007-12-10 10:36:00 +0000
committerRichard Sandiford <rdsandiford@googlemail.com>2007-12-10 10:36:00 +0000
commit742a56fee56f186cb3a033d456cd0e3cd74c0751 (patch)
treee515ffe26daf67b2de383cfde5365ff403fc70d0 /gas/config/tc-mips.h
parent62cf9b51b44109447fa48522801f9e88ede8410f (diff)
downloadbinutils-742a56fee56f186cb3a033d456cd0e3cd74c0751.zip
binutils-742a56fee56f186cb3a033d456cd0e3cd74c0751.tar.gz
binutils-742a56fee56f186cb3a033d456cd0e3cd74c0751.tar.bz2
gas/
* config/tc-mips.h (mips_nop_opcode): Declare. (NOP_OPCODE): Define. (mips_segment_info): New structure. (TC_SEGMENT_INFO_TYPE): Use it instead of insn_label_list. * config/tc-mips.c (label_list): Adjust for new TC_SEGMENT_INFO_TYPE. (mips_record_mips16_mode): New function. (install_insn): Call it. (mips_align): Likewise. Turn the fill argument into an "int *". Use frag_align_code for code segments if no fill data is given. (s_align): Adjust call accordingly. (mips_nop_opcode): New function. (mips_handle_align): Use the first variable byte to decide which nop sequence is needed. Use md_number_to_chars and mips16_nop_insn. gas/testsuite/ * gas/mips/align2.s, gas/mips/align2.d, gas/mips/align2-el.d: New tests. * gas/mips/mips.exp: Run them.
Diffstat (limited to 'gas/config/tc-mips.h')
-rw-r--r--gas/config/tc-mips.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/gas/config/tc-mips.h b/gas/config/tc-mips.h
index 74a7e20..171ef7a 100644
--- a/gas/config/tc-mips.h
+++ b/gas/config/tc-mips.h
@@ -53,13 +53,20 @@ extern int mips_relax_frag (asection *, struct frag *, long);
#define md_undefined_symbol(name) (0)
#define md_operand(x)
+extern char mips_nop_opcode (void);
+#define NOP_OPCODE (mips_nop_opcode ())
+
extern void mips_handle_align (struct frag *);
#define HANDLE_ALIGN(fragp) mips_handle_align (fragp)
#define MAX_MEM_FOR_RS_ALIGN_CODE (1 + 2)
struct insn_label_list;
-#define TC_SEGMENT_INFO_TYPE struct insn_label_list *
+struct mips_segment_info {
+ struct insn_label_list *labels;
+ unsigned int mips16 : 1;
+};
+#define TC_SEGMENT_INFO_TYPE struct mips_segment_info
/* This field is nonzero if the symbol is the target of a MIPS16 jump. */
#define TC_SYMFIELD_TYPE int