* some support for funny-endian 16/32-bit insn sets

[cgen/ChangeLog]
2001-07-11  Frank Ch. Eigler  <fche@redhat.com>

        * desc-cpu.scm (-gen-mach-table-defns): Emit fourth field: the
        mach->cpu insn-chunk-bitsize.
        (-gen-cpu-open): In @arch@_cgen_rebuild_tables, process above new
        field toward CGEN_CPU_TABLE->insn_chunk_bitsize.
        * mach.scm (<cpu>): New field insn-chunk-bitsize.
        (-cpu-parse, -cpu-read): Parse/initialize it.
        * doc/rtl.texi (define-cpu): Document it.

[opcodes/ChangeLog]
2001-07-11  Frank Ch. Eigler  <fche@redhat.com>

        * cgen-dis.in (print_insn): Use cgen_get_insn_value instead of
        bfd_get_bits.
        * cgen-opc.c (cgen_get_insn_value, cgen_put_insn_value): Respect
        non-zero CGEN_CPU_DESC->insn_chunk_bitsize.

[include/opcode/ChangeLog]
2001-07-11  Frank Ch. Eigler  <fche@redhat.com>

        * cgen.h (CGEN_MACH): Add insn_chunk_bitsize field.
        (cgen_cpu_desc): Ditto.
This commit is contained in:
Frank Ch. Eigler 2001-07-12 02:32:25 +00:00
parent 25b14d6c00
commit ef393a8fad
2 changed files with 11 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2001-07-11 Frank Ch. Eigler <fche@redhat.com>
* cgen.h (CGEN_MACH): Add insn_chunk_bitsize field.
(cgen_cpu_desc): Ditto.
2001-07-07 Ben Elliston <bje@redhat.com> 2001-07-07 Ben Elliston <bje@redhat.com>
* m88k.h: Clean up and reformat. Remove unused code. * m88k.h: Clean up and reformat. Remove unused code.

View File

@ -199,6 +199,8 @@ typedef struct {
const char *bfd_name; const char *bfd_name;
/* one of enum mach_attr */ /* one of enum mach_attr */
int num; int num;
/* parameter from mach->cpu */
unsigned int insn_chunk_bitsize;
} CGEN_MACH; } CGEN_MACH;
/* Parse result (also extraction result). /* Parse result (also extraction result).
@ -1166,6 +1168,10 @@ typedef struct cgen_cpu_desc
lazily fetch the data from there. */ lazily fetch the data from there. */
unsigned int word_bitsize; unsigned int word_bitsize;
/* Instruction chunk size (in bits), for purposes of endianness
conversion. */
unsigned int insn_chunk_bitsize;
/* Indicator if sizes are unknown. /* Indicator if sizes are unknown.
This is used by default_insn_bitsize,base_insn_bitsize if there is a This is used by default_insn_bitsize,base_insn_bitsize if there is a
difference between the selected isa's. */ difference between the selected isa's. */