X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Fitbl-ops.h;h=c443e065462b11e41b622336d5bbd603101fcd56;hb=6be47f0c48cbd58921a25e7493ca79a6f596dffe;hp=56e1b3a92cb4a485c01ef5bba31c43090774a499;hpb=8e5c905e99f422e16eddf45d6718c0931f288a05;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/itbl-ops.h b/gas/itbl-ops.h index 56e1b3a92c..c443e06546 100644 --- a/gas/itbl-ops.h +++ b/gas/itbl-ops.h @@ -1,18 +1,39 @@ +/* itbl-ops.h + Copyright (C) 1997-2014 Free Software Foundation, Inc. + + This file is part of GAS, the GNU Assembler. + + GAS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GAS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GAS; see the file COPYING. If not, write to the Free + Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ /* External functions, constants and defines for itbl support */ +#ifdef HAVE_ITBL_CPU #include "itbl-cpu.h" +#endif -/* Defaults for definitions required by generic code */ +/* Defaults for definitions required by generic code */ #ifndef ITBL_NUMBER_OF_PROCESSORS #define ITBL_NUMBER_OF_PROCESSORS 1 #endif -#ifndef ITBL_MAX_BITPOS +#ifndef ITBL_MAX_BITPOS #define ITBL_MAX_BITPOS 31 #endif -#ifndef ITBL_TYPE +#ifndef ITBL_TYPE #define ITBL_TYPE unsigned long #endif @@ -31,45 +52,49 @@ typedef ITBL_TYPE t_insn; /* types of entries */ -typedef enum -{ +typedef enum + { e_insn, e_dreg, - e_regtype0 = e_dreg, + e_regtype0 = e_dreg, e_creg, e_greg, e_addr, - e_nregtypes = e_greg+1, + e_nregtypes = e_greg + 1, e_immed, e_ntypes, - e_invtype /* invalid type */ -} e_type; + e_invtype /* invalid type */ + } e_type; -typedef enum -{ +typedef enum + { e_p0, - e_nprocs=NUMBER_OF_PROCESSORS, - e_invproc /* invalid processor */ -} e_processor; + e_nprocs = ITBL_NUMBER_OF_PROCESSORS, + e_invproc /* invalid processor */ + } e_processor; -/* These routines are visible to the main part of the assembler */ +/* 0 means an instruction table was not specified. */ +extern int itbl_have_entries; -int itbl_parse(char* insntbl); -void itbl_init(void); -char *itbl_get_field(char **s); -unsigned long itbl_assemble(char *name, char *operands); -int itbl_disassemble(char *str, unsigned long insn); -int itbl_parse(char *tbl); /* parses insn tbl */ -unsigned long itbl_get_reg_val(char *name); -unsigned long itbl_get_val(e_processor processor, e_type type, char *name); -char *itbl_get_name(e_processor processor, e_type type, unsigned long val); - -/* These routines are called by the table parser used to build the - * dynamic list of new processor instructions and registers. */ - -struct itbl_entry *itbl_add_reg(int yyproc, int yytype, char *regname, int regnum); -struct itbl_entry *itbl_add_insn(int yyproc, char *name, unsigned long value, - int sbit, int ebit, unsigned long flags); -struct itbl_field *itbl_add_operand(struct itbl_entry *e, int yytype, - int sbit, int ebit, unsigned long flags); +/* These routines are visible to the main part of the assembler */ +int itbl_parse (char *insntbl); +void itbl_init (void); +char *itbl_get_field (char **s); +unsigned long itbl_assemble (char *name, char *operands); +int itbl_disassemble (char *str, unsigned long insn); +int itbl_parse (char *tbl); /* parses insn tbl */ +int itbl_get_reg_val (char *name, unsigned long *pval); +int itbl_get_val (e_processor processor, e_type type, char *name, + unsigned long *pval); +char *itbl_get_name (e_processor processor, e_type type, unsigned long val); + +/* These routines are called by the table parser used to build the + dynamic list of new processor instructions and registers. */ + +struct itbl_entry *itbl_add_reg (int yyproc, int yytype, + char *regname, int regnum); +struct itbl_entry *itbl_add_insn (int yyproc, char *name, + unsigned long value, int sbit, int ebit, unsigned long flags); +struct itbl_field *itbl_add_operand (struct itbl_entry * e, int yytype, + int sbit, int ebit, unsigned long flags);