Convert cgen to C-90

This commit is contained in:
Michael Meissner
2003-08-08 21:21:24 +00:00
parent a685700c57
commit 10e05405ac
9 changed files with 429 additions and 397 deletions

View File

@@ -27,19 +27,18 @@
#include "symcat.h"
#include "opcode/cgen.h"
static CGEN_INSN_LIST * hash_insn_array PARAMS ((CGEN_CPU_DESC, const CGEN_INSN *, int, int, CGEN_INSN_LIST **, CGEN_INSN_LIST *));
static CGEN_INSN_LIST * hash_insn_list PARAMS ((CGEN_CPU_DESC, const CGEN_INSN_LIST *, CGEN_INSN_LIST **, CGEN_INSN_LIST *));
static void build_dis_hash_table PARAMS ((CGEN_CPU_DESC));
static int count_decodable_bits PARAMS ((const CGEN_INSN *));
static void add_insn_to_hash_chain PARAMS ((CGEN_INSN_LIST *,
const CGEN_INSN *,
CGEN_INSN_LIST **,
unsigned int));
static CGEN_INSN_LIST * hash_insn_array (CGEN_CPU_DESC, const CGEN_INSN *, int, int, CGEN_INSN_LIST **, CGEN_INSN_LIST *);
static CGEN_INSN_LIST * hash_insn_list (CGEN_CPU_DESC, const CGEN_INSN_LIST *, CGEN_INSN_LIST **, CGEN_INSN_LIST *);
static void build_dis_hash_table (CGEN_CPU_DESC);
static int count_decodable_bits (const CGEN_INSN *);
static void add_insn_to_hash_chain (CGEN_INSN_LIST *,
const CGEN_INSN *,
CGEN_INSN_LIST **,
unsigned int);
/* Return the number of decodable bits in this insn. */
static int
count_decodable_bits (insn)
const CGEN_INSN *insn;
count_decodable_bits (const CGEN_INSN *insn)
{
unsigned mask = CGEN_INSN_BASE_MASK (insn);
int bits = 0;
@@ -54,11 +53,10 @@ count_decodable_bits (insn)
/* Add an instruction to the hash chain. */
static void
add_insn_to_hash_chain (hentbuf, insn, htable, hash)
CGEN_INSN_LIST *hentbuf;
const CGEN_INSN *insn;
CGEN_INSN_LIST **htable;
unsigned int hash;
add_insn_to_hash_chain (CGEN_INSN_LIST *hentbuf,
const CGEN_INSN *insn,
CGEN_INSN_LIST **htable,
unsigned int hash)
{
CGEN_INSN_LIST *current_buf;
CGEN_INSN_LIST *previous_buf;
@@ -100,13 +98,12 @@ add_insn_to_hash_chain (hentbuf, insn, htable, hash)
list and we want earlier ones to be prefered. */
static CGEN_INSN_LIST *
hash_insn_array (cd, insns, count, entsize, htable, hentbuf)
CGEN_CPU_DESC cd;
const CGEN_INSN * insns;
int count;
int entsize ATTRIBUTE_UNUSED;
CGEN_INSN_LIST ** htable;
CGEN_INSN_LIST * hentbuf;
hash_insn_array (CGEN_CPU_DESC cd,
const CGEN_INSN * insns,
int count,
int entsize ATTRIBUTE_UNUSED,
CGEN_INSN_LIST ** htable,
CGEN_INSN_LIST * hentbuf)
{
int big_p = CGEN_CPU_ENDIAN (cd) == CGEN_ENDIAN_BIG;
int i;
@@ -141,11 +138,10 @@ hash_insn_array (cd, insns, count, entsize, htable, hentbuf)
in a list. */
static CGEN_INSN_LIST *
hash_insn_list (cd, insns, htable, hentbuf)
CGEN_CPU_DESC cd;
const CGEN_INSN_LIST *insns;
CGEN_INSN_LIST **htable;
CGEN_INSN_LIST *hentbuf;
hash_insn_list (CGEN_CPU_DESC cd,
const CGEN_INSN_LIST *insns,
CGEN_INSN_LIST **htable,
CGEN_INSN_LIST *hentbuf)
{
int big_p = CGEN_CPU_ENDIAN (cd) == CGEN_ENDIAN_BIG;
const CGEN_INSN_LIST *ilist;
@@ -177,8 +173,7 @@ hash_insn_list (cd, insns, htable, hentbuf)
/* Build the disassembler instruction hash table. */
static void
build_dis_hash_table (cd)
CGEN_CPU_DESC cd;
build_dis_hash_table (CGEN_CPU_DESC cd)
{
int count = cgen_insn_count (cd) + cgen_macro_insn_count (cd);
CGEN_INSN_TABLE *insn_table = & cd->insn_table;
@@ -233,10 +228,7 @@ build_dis_hash_table (cd)
/* Return the first entry in the hash list for INSN. */
CGEN_INSN_LIST *
cgen_dis_lookup_insn (cd, buf, value)
CGEN_CPU_DESC cd;
const char * buf;
CGEN_INSN_INT value;
cgen_dis_lookup_insn (CGEN_CPU_DESC cd, const char * buf, CGEN_INSN_INT value)
{
unsigned int hash;