aboutsummaryrefslogtreecommitdiff
path: root/opcodes/cgen-ibld.in
AgeCommit message (Collapse)AuthorFilesLines
2016-02-02opcodes/cgen: Rework calculation of shift when inserting fieldsAndrew Burgess1-3/+10
The calculation of the shift amount, used to insert fields into the instruction buffer, is not correct when the following conditions are all true: - CGEN_INT_INSN_P is defined, and true. - CGEN_INSN_LSB0_P is true - Total instruction length is greater than the length of a single instruction word (the instruction is made of multiple words) - The word offset is non-zero (the field is outside the first word) When the above conditions are all true, the calculated shift fails to take account of the total instruction length. After this commit the calculation of the shift amount is split into two parts, first we calculate the shift required to get to BIT0 of the word in which the field lives, then we calculate the shift required to place the field within the instruction word. The change in this commit only effects the CGEN_INT_INSN_P defined true case, but changes the code for both CGEN_INSN_LSB0_P true, and false. In the case of CGEN_INSN_LSB0_P being false, the code used to say: shift = total_length - (word_offset + start + length); Now it says: shift_to_word = total_length - (word_offset + word_length); shift_within_word = word_length - start - length; shift = shift_to_word + shift_within_word; From which we can see that in all cases the computed shift value should be unchanged. In the case of CGEN_INSN_LSB0_P being true, the code used to say: shift = (word_offset + start + 1) - length; Now it says: shift_to_word = total_length - (word_offset + word_length); shift_within_word = start + 1 - length; shift = shift_to_word + shift_within_word; In the case where 'total_length == word_length' AND 'word_offset == 0' (which indicates an instruction of a single word), we see that the computed shift value will be unchanged. However, when the total_length and word_length are different, and the word_offset is non-zero then the computed shift value will be different (and correct). opcodes/ChangeLog: * cgen-ibld.in (insert_normal): Rework calculation of shift. * epiphany-ibld.c: Regenerate. * fr30-ibld.c: Regenerate. * frv-ibld.c: Regenerate. * ip2k-ibld.c: Regenerate. * iq2000-ibld.c: Regenerate. * lm32-ibld.c: Regenerate. * m32c-ibld.c: Regenerate. * m32r-ibld.c: Regenerate. * mep-ibld.c: Regenerate. * mt-ibld.c: Regenerate. * or1k-ibld.c: Regenerate. * xc16x-ibld.c: Regenerate. * xstormy16-ibld.c: Regenerate.
2016-01-01Copyright update for binutilsAlan Modra1-1/+1
2015-08-12Remove trailing spaces in opcodesH.J. Lu1-2/+2
2015-01-02ChangeLog rotatation and copyright year updateAlan Modra1-1/+1
2014-03-05Update copyright yearsAlan Modra1-2/+1
2010-01-07 * cgen-ibld.in (insert_normal, extract_normal): Minor cleanup.Doug Evans1-3/+3
* fr30-ibld.c, * frv-ibld.c, * ip2k-ibld.c, * iq2000-ibld.c, * lm32-ibld.c, * m32c-ibld.c, * m32r-ibld.c, * mep-ibld.c, * mt-ibld.c, * openrisc-ibld.c, * xc16x-ibld.c, * xstormy16-ibld.c: Regenerate.
2010-01-06 cpu/Doug Evans1-0/+1
* m32c.cpu (f-dsp-32-u24): Fix mode of extract handler. (f-dsp-40-u20, f-dsp-40-u24): Ditto. opcodes/ * cgen-ibld.in: #include "cgen/basic-modes.h". * fr30-ibld.c, * frv-ibld.c, * ip2k-ibld.c, * iq2000-ibld.c, * lm32-ibld.c, * m32c-ibld.c, * m32r-ibld.c, * mep-ibld.c, * mt-ibld.c, * openrisc-ibld.c, * xc16x-ibld.c, * xstormy16-ibld.c: Regenerate.
2010-01-02 * cgen-asm.in: Update copyright year.Doug Evans1-1/+1
* cgen-dis.in: Update copyright year. * cgen-ibld.in: Update copyright year. * fr30-asm.c, * fr30-desc.c, * fr30-desc.h, * fr30-dis.c, * fr30-ibld.c, * fr30-opc.c, * fr30-opc.h, * frv-asm.c, * frv-desc.c, * frv-desc.h, * frv-dis.c, * frv-ibld.c, * frv-opc.c, * frv-opc.h, * ip2k-asm.c, * ip2k-desc.c, * ip2k-desc.h, * ip2k-dis.c, * ip2k-ibld.c, * ip2k-opc.c, * ip2k-opc.h, * iq2000-asm.c, * iq2000-desc.c, * iq2000-desc.h, * iq2000-dis.c, * iq2000-ibld.c, * iq2000-opc.c, * iq2000-opc.h, * lm32-asm.c, * lm32-desc.c, * lm32-desc.h, * lm32-dis.c, * lm32-ibld.c, * lm32-opc.c, * lm32-opc.h, * lm32-opinst.c, * m32c-asm.c, * m32c-desc.c, * m32c-desc.h, * m32c-dis.c, * m32c-ibld.c, * m32c-opc.c, * m32c-opc.h, * m32r-asm.c, * m32r-desc.c, * m32r-desc.h, * m32r-dis.c, * m32r-ibld.c, * m32r-opc.c, * m32r-opc.h, * m32r-opinst.c, * mep-asm.c, * mep-desc.c, * mep-desc.h, * mep-dis.c, * mep-ibld.c, * mep-opc.c, * mep-opc.h, * mt-asm.c, * mt-desc.c, * mt-desc.h, * mt-dis.c, * mt-ibld.c, * mt-opc.c, * mt-opc.h, * openrisc-asm.c, * openrisc-desc.c, * openrisc-desc.h, * openrisc-dis.c, * openrisc-ibld.c, * openrisc-opc.c, * openrisc-opc.h, * xc16x-asm.c, * xc16x-desc.c, * xc16x-desc.h, * xc16x-dis.c, * xc16x-ibld.c, * xc16x-opc.c, * xc16x-opc.h, * xstormy16-asm.c, * xstormy16-desc.c, * xstormy16-desc.h, * xstormy16-dis.c, * xstormy16-ibld.c, * xstormy16-opc.c, * xstormy16-opc.h: Regenerate.
2008-12-23Add LM32 port.Nick Clifton1-2/+2
2007-07-05Change source files over to GPLv3.Nick Clifton1-8/+8
2006-03-05* cgen-ibld.in (insert_normal): Cope with attempts to insert a signed 32-bitNick Clifton1-4/+12
value into an unsigned 32-bit field when the host is a 64-bit machine.
2006-01-03* cgen-ibld.in (extract_normal): Avoid memory range errors.DJ Delorie1-4/+3
* m32c-ibld.c: Regenerated.
2005-07-01Update function declarations to ISO C90 formattingNick Clifton1-34/+22
2005-05-07Update the address and phone number of the FSFNick Clifton1-1/+1
2003-08-08Fix typos in last changeMichael Meissner1-3/+6
2003-08-08Convert cgen to C-90Michael Meissner1-67/+66
2001-11-09Fix badly placed #if 0...Nick Clifton1-2/+2
2001-10-13Use safe-ctype.h not ctype.hNick Clifton1-1/+1
2001-10-09Fix compile time warnings in cgen-generated filesNick Clifton1-10/+21
2001-09-302001-09-30 John Healy <jhealy@redhat.com>John Healy1-3/+3
* cgen-ibld.in (insert_1): Switched bfd_get_bits and bfd_set_bits calls to cgen_get_insn_value and cgen_put_insn_value calls. (extract_1): Switched bfd_get_bits call to cgen_get_insn_value call.
2001-08-12 * cgen-ibld.in (extract_normal): Match type of VALUE and MASKRichard Henderson1-1/+1
to *VALUEP. Regenerate all cgen files.
2001-07-01 * cgen-ibld.in (insert_normal): Support CGEN_IFLD_SIGN_OPT.Geoffrey Keating1-1/+16
2001-05-07* cgen asm/disasmFrank Ch. Eigler1-2/+2
[opcodes/ChangeLog] 2001-05-07 Frank Ch. Eigler <fche@redhat.com> * cgen-dis.in (default_print_insn): Tolerate min<base instructions even at end of a section. * cgen-ibld.in (extract_normal): Tolerate min!=base!=max instructions by ignoring precariously-unpacked insn_value in favor of raw buffer. [cgen/ChangeLog] 2001-05-07 Frank Ch. Eigler <fche@redhat.com> * iformat.scm (compute-insn-base-mask-length): Rewrite to tolerate various-base-length instruction sets.
2001-03-27* Comment tweak.Ben Elliston1-4/+4
2001-03-222001-03-22 Ben Elliston <bje@redhat.com>Ben Elliston1-1/+1
* cgen-asm.in (@arch@_cgen_assemble_insn): Move tmp_errmsg declaration inside CGEN_VERBOSE_ASSEMBLER_ERRORS conditional. * cgen-ibld.in (put_insn_int_value): Mark cd parameter as unused to allay a compiler warning.
2001-03-13Fix typos in ChangeLogs; fix dates in copyright noticesNick Clifton1-1/+1
2001-01-092001-01-09 Jeff Johnston <jjohnstn@redhat.com>Jeff Johnston1-4/+4
* cgen-asm.in (parse_insn_normal): Changed syn to be CGEN_SYNTAX_CHAR_TYPE. Changed all references to *syn as character to use CGEN_SYNTAX_CHAR macro and all comparisons to '\0' to use 0 instead. * cgen-dis.in (print_insn_normal): Ditto. * cgen-ibld.in (insert_insn_normal, extract_insn_normal): Ditto.
2001-01-02* generalizationFrank Ch. Eigler1-103/+15
2001-01-02 Richard Sandiford <rsandifo@redhat.com> * cgen-dis.c (hash_insn_array): Use bfd_put_bits(). (hash_insn_list): Likewise * cgen-ibld.in (insert_1): Use bfd_put_bits() and bfd_get_bits(). (extract_1): Use bfd_get_bits(). (extract_normal): Apply sign extension to both extraction methods. * cgen-opc.c (cgen_get_insn_value): Use bfd_get_bits() (cgen_put_insn_value): Use bfd_put_bits()
2000-08-282000-08-28 Dave Brolley <brolley@redhat.com>Dave Brolley1-6/+38
* cgen-ibld.in (cgen_put_insn_int_value): New function. (insert_normal): Allow for non-zero word_offset with CGEN_INT_INSN_P. (insert_insn_normal): Use cgen_put_insn_int_value with CGEN_INT_INSN_P. (extract_normal): Allow for non-zero word_offset with CGEN_INT_INSN_P. * cgen-dis.in (read_insn): New static function. (print_insn): Use read_insn to read the insn into the buffer and set up for disassembly. (print_insn): in CGEN_INT_INSN_P, make sure that the entire insn is in the buffer. * fr30-asm.c: Regenerated. * fr30-desc.c: Regenerated. * fr30-desc.h Regenerated. * fr30-dis.c: Regenerated. * fr30-ibld.c: Regenerated. * fr30-opc.c: Regenerated. * fr30-opc.h Regenerated. * m32r-asm.c: Regenerated. * m32r-desc.c: Regenerated. * m32r-desc.h Regenerated. * m32r-dis.c: Regenerated. * m32r-ibld.c: Regenerated. * m32r-opc.c: Regenerated.
2000-08-042000-08-04 Ben Elliston <bje@redhat.com>Ben Elliston1-0/+570
* cgen-dis.in, cgen-asm.in, cgen-ibld.in: New files. * cgen.sh: Likewise.