mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-05 23:26:51 +08:00
opcodes: constify & scope microblaze opcodes
This is exporting the variable "opcodes" as a large writable blob. This is not a namespace friendly name, so add a "microblaze" prefix, and then sprinkle const over its definition & use.
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2021-07-01 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* config/tc-microblaze.c (md_begin): Make opcode const. Rename
|
||||
opcodes to microblaze_opcodes.
|
||||
|
||||
2021-07-01 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* config/tc-aarch64.c (struct templates): Make opcode const.
|
||||
|
@ -411,12 +411,12 @@ const pseudo_typeS md_pseudo_table[] =
|
||||
void
|
||||
md_begin (void)
|
||||
{
|
||||
struct op_code_struct * opcode;
|
||||
const struct op_code_struct * opcode;
|
||||
|
||||
opcode_hash_control = str_htab_create ();
|
||||
|
||||
/* Insert unique names into hash table. */
|
||||
for (opcode = opcodes; opcode->name; opcode ++)
|
||||
for (opcode = microblaze_opcodes; opcode->name; opcode ++)
|
||||
str_hash_insert (opcode_hash_control, opcode->name, opcode, 0);
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,15 @@
|
||||
2021-07-01 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* microblaze-dis.c (get_field_special): Make op const.
|
||||
(read_insn_microblaze): Make opr & op const. Rename opcodes to
|
||||
microblaze_opcodes.
|
||||
(print_insn_microblaze): Make op & pop const.
|
||||
(get_insn_microblaze): Make op const. Rename opcodes to
|
||||
microblaze_opcodes.
|
||||
(microblaze_get_target_address): Likewise.
|
||||
* microblaze-opc.h (struct op_code_struct): Make const.
|
||||
Rename opcodes to microblaze_opcodes.
|
||||
|
||||
2021-07-01 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* aarch64-gen.c (aarch64_opcode_table): Add const.
|
||||
|
@ -111,7 +111,7 @@ get_field_imm15 (struct string_buf *buf, long instr)
|
||||
|
||||
static char *
|
||||
get_field_special (struct string_buf *buf, long instr,
|
||||
struct op_code_struct *op)
|
||||
const struct op_code_struct *op)
|
||||
{
|
||||
char *p = strbuf (buf);
|
||||
char *spr;
|
||||
@ -184,11 +184,11 @@ get_field_special (struct string_buf *buf, long instr,
|
||||
static unsigned long
|
||||
read_insn_microblaze (bfd_vma memaddr,
|
||||
struct disassemble_info *info,
|
||||
struct op_code_struct **opr)
|
||||
const struct op_code_struct **opr)
|
||||
{
|
||||
unsigned char ibytes[4];
|
||||
int status;
|
||||
struct op_code_struct * op;
|
||||
const struct op_code_struct *op;
|
||||
unsigned long inst;
|
||||
|
||||
status = info->read_memory_func (memaddr, ibytes, 4, info);
|
||||
@ -209,7 +209,7 @@ read_insn_microblaze (bfd_vma memaddr,
|
||||
abort ();
|
||||
|
||||
/* Just a linear search of the table. */
|
||||
for (op = opcodes; op->name != 0; op ++)
|
||||
for (op = microblaze_opcodes; op->name != 0; op ++)
|
||||
if (op->bit_sequence == (inst & op->opcode_mask))
|
||||
break;
|
||||
|
||||
@ -224,7 +224,7 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
|
||||
fprintf_ftype print_func = info->fprintf_func;
|
||||
void *stream = info->stream;
|
||||
unsigned long inst, prev_inst;
|
||||
struct op_code_struct *op, *pop;
|
||||
const struct op_code_struct *op, *pop;
|
||||
int immval = 0;
|
||||
bool immfound = false;
|
||||
static bfd_vma prev_insn_addr = -1; /* Init the prev insn addr. */
|
||||
@ -452,11 +452,11 @@ get_insn_microblaze (long inst,
|
||||
enum microblaze_instr_type *insn_type,
|
||||
short *delay_slots)
|
||||
{
|
||||
struct op_code_struct * op;
|
||||
const struct op_code_struct *op;
|
||||
*isunsignedimm = false;
|
||||
|
||||
/* Just a linear search of the table. */
|
||||
for (op = opcodes; op->name != 0; op ++)
|
||||
for (op = microblaze_opcodes; op->name != 0; op ++)
|
||||
if (op->bit_sequence == (inst & op->opcode_mask))
|
||||
break;
|
||||
|
||||
@ -494,12 +494,12 @@ microblaze_get_target_address (long inst, bool immfound, int immval,
|
||||
bool *targetvalid,
|
||||
bool *unconditionalbranch)
|
||||
{
|
||||
struct op_code_struct * op;
|
||||
const struct op_code_struct *op;
|
||||
long targetaddr = 0;
|
||||
|
||||
*unconditionalbranch = false;
|
||||
/* Just a linear search of the table. */
|
||||
for (op = opcodes; op->name != 0; op ++)
|
||||
for (op = microblaze_opcodes; op->name != 0; op ++)
|
||||
if (op->bit_sequence == (inst & op->opcode_mask))
|
||||
break;
|
||||
|
||||
|
@ -103,7 +103,7 @@
|
||||
|
||||
#define MAX_OPCODES 289
|
||||
|
||||
struct op_code_struct
|
||||
const struct op_code_struct
|
||||
{
|
||||
const char * name;
|
||||
short inst_type; /* Registers and immediate values involved. */
|
||||
@ -117,7 +117,7 @@ struct op_code_struct
|
||||
enum microblaze_instr instr;
|
||||
enum microblaze_instr_type instr_type;
|
||||
/* More info about output format here. */
|
||||
} opcodes[MAX_OPCODES] =
|
||||
} microblaze_opcodes[MAX_OPCODES] =
|
||||
{
|
||||
{"add", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x00000000, OPCODE_MASK_H4, add, arithmetic_inst },
|
||||
{"rsub", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x04000000, OPCODE_MASK_H4, rsub, arithmetic_inst },
|
||||
|
Reference in New Issue
Block a user