diff options
author | Richard Sandiford <rdsandiford@googlemail.com> | 2007-12-10 10:36:00 +0000 |
---|---|---|
committer | Richard Sandiford <rdsandiford@googlemail.com> | 2007-12-10 10:36:00 +0000 |
commit | 742a56fee56f186cb3a033d456cd0e3cd74c0751 (patch) | |
tree | e515ffe26daf67b2de383cfde5365ff403fc70d0 /gas/config/tc-mips.h | |
parent | 62cf9b51b44109447fa48522801f9e88ede8410f (diff) | |
download | binutils-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.h | 9 |
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 |