mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-21 02:24:17 +08:00
* txvu.h (txvu_opcode): insert/extract/print take pointer to
instruction rather than instruction itself. Result of insert is `void'. Add decls for dma, pke, gpuif support.
This commit is contained in:
@ -1,3 +1,11 @@
|
|||||||
|
start-sanitize-sky
|
||||||
|
Mon Jan 26 16:19:01 1998 Doug Evans <devans@seba.cygnus.com>
|
||||||
|
|
||||||
|
* txvu.h (txvu_opcode): insert/extract/print take pointer to
|
||||||
|
instruction rather than instruction itself. Result of insert is
|
||||||
|
`void'. Add decls for dma, pke, gpuif support.
|
||||||
|
|
||||||
|
end-sanitize-sky
|
||||||
Thu Jan 22 17:54:56 1998 Nick Clifton <nickc@cygnus.com>
|
Thu Jan 22 17:54:56 1998 Nick Clifton <nickc@cygnus.com>
|
||||||
|
|
||||||
* cgen.h: Add prototypes for cgen_save_fixups(),
|
* cgen.h: Add prototypes for cgen_save_fixups(),
|
||||||
|
@ -133,7 +133,7 @@ struct txvu_operand {
|
|||||||
|
|
||||||
/* Parse function. This is used by the assembler.
|
/* Parse function. This is used by the assembler.
|
||||||
If the operand cannot be parsed an error message is stored in ERRMSG,
|
If the operand cannot be parsed an error message is stored in ERRMSG,
|
||||||
otherwise NULL is stored. */
|
otherwise ERRMSG is unchanged. */
|
||||||
long (*parse) PARAMS ((char **str, const char **errmsg));
|
long (*parse) PARAMS ((char **str, const char **errmsg));
|
||||||
|
|
||||||
/* Insertion function. This is used by the assembler. To insert an
|
/* Insertion function. This is used by the assembler. To insert an
|
||||||
@ -146,15 +146,15 @@ struct txvu_operand {
|
|||||||
complement arithmetic).
|
complement arithmetic).
|
||||||
|
|
||||||
If this field is not NULL, then simply call it with the
|
If this field is not NULL, then simply call it with the
|
||||||
instruction and the operand value. It will return the new value
|
instruction and the operand value. It will overwrite the appropriate
|
||||||
of the instruction. If the ERRMSG argument is not NULL, then if
|
bits of the instruction with the operand's value.
|
||||||
the operand value is illegal, *ERRMSG will be set to a warning
|
If the ERRMSG argument is not NULL, then if the operand value is illegal,
|
||||||
string (the operand will be inserted in any case). If the
|
*ERRMSG will be set to a warning string (the operand will be inserted in
|
||||||
operand value is legal, *ERRMSG will be unchanged.
|
any case). If the operand value is legal, *ERRMSG will be unchanged.
|
||||||
|
|
||||||
REG is non-NULL when inserting a register value. */
|
REG is non-NULL when inserting a register value. */
|
||||||
|
|
||||||
TXVU_INSN (*insert) PARAMS ((TXVU_INSN insn,
|
void (*insert) PARAMS ((TXVU_INSN *insn,
|
||||||
const struct txvu_operand *operand, int mods,
|
const struct txvu_operand *operand, int mods,
|
||||||
long value, const char **errmsg));
|
long value, const char **errmsg));
|
||||||
|
|
||||||
@ -181,17 +181,19 @@ struct txvu_operand {
|
|||||||
FIXME: just thrown in here for now.
|
FIXME: just thrown in here for now.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
long (*extract) PARAMS ((TXVU_INSN insn,
|
long (*extract) PARAMS ((TXVU_INSN *insn,
|
||||||
const struct txvu_operand *operand,
|
const struct txvu_operand *operand,
|
||||||
int mods, int *pinvalid));
|
int mods, int *pinvalid));
|
||||||
|
|
||||||
/* Print function. This is used by the disassembler. */
|
/* Print function. This is used by the disassembler. */
|
||||||
void (*print) PARAMS ((disassemble_info *info, TXVU_INSN insn,
|
void (*print) PARAMS ((disassemble_info *info, TXVU_INSN *insn,
|
||||||
long value));
|
long value));
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Given an operand entry, return the table index. */
|
/* Given an operand entry, return the table index. */
|
||||||
#define TXVU_OPERAND_INDEX(op) ((op) - 128)
|
#define TXVU_OPERAND_INDEX(op) ((op) - 128)
|
||||||
|
|
||||||
|
/* VU support. */
|
||||||
|
|
||||||
/* Positions, masks, and values of various fields used in multiple places
|
/* Positions, masks, and values of various fields used in multiple places
|
||||||
(the opcode table, the disassembler, GAS). */
|
(the opcode table, the disassembler, GAS). */
|
||||||
@ -212,16 +214,11 @@ struct txvu_operand {
|
|||||||
#define TXVU_SDEST_W 3
|
#define TXVU_SDEST_W 3
|
||||||
|
|
||||||
extern const struct txvu_operand txvu_operands[];
|
extern const struct txvu_operand txvu_operands[];
|
||||||
extern const int txvu_operand_count;
|
|
||||||
extern /*const*/ struct txvu_opcode txvu_upper_opcodes[];
|
extern /*const*/ struct txvu_opcode txvu_upper_opcodes[];
|
||||||
extern /*const*/ struct txvu_opcode txvu_lower_opcodes[];
|
extern /*const*/ struct txvu_opcode txvu_lower_opcodes[];
|
||||||
extern const int txvu_upper_opcodes_count;
|
extern const int txvu_upper_opcodes_count;
|
||||||
extern const int txvu_lower_opcodes_count;
|
extern const int txvu_lower_opcodes_count;
|
||||||
|
|
||||||
/* Utility fns in txvu-opc.c. */
|
|
||||||
void txvu_opcode_init_tables PARAMS ((int));
|
|
||||||
void txvu_opcode_init_parse PARAMS ((void));
|
|
||||||
void txvu_opcode_init_print PARAMS ((void));
|
|
||||||
const struct txvu_opcode *txvu_upper_opcode_lookup_asm PARAMS ((const char *));
|
const struct txvu_opcode *txvu_upper_opcode_lookup_asm PARAMS ((const char *));
|
||||||
const struct txvu_opcode *txvu_lower_opcode_lookup_asm PARAMS ((const char *));
|
const struct txvu_opcode *txvu_lower_opcode_lookup_asm PARAMS ((const char *));
|
||||||
const struct txvu_opcode *txvu_upper_opcode_lookup_dis PARAMS ((unsigned int));
|
const struct txvu_opcode *txvu_upper_opcode_lookup_dis PARAMS ((unsigned int));
|
||||||
@ -229,7 +226,7 @@ const struct txvu_opcode *txvu_lower_opcode_lookup_dis PARAMS ((unsigned int));
|
|||||||
|
|
||||||
/* PKE support. */
|
/* PKE support. */
|
||||||
|
|
||||||
/* PKE instruction flags.
|
/* PKE opcode flags.
|
||||||
The usage here is a bit wasteful of bits, but there's enough bits
|
The usage here is a bit wasteful of bits, but there's enough bits
|
||||||
and we can always make better usage later. */
|
and we can always make better usage later. */
|
||||||
|
|
||||||
@ -247,3 +244,36 @@ const struct txvu_opcode *txvu_lower_opcode_lookup_dis PARAMS ((unsigned int));
|
|||||||
#define PKE_OPCODE_DIRECTHL 32
|
#define PKE_OPCODE_DIRECTHL 32
|
||||||
/* the unpack instruction */
|
/* the unpack instruction */
|
||||||
#define PKE_OPCODE_UNPACK 64
|
#define PKE_OPCODE_UNPACK 64
|
||||||
|
|
||||||
|
extern const struct txvu_operand pke_operands[];
|
||||||
|
extern /*const*/ struct txvu_opcode pke_opcodes[];
|
||||||
|
extern const int pke_opcodes_count;
|
||||||
|
const struct txvu_opcode *pke_opcode_lookup_asm PARAMS ((const char *));
|
||||||
|
const struct txvu_opcode *pke_opcode_lookup_dis PARAMS ((unsigned int));
|
||||||
|
|
||||||
|
/* DMA support. */
|
||||||
|
|
||||||
|
/* DMA instruction flags. */
|
||||||
|
#define DMA_FLAG_PCE0 1
|
||||||
|
#define DMA_FLAG_PCE1 2
|
||||||
|
#define DMA_FLAG_INT 4
|
||||||
|
#define DMA_FLAG_SPR 8
|
||||||
|
|
||||||
|
extern const struct txvu_operand dma_operands[];
|
||||||
|
extern /*const*/ struct txvu_opcode dma_opcodes[];
|
||||||
|
extern const int dma_opcodes_count;
|
||||||
|
const struct txvu_opcode *dma_opcode_lookup_asm PARAMS ((const char *));
|
||||||
|
const struct txvu_opcode *dma_opcode_lookup_dis PARAMS ((unsigned int));
|
||||||
|
|
||||||
|
/* GPUIF support. */
|
||||||
|
|
||||||
|
extern const struct txvu_operand gpuif_operands[];
|
||||||
|
extern /*const*/ struct txvu_opcode gpuif_opcodes[];
|
||||||
|
extern const int gpuif_opcodes_count;
|
||||||
|
const struct txvu_opcode *gpuif_opcode_lookup_asm PARAMS ((const char *));
|
||||||
|
const struct txvu_opcode *gpuif_opcode_lookup_dis PARAMS ((unsigned int));
|
||||||
|
|
||||||
|
/* Utility fns in txvu-opc.c. */
|
||||||
|
void txvu_opcode_init_tables PARAMS ((int));
|
||||||
|
void txvu_opcode_init_parse PARAMS ((void));
|
||||||
|
void txvu_opcode_init_print PARAMS ((void));
|
||||||
|
Reference in New Issue
Block a user