This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
[PATCH, POINTER] Let gas support mips64
- To: binutils at sources dot redhat dot com
- Subject: [PATCH, POINTER] Let gas support mips64
- From: Thiemo Seufer <ica2_ts at csv dot ica dot uni-stuttgart dot de>
- Date: Tue, 19 Jun 2001 00:52:51 +0200
Hi All,
This patch adds support for mips64 to gas. Testcases are not provided for
64bit case because of the necessary bfd and binutils changes (which aren't
done in a acceptable way yet).
btw:
At least for configuration mips64-linux, current CVS fails the
'make check' in gas for test 'MIPS ELF reloc 3'. The patch does not
change this behaviour.
Thiemo
2001-06-18 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
/gas/ChangeLog
* config/tc-mips.h (MAX_GPREL_OFFSET): Changed from the first invalid
value to the maximum value.
* config/tc-mips.c (USES_32BIT_REGS): Define.
(USES_64BIT_ADDRESSES): Define.
(S_EX_*): Declare.
(append_insn): Add handling of mips64 relocs.
(macro_build): Likewise. Replace numeric constants by defines. Move
insertion of immediate constants in case 'u' to append_insn().
(load_register): Change register width check to use USES_32BIT_REGS.
Fix handling of sign bit in 64bit constants.
(load_address): Add parameters required to handle 64bit addresses.
Add handling of 64bit addresses. Change register width check to use
USES_32BIT_REGS. Change check for MAX_GPREL_OFFSET to fit the new
value. Formatting.
(macro): Change register width check to use USES_32BIT_REGS.
Formatting. Typos. Add handling of 64bit addresses. Some code cleanup.
Change check for MAX_GPREL_OFFSET to fit the new value.
(macro2): Formatting. Change register width check to use
USES_32BIT_REGS. Warn on used $at in M_UL[DW] case. Change calls to
load_address(). Mark M_USD_A as double value.
(mips16_macro): Formatting.
(mips_ip): Replace numeric constants by defines. Change register width
check to use USES_32BIT_REGS. Use new return values of
my_getSmallExpression() instead of characters. Add mips64 relocation
handling.
(LP): Remove.
(RP): Remove.
(my_getSmallExpression): Rewritten to allow arbitrary upper/lowercase,
return more useful values and support mips64 relocations.
(md_parse_option): Use TE_TMIPS conditional as in other places.
(md_apply_fix): Preliminary support for mips64 relocations.
Fix bad JMP argument generation.
(s_cprestore): Change register width check to use USES_32BIT_REGS.
(s_cpadd): Likewise.
(md_estimate_size_before_relax): Code cleanup.
(md_obj_end): Remove ugly `' in message string. :-)
(s_mips_end): Remove unused variables.
(s_mips_ent): Remove ugly `' in message string.
Because of it's size (82689), the actual patch is provided at
http://www.csv.ica.uni-stuttgart.de/homes/ths/linux-mips/cygnus-gas-mips64.diff