aboutsummaryrefslogtreecommitdiff
path: root/sim/igen/igen.h
diff options
context:
space:
mode:
authorStan Shebs <shebs@codesourcery.com>1999-04-16 01:34:07 +0000
committerStan Shebs <shebs@codesourcery.com>1999-04-16 01:34:07 +0000
commit071ea11e85eb9d529cc5eb3d35f6247466a21b99 (patch)
tree5deda65b8d7b04d1f4cbc534c3206d328e1267ec /sim/igen/igen.h
parent1730ec6b1848f0f32154277f788fb29f88d8475b (diff)
downloadgdb-071ea11e85eb9d529cc5eb3d35f6247466a21b99.zip
gdb-071ea11e85eb9d529cc5eb3d35f6247466a21b99.tar.gz
gdb-071ea11e85eb9d529cc5eb3d35f6247466a21b99.tar.bz2
Initial creation of sourceware repository
Diffstat (limited to 'sim/igen/igen.h')
-rw-r--r--sim/igen/igen.h230
1 files changed, 0 insertions, 230 deletions
diff --git a/sim/igen/igen.h b/sim/igen/igen.h
deleted file mode 100644
index 6977e06..0000000
--- a/sim/igen/igen.h
+++ /dev/null
@@ -1,230 +0,0 @@
-/* This file is part of the program psim.
-
- Copyright (C) 1994-1998, Andrew Cagney <cagney@highland.com.au>
-
- This program 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 2 of the License, or
- (at your option) any later version.
-
- This program 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 this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
- */
-
-/* code-generation options: */
-
-typedef enum {
-
- /* Transfer control to an instructions semantic code using the the
- standard call/return mechanism */
-
- generate_calls,
-
- /* Transfer control to an instructions semantic code using
- (computed) goto's instead of the more conventional call/return
- mechanism */
-
- generate_jumps,
-
-} igen_code;
-
-typedef enum {
- nia_is_cia_plus_one,
- nia_is_void,
- nia_is_invalid,
-} igen_nia;
-
-
-
-typedef struct _igen_gen_options igen_gen_options;
-struct _igen_gen_options {
- int direct_access;
- int semantic_icache;
- int insn_in_icache;
- int conditional_issue;
- int slot_verification;
- int delayed_branch;
-
- /* If zeroing a register, which one? */
- int zero_reg;
- int zero_reg_nr;
-
- /* should multiple simulators be generated? */
- int multi_sim;
-
- /* name of the default multi-sim model */
- char *default_model;
-
- /* should the simulator support multi word instructions and if so,
- what is the max nr of words. */
- int multi_word;
-
- /* SMP? Should the generated code include SMP support (>0) and if
- so, for how many processors? */
- int smp;
-
- /* how should the next instruction address be computed? */
- igen_nia nia;
-
- /* nr of instructions in the decoded instruction cache */
- int icache;
- int icache_size;
-
- /* see above */
- igen_code code;
-};
-
-
-typedef struct _igen_trace_options igen_trace_options;
-struct _igen_trace_options {
- int rule_selection;
- int rule_rejection;
- int insn_insertion;
- int insn_expansion;
- int entries;
- int combine;
-};
-
-typedef struct _igen_name {
- char *u;
- char *l;
-} igen_name;
-typedef struct _igen_module {
- igen_name prefix;
- igen_name suffix;
-} igen_module;
-
-typedef struct _igen_module_options {
- igen_module global;
- igen_module engine;
- igen_module icache;
- igen_module idecode;
- igen_module itable;
- igen_module semantics;
- igen_module support;
-} igen_module_options;
-
-typedef struct _igen_decode_options igen_decode_options ;
-struct _igen_decode_options {
-
- /* Combine tables? Should the generator make a second pass through
- each generated table looking for any sub-entries that contain the
- same instructions. Those entries being merged into a single
- table */
- int combine;
-
- /* Instruction expansion? Should the semantic code for each
- instruction, when the oportunity arrises, be expanded according
- to the variable opcode files that the instruction decode process
- renders constant */
- int duplicate;
-
- /* Treat reserved fields as constant (zero) instead of ignoring
- their value when determining decode tables */
- int zero_reserved;
-
- /* Convert any padded switch rules into goto_switch */
- int switch_as_goto;
-
- /* Force all tables to be generated with this lookup mechanism */
- char *overriding_gen;
-};
-
-
-typedef struct _igen_warn_options igen_warn_options;
-struct _igen_warn_options {
-
- /* Issue warning about discarded instructions */
- int discard;
-
- /* Issue warning about invalid instruction widths */
- int width;
-};
-
-
-
-typedef struct _igen_options igen_options;
-struct _igen_options {
-
- /* What does the instruction look like - bit ordering, size, widths or
- offesets */
- int hi_bit_nr;
- int insn_bit_size;
- int insn_specifying_widths;
-
- /* what should global names be prefixed with? */
- igen_module_options module;
-
- /* See above for options and flags */
- igen_gen_options gen;
-
- /* See above for trace options */
- igen_trace_options trace;
-
- /* See above for include options */
- table_include *include;
-
- /* See above for decode options */
- igen_decode_options decode;
-
- /* Filter set to be used on the flag field of the instruction table */
- filter *flags_filter;
-
- /* See above for warn options */
- igen_warn_options warn;
-
- /* Be more picky about the input */
- error_func (*warning);
-
- /* Model (processor) set - like flags_filter. Used to select the
- specific ISA within a processor family. */
- filter *model_filter;
-
- /* Format name set */
- filter *format_name_filter;
-};
-
-extern igen_options options;
-
-/* default options - hopefully backward compatible */ \
-#define INIT_OPTIONS() \
-do { \
- memset (&options, 0, sizeof options); \
- memset (&options.warn, -1, sizeof (options.warn)); \
- options.hi_bit_nr = 0; \
- options.insn_bit_size = default_insn_bit_size; \
- options.insn_specifying_widths = 0; \
- options.module.global.prefix.u = ""; \
- options.module.global.prefix.l = ""; \
- /* the prefixes */ \
- options.module.engine = options.module.global; \
- options.module.icache = options.module.global; \
- options.module.idecode = options.module.global; \
- options.module.itable = options.module.global; \
- options.module.semantics = options.module.global; \
- options.module.support = options.module.global; \
- /* the suffixes */ \
- options.module.engine.suffix.l = "engine"; \
- options.module.engine.suffix.u = "ENGINE"; \
- options.module.icache.suffix.l = "icache"; \
- options.module.icache.suffix.u = "ICACHE"; \
- options.module.idecode.suffix.l = "idecode"; \
- options.module.idecode.suffix.u = "IDECODE"; \
- options.module.itable.suffix.l = "itable"; \
- options.module.itable.suffix.u = "ITABLE"; \
- options.module.semantics.suffix.l = "semantics"; \
- options.module.semantics.suffix.u = "SEMANTICS"; \
- options.module.support.suffix.l = "support"; \
- options.module.support.suffix.u = "SUPPORT"; \
- /* misc stuff */ \
- options.gen.code = generate_calls; \
- options.gen.icache_size = 1024; \
- options.warning = warning; \
-} while (0)