2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-04  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2015-06-12  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2015-04-24  David Binderman  <dcb314@hotmail.com>
	    Nick Clifton  <nickc@redhat.com>

	PR 18273
	* misc.c (a2i): Fix typos checking for uppercase letters.

2015-04-17  Mike Frysinger  <vapier@gentoo.org>

	* gen-engine.c (print_run_body): Change CIA_GET to CPU_PC_GET and
	CIA_SET to CPU_PC_SET.

2015-03-31  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2014-11-23  Joel Sherrill  <joel.sherrill@oarcorp.com>

	* igen/ld-cache.h, igen/table.h: Change immediatly to immediately.

2014-03-04  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2013-11-25  Steve Ellcey  <sellcey@mips.com>

	* igen/Makefile.in (igen): Use BUILD_CFLAGS in link.

2013-05-10  Freddie Chopin  <freddie_chopin@op.pl>

	* configure: Rebuild.

2012-03-24  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2011-10-17  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac: Change include to common/acinclude.m4.

2011-10-17  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac: Change AC_PREREQ to 2.64.  Delete AC_CONFIG_HEADER
	call.  Replace common.m4 include with SIM_AC_COMMON.
	* configure: Regenerate.

2011-07-08  Hans-Peter Nilsson  <hp@axis.com>

	* ld-insn.c (print_insn_words): For fields, print conditionals.

	Correct handling of constant named fields.
	* gen.c (insn_field_cmp): Tweak comment about neither field
	being an insn_field_string with a cond_eq-to-value condition.
	(insns_bit_useless) <case insn_field_string, case
	decode_find_mixed>: Handle cond_eq-to-value fields as
	insn_field_int.
	* gen-idecode.c (print_idecode_validate): Handle
	insn_field_string cond-equal-to-value fields as insn_field_int.
	* gen-icache.c (print_icache_body): Add comment why constant
	string fields are handled.

	Remove all #if 0'd code.
	* filter.c: Remove #if 0'd function it_is.
	(main): Remove #if 0'd code.
	* gen-engine.c: Remove #if 0'd functions print_jump,
	print_jump_insn, print_jump_definition,
	print_jump_internal_function, print_jump_body.
	(gen_engine_c): Remove #if 0'd code.
	* gen-idecode.c: Remove #if 0'd functions print_jump print_jump,
	print_jump_insn, print_jump_definition,
	print_jump_internal_function, print_jump_until_stop_body.
	* gen-model.c: Remove #if 0'd functions model_c_or_h_data,
	model_c_or_h_function, gen_model_h, model_c_insn,
	model_c_function, gen_model_c and types model_c_passed_data
	and struct _model_c_passed_data.
	* gen.c: Remove #if 0'd type constant_field_types and function
	insn_field_is_constant.
	(gen_entry_find_opcode_field): Remove #if 0'd code.
	* ld-insn.c (parse_insn_model_record): Remove #if 0'd code.
	* misc.h (STRDUP, STRNDUP): Remove #if 0'd macros.

2011-02-14  Mike Frysinger  <vapier@gentoo.org>

	* table.c (table_push): Change zfree to free.

2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* config.in: Regenerate.
	* configure: Likewise.

	* configure: Regenerate.

2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.in (datarootdir): New variable.

2008-08-28  Joel Brobecker  <brobecker@adacore.com>

	* compare_igen_models: Change license to GPL version 3.

2007-08-27  Joel Brobecker  <brobecker@adacore.com>

	* lf.c (lf_print__gnu_copyleft): Change license to GPL version 3.

2006-12-21  Hans-Peter Nilsson  <hp@axis.com>

	* acconfig.h: Remove.
	* config.in: Regenerate.

2005-01-11  Andrew Cagney  <cagney@localhost.localdomain>

	* configure.ac: Delete AC_CONFIG_AUX_DIR.
	* configure: Re-generate.

2005-01-07  Andrew Cagney  <cagney@gnu.org>

	* configure.ac: Rename configure.in, require autoconf 2.59.
	* configure: Re-generate.

2003-05-03  Chris Demetriou  <cgd@broadcom.com>

	* compare_igen_models: Tweak attribution slightly.

2002-11-22  Andrew Cagney  <cagney@redhat.com>

	* gen.c (name_cmp): Rename format_name_cmp.
	(insn_list_insert): When a merge, compare the format name and
	instruction name.  Add trace messages.

2002-11-21  Andrew Cagney  <ac131313@redhat.com>

	* filter.c: Re-indent.
	* filter.h, filter_host.h, gen-engine.c, gen-engine.h: Ditto.
	* gen-icache.c, gen-icache.h, gen-idecode.c: Ditto.
	* gen-idecode.h, gen-itable.c, gen-itable.h: Ditto.
	* gen-model.c, gen-model.h, gen-semantics.c: Ditto.
	* gen-semantics.h, gen-support.c, gen-support.h: Ditto.
	* gen.c, gen.h, igen.c, igen.h, ld-cache.c, ld-cache.h: Ditto.
	* ld-decode.c, ld-decode.h, ld-insn.c, ld-insn.h, lf.c: Ditto.
	* lf.h, misc.c, misc.h, table.c, table.h: Ditto.

2002-11-21  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in: Update copyright.  IGEN contributed to the FSF.
	* filter.c, filter.h, filter_host.c, filter_host.h: Ditto.
	* gen-engine.c, gen-engine.h, gen-icache.c, gen-icache.h: Ditto.
	* gen-idecode.c, gen-idecode.h, gen-itable.c: Ditto.
	* gen-itable.h, gen-model.c, gen-model.h, gen-semantics.c: Ditto.
	* gen-semantics.h, gen-support.c, gen-support.h, gen.c: Ditto.
	* gen.h, igen.c, igen.h, ld-cache.c, ld-cache.h: Ditto.
	* ld-decode.c, ld-decode.h, ld-insn.c, ld-insn.h, lf.c: Ditto.
	* lf.h, misc.c, misc.h, table.c, table.h: Ditto.

2002-11-06  Richard Sandiford  <rsandifo@redhat.com>

	* gen-engine.c (print_engine_issue_prefix_hook): Don't add the
	global prefix to ENGINE_ISSUE_PREFIX_HOOK.
	(print_engine_issue_postfix_hook): Likewise ENGINE_ISSUE_POSTFIX_HOOK.

2002-08-28  Dave Brolley  <brolley@redhat.com>

	* gen-support.c (gen_support_h): Generate
	'#define semantic_illegal <PREFIX>_semantic_illegal'.

2002-08-22  Chris Demetriou  <cgd@broadcom.com>

	* compare_igen_models: New script.

2002-06-17  Andrew Cagney  <cagney@redhat.com>

	* gen.c (gen_entry_expand_opcode): Initialize ``value'' to -1 and
	``t'' to NULL.
	* igen.c (main): Add default case to switch.
	* gen-icache.c (print_icache_extraction): Ditto.

2002-06-17  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (BUILD_CFLAGS): Remove -O0.

2002-06-16  Andrew Cagney  <ac131313@redhat.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

2002-06-03  Richard Henderson  <rth@redhat.com>

	* gen-engine.c (print_run_body): Avoid multi-line strings.
	* lf.c (lf_print__gnu_copyleft): Likewise.

2002-05-01  Chris Demetriou  <cgd@broadcom.com>

	* igen.c: Use 'deprecated' rather than 'depreciated.'

2002-03-23  Andrew Cagney  <ac131313@redhat.com>

 	* gen.c (format_name_cmp): New function.
	(insn_list_insert): Use the instruction field name as an
	additional key.  Different field names indicate different
	semantics.

2002-03-07  Chris Demetriou  <cgd@broadcom.com>

	* igen.c (print_itrace_format): Add support for a new "%#lx" format.

Tue May 23 21:39:23 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

2000-04-12  Frank Ch. Eigler  <fche@redhat.com>

	* gen-semantics.c (print_semantic_body): Use GPR_CLEAR(N) instead
	of GPR_SET(N,0) for gen-zero-rN.

Thu Sep  2 18:15:53 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (SIM_WARNINGS): Replace this with.
	(IGEN_WERROR_CFLAGS, IGEN_WARN_CFLAGS, WERROR_CFLAGS,
 	WARN_CFLAGS): With these.
	(BUILD_CFLAGS): Update.

	* configure: Regenerated to track ../common/aclocal.m4 changes.

1999-05-08  Felix Lee  <flee@cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Fri Dec  4 15:14:09 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (main): Fix -Pitable=.

	* gen-engine.c (print_run_body): Prefix instruction_address.

Wed Oct 28 18:12:43 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (SIM_WARNINGS): Update to match ../common/aclocal.m4
 	changes.

Wed Aug 12 10:55:28 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* gen-icache.c (print_icache_extraction): #undef a generated
 	symbol before #define'ing it, to remove conflict with system
 	macros.

Wed Jul 29 10:07:27 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen.c (gen_entry_expand_opcode): For conditional, fields.  Fix
 	the extraction of the value from its source - both table and bit
 	cases were wrong.

Tue Jul 28 11:19:43 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (parse_insn_word): For constant conditional strings,
 	encode their bit value.

	* ld-insn.c (parse_insn_word, parse_insn_words): Allow conditional
 	operands to refer to fields in earlier instruction words.

	* gen.c (sub_val): Replace field argument with val_last_pos.
	(gen_entry_expand_opcode): Look in previous tables for a value for
 	a conditional field as well as the bits from the current table.
	(insn_list_insert): Add sort key of instructions where
 	their operand fields have different conditionals.
	(insn_field_cmp): New function.

Sun Apr 26 15:31:55 1998  Tom Tromey  <tromey@creche>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Sun Apr 26 15:20:08 1998  Tom Tromey  <tromey@cygnus.com>

	* acconfig.h: New file.
	* configure.in: Reverted change of Apr 24; use sinclude again.

Fri Apr 24 14:16:40 1998  Tom Tromey  <tromey@creche>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Fri Apr 24 11:19:33 1998  Tom Tromey  <tromey@cygnus.com>

	* configure.in: Don't call sinclude.

Fri Apr 24 19:45:00 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-icache.c (print_icache_extraction): Do not type cast
 	pointers.

	* ld-insn.c (load_insn_table): Terminate error with NL.

	* gen.c (insns_bit_useless): Perform unsigned bit comparisons.

	* filter.c (is_filtered_out, filter_parse): Pacify GCC, len is
 	unsigned.

Wed Apr 22 14:27:39 1998  Michael Meissner  <meissner@cygnus.com>

	* configure: Reconfigure to pick up ../common/aclocal.m4 changes
	to suppress inlining by default.

Tue Apr 21 01:37:54 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-icache.c (print_icache_extraction): When generating #define
 	force the expression to the correct type.

Thu Apr 16 08:50:29 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* misc.c (name2i): strlen returns an unsigned.

Tue Apr 14 19:04:28 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.h (struct igen_warn_options): Add unimplemented option.
	* igen.c (main): Update

	* ld-insn.c (load_insn_table): Report unimplemented functions.

Tue Apr 14 10:57:26 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (parse_insn_word): Treat `!' and `=' as valid
 	separator tokens when parsing a conditional.

	* igen.h (main): Add option -S so that suffix can be specified.

Tue Apr 14 08:44:53 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.h (struct igen_trace_options): Add members insn_expansion
 	and insn_insertion.

	* igen.c (main): Add options -Gtrace-insn-expansion,
 	-Gtrace-insn-insertion and -Gtrace-all.

	* gen.c (gen_entry_expand_insns): Trace each instruction as it is
 	selected for expansion.
	(gen_entry_expand_opcode): Trace each expanded instruction as it
 	is inserted into the table.

Mon Apr 13 19:21:47 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (parse_insn_word): Parse conditional operators.
	(parse_insn_word): Verify field conditionals.

	* ld-insn.h: Extend syntax to allow macros and field equality.
	(struct insn_field_cond): Rename insn_field_exclusion, add type.

	* gen.c (gen_entry_expand_opcode): Check type of conditional.
	(insns_bit_useless): Ditto.

	* ld-insn.c (parse_macro_record): New function.

Mon Apr 13 22:37:47 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.h (enum insn_field_type): Add insn_field_invalid.

	* ld-insn.c (parse_insn_word): Check instruction field type
 	correctly initialized.
	(print_insn_words): Ditto.
	(insn_field_type_to_str): Ditto.
	(dump_insn_field): Ditto.

	* gen.c (insns_bit_useless): Ditto.

Fri Apr  3 18:08:16 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen.h, igen.c (print_include_inline, print_includes,
 	print_includes): New functions.  Generate include list.  For for
 	semantics et.al. generate CPP code to inline when
 	C_REVEALS_MODULE_P.

	* igen.c (gen_semantics_c): Call print_includes.
	* gen-engine.c (gen_engine_c): Ditto.

Sat Apr  4 21:09:11 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.h: (struct _igen_name_option): Replace with struct
 	igen_module_option. Contains both module prefix and suffix.
	(INIT_OPTIONS): Initialize.

	* igen.c (main): Update -P option to fill in full module info.
	(gen-engine.c, gen-icache.c, gen-itable.c, gen-semantics.c,
 	gen-support.c): Update.

Sat Apr  4 02:15:35 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_itrace): Use TRACE_ANY_P macro to determine if any
 	tracing is needed.

Thu Mar 26 20:51:23 1998  Stu Grossman  <grossman@bhuna.cygnus.co.uk>

	* table.c (table_push):  Redo, using stdio.  Fixes NT native
	problem with <CRLF>=><LF> translation...

Tue Mar 24 23:30:07 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-engine.c (print_run_body): Re-extract the CIA after
 	processing any events.

Tue Mar 24 17:46:08 1998  Stu Grossman  <grossman@bhuna.cygnus.co.uk>

	* Makefile.in:  Get SHELL from configure.
	* configure:  Regenerate with autoconf 2.12.1 to fix shell issues for
	NT native builds.

Mon Mar 16 12:51:31 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c: Pass sim_cia to trace_prefix.

Thu Feb 26 19:25:02 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (parse_function_record): Check models are valid.
	(parse_function_record): Only discard function when no model is
 	common.

Tue Feb 24 01:42:03 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-engine.c (print_run_body): Always wrap generated idecode
 	body in ENGINE_ISSUE_PREFIX_HOOK / ENGINE_ISSUE_POSTFIX_HOOK.

Fri Feb 20 16:22:10 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (parse_function_record): When -Wnodiscard, suppress
 	discarded function warning.

	* igen.c (main): Clarify -Wnodiscard.

	* ld-insn.c (parse_function_record): For functions, allow use of
 	instruction style function model records

	* ld-insn.h (nr_function_model_fields): Define.

Tue Feb 17 16:36:27 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_itrace_prefix): Generate call to trace_prefix
 	instead of trace_one_insn.
	(print_itrace): Generate trace_prefix call if any tracing enabled,
	(print_itrace): Nest generated call to trace_generic inside
 	conditional for any tracing enabled.
	(print_itrace_prefix): Do not pass PHASE to trace_prefix.

Tue Feb  3 14:00:32 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-engine.c (print_run_body): Add bitsize suffix to IMEM macro.
	* gen-icache.c (print_icache_body): Ditto.
	* gen-idecode.c (print_idecode_ifetch): Ditto.

	* gen-icache.c (print_icache_body): Mark successive instruction
 	words as unused.

	* ld-insn.c (parse_insn_word): Only report insn-width problems
 	when warning enabled.

	* igen.h: Add flag for warning about invalid instruction widths.
	* igen.c: Parse -Wwidth option.

	* gen-support.c (gen_support_h): Map instruction_word onto
 	<PREFIX>_instruction_word when needed.
	(print_support_function_name): Use support prefix.
	(gen_support_h): Ditto for <PREFIX>_idecode_issue.

Sun Feb  1 11:08:48 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-support.c (gen_support_h): Generate new macro CPU_.

Sat Jan 31 14:50:27 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-engine.c (gen_engine_h): Don't assume a model is present.
	(gen_engine_c): Ditto.

	* igen.c (gen_run_c): Ditto.

	* gen-engine.c (print_run_body): Use CIA_GET & CIA_SET instead of
 	CPU_CIA.  Parameterize with CPU argument.

Fri Jan 30 09:09:39 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen.h (struct _gen_list): Replace processor with model.

	* igen.c (gen_idecode_h): Update.
	(gen_run_c): For generated switch, use model->full_name.

	* gen.c (print_gen_entry_path): Ditto.
	(make_table):  Ditto.
	(gen_entry_expand_insns):  Ditto.
	(make_gen_tables):  Ditto.

	* igen.c (gen_run_c): Add extra argument `nr_cpus' to generated
 	function sim_engine_run.  Pass argument on to engine_run.

	* gen-engine.c (print_engine_run_function_header): Add extra
 	argument `nr_cpus' to generated function engine_run.
	(print_run_body): Fix SMP case.

	* gen-support.c (support_c_function): Call sim_engine_abort when
 	internal function fails to long jump.

Wed Jan 21 18:00:22 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-semantics.c (print_semantic_body): Use GPR_SET to zero
 	hardwired register.

Wed Dec 17 14:49:03 1997  Jeffrey A Law  (law@cygnus.com)

	* gen-semantics.c (print_semantic_body): Fix handling of
	hardwired zero register.

Tue Dec  9 12:45:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.h (struct _igen_gen_options): Add member default_model.

	* igen.c (gen_run_c): Default to the first machine in the
 	multi-sim list.
	(main): Add MODEL parameter to gen-multi-sim option.

	* gen.h (function_decl_type): Declare enum.

	* gen-engine.c (print_engine_run_function_header), gen-engine.h:
 	Make global, pass function_decl_type as argument.
	(gen_engine_h, gen_engine_c): Update call.

	* gen-idecode.c (print_idecode_issue_function_header),
 	gen-idecode.h: Pass function_decl_type as argument.

	* igen.c (gen_idecode_h): For multi-sim, delcare global variable
 	idecode_issue.

	* igen.c (gen_run_c): For multi-sim, initialize globals
 	idecode_issue and engine_run.

Fri Nov 14 10:51:44 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (parse_insn_model_record): Allow multiple model names
 	to be specified in a single instruction model record.
	(dump_insn_model_entry): Update.

	* ld-insn.h (struct _insn_model_entry): Replace member name with
 	the filter names.  Document syntax change.

Wed Nov 12 15:45:40 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-engine.c (print_run_body): Add hooks for adding code before
 	and after an instruction has been issued.

1997-11-04  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* gen-idecode.c (print_jump_until_stop_body): Use `#if 0' instead of
	`#ifdef 0' around this.

Tue Nov  4 08:18:29 1997  Michael Meissner  <meissner@cygnus.com>

	* ld-decode.c (load_decode_table): Don't assume NULL is an integer
	constant.

Wed Oct 29 13:17:17 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.h: Document mnemonic string format.

Tue Oct 28 10:50:35 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-icache.c (print_icache_extraction): Force result of atol to
 	unsigned.

	* ld-insn.c (parse_function_record): Separate handling of old and
 	ney fynction records.
	(load_insn_table): For %s record, hack function name & type after
 	it has been parsed.

	* filter.h (filter_is_subset): Reverse argument names, wrong
 	order.

	* ld-insn.c (load_insn_table): Move include code to.
	(parse_include_record): New function.  Check for filtering of
 	include statement by both flags and models.
	(load_insn_table): Check for model filtering of cache and model
 	records.
	(parse_model_data_record): Check for model & flag filtering of
 	model data records.
	(parse_function_record): Check for model & flag filtering of
 	function records.

	* ld-insn.h: Define record_filter_models_field.  Add filter-models
 	field to all but instruction records.
	(struct _function_entry, struct _cache_entry): Add models field.
	(nr_function_fields): Make parm field mandatory.

Mon Oct 27 15:14:26 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (main): Change -I option to -I<directory>.  Add optional
 	size to -Ggen-icache option.  Add -Gno-... support.

	* igen.h (struct _igen_options): Add include field.

	* ld-insn.c (enum insn_record_type, insn_type_map): Add
 	include_record.
	(load_insn_table): Call table_push when include record.

	* table.c (struct _open table, struct table): Make table object an
 	indirect ptr to the current table file.
	(current_line, new_table_entry, next_line): Make file arg type
 	open_table.
	(table_open): Use table_push.
	(table_read): Point variable file at current table, at eof, pop
 	last open table.

	* table.h, table.c (table_push): New function.

Thu Oct 16 11:03:27 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-semantics.c (print_semantic_body): Use CIA not
 	cia.ip. Escape newlines at end of generated call to
 	sim_engine_abort.

Tue Oct 14 11:13:27 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_itrace): Output line-ref to igen source file when
 	generating trace statements.
	(print_itrace_prefix, print_itrace_format): Escape newline at end
 	of each line of generated call to trace function.

Mon Oct 13 11:27:31 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-support.c (gen_support_h): Generate #define NIA. Definition
 	dependant on gen-delayed-branch mode.

	* ld-insn.c (parse_insn_mnemonic_record): Check for opening and
 	closing double quote in mnemonic field.
	(parse_option_record): Add gen-delayed-branch option.

Wed Oct  8 13:10:16 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen.c (insn_list_insert): Missing \n in warning.

	* ld-insn.c (load_insn_table): Only notify of discarded
 	instrctions when warn.discard enabled.

	* igen.h: Add option.warn.discard, default enabled.

	* igen.c (main): Add -Wnodiscard option.

	* ld-insn.c (record_type): For old record type, check the number
 	of fields is correct.
	(load_insn_table): Allow insn assembler and insn model records to
 	appear in any order.
	(parse_insn_model_record): Rename from parse_insn_model_records.
  	Parse only one record.
	(parse_insn_mnemonic_record): Rename from
 	parse_insn_mnemonic_records.  Parse only one record.

Tue Sep 23 15:52:06 1997  Felix Lee  <flee@yin.cygnus.com>

	* gen-itable.c (gen_itable_h): [nr_itable_* + 1] to avoid
 	illegal zero-sized array.
	(itable_print_set): likewise, avoid empty initializers.

Mon Sep 22 18:49:07 1997  Felix Lee  <flee@cygnus.com>

	* configure.in: i386-windows is a cross, so don't expect
 	libiberty to be there.
	* configure: updated.

Fri Sep 19 10:36:30 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_function_name): Put the format name after the
 	function / instruction name, not before.
	(print_itrace): Better format trace code.

Tue Sep 16 11:01:07 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen.c (insns_bit_useless): Don't treat string fields restricted
 	to a range of values as useless.

Mon Sep 15 15:47:21 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (gen_run_c): Handle non-multi-sim case.

	* gen-support.c (gen_support_h): Define SD_ - to replace _SD.
  	Define CIA from cia.

Thu Sep 11 10:27:39 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-semantics.c (print_semantic_body): Trace the instruction
 	after it has been validated.
	(print_semantic_body): Count the instruction using sim-profile.

Wed Sep 10 13:35:37 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-itable.c (gen_itable_h): Collect summary info on instruction
 	table when traversing it.
	(gen_itable_h): Output an enum defining the max size of each of
 	the itable string members.

Tue Sep  9 03:30:26 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (gen_run_c): New function. Generate sim_engine_run that
 	looks at the currently selected architecture.

	* gen-engine.c, gen-idecode.c: Add multi-sim support - generate
 	one engine per model.

	* gen-semantics.c, gen-icache.c gen-support.c:
 	Update.

	* ld-insn.h, ld-insn-h (load_insn_table): Rewrite.  table.h only
 	returns a line at a time.  Parse multi-word instructions.  Add
 	multi-sim support.

	* table.h, table.c: Simplify.  Only parse a single line at a time.
  	ld-insn can handle the rest.

	* filter.h, filter.c (filter_parse, filter_add, filter_is_subset,
 	filter_is_common, filter_is_member, filter_next): New filter
 	operations.
	(dump_filter): Ditto.

	* gen.h, gen.c: New file.  Takes the insn table and turns it into
 	a set of decode tables and semantic functions.

	* ld-insn.c: Copy generator code from here.
	* gen.c: To here.

Fri Aug  8 11:43:45 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* misc.h (NZALLOC): Allocate an N element array of TYPE.

	* table.h, table.c: Simplify table parser so that it only
 	understands colon delimited lines and code blocks.
	(table_read): Parse '{' ... '}' as a code block.
	(table_print_code): New function, print out a code block to file.
	(main): Add suport for standalone testing.

	* ld-insn.h, ld-insn.c:


Mon Sep  1 11:41:12 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-idecode.c (error_leaf_contains_multiple_insn): Make static.
	(print_jump_definition, print_jump, print_jump_internal_function,
 	print_jump_insn, print_jump_until_stop_body): Delete, moved to
 	sim-engine.c

	* igen.c (print_itrace_format): Delete unused variable chp.
	(gen-engine.h): Include.

	* table.c (current_file_name, current_line_entry,
 	current_line_entry): Make static.

Wed Aug  6 12:31:17 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in: Define AR_FOR_BUILD, AR_FLAGS_FOR_BUILD,
 	RANLIB_FOR_BUILD and CFLAGS_FOR_BUILD.
	* configure.in: Include simulator common/aclocal.m4.
	* configure.in: Add --enable-sim-warnings option.
	* configure: Re-generate.

	* Makefile.in: Use.

	* Makefile.in (tmp-filter): New rule.
	(igen.o, tmp-table, tmp-ld-decode, tmp-ld-cache, tmp-ld-insn,
 	ld-decode.o, ld-cache.o, ld-insn.o): Fix dependencies.

	* gen.h, gen.c: New files.

	* Makefile.in (gen.o, tmp-gen): New rules, update all
 	dependencies.

Tue Jun 24 11:46:45 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (load_insn_table): Accept %s as a function type.

Thu Jun  5 17:14:32 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_itrace_prefix): Move printing of insn prefix to
 	here.
	(print_itrace_format): Drop printing of MY_NAME in instruction
 	trace.  Printing of insn prefix moved.
	(print_itrace): Ditto.

Fri May 30 11:27:37 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-icache.c (print_icache_function_header): Pass
 	table_line_entry instead of separate file and line.

	* table.c (table_entry_read): Set assembler source file/line-nr to
 	the current not initial file.
	(table_entry_read): Fix line numbering of source files.

	table.h (table_line_entry): New structure.  Exactly specifies a
 	source file/line-nr.
	(table_*_entry): Add this to all.

	table.c (table_entry_print_cpp_line_nr): Change to use values from
 	a table_line_entry struct.
	(table_entry_read): Save table_line_entry in all structures read.

	gen-icache.c, gen-support.c, gen-idecode.c, gen-semantics.c,
 	gen-model.c: Update all references.

Thu May 29 10:29:57 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_my_defines): Define MY_NAME - a string.  For
 	MY_PREFIX, undefine the name of the function incase some dumb
 	header defined it.  it.
	(print_itrace): Use MY_NAME not MY_PREFIX.

	* lf.c (lf_write): New function write an N character buffer to the
 	file.

	* igen.c (print_itrace): When available, use the assembler to
 	print the insn-trace.
	(print_itrace_prefix): New function, print first part of call to
 	print_one_insn.
	(print_itrace_format): New function, print fmt argument for
 	print_one_insn.

	* table.c (table_entry_read): Save any assembler lines instead of
 	discarding them.

Wed May 28 09:55:29 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-icache.c (print_icache_body): Process immeds.

	* gen-semantics.c (print_semantic_body): When computing NIA, skip
 	any immed words that follow the instruction word.

	* ld-insn.c (parse_insn_format): Parse immeds appended to an
 	instruction.

	* igen.c (main): Allow any register to be specified as the zero
 	register.
	(semantic_zero_reg): Global, index to zero register.

	* gen-semantics.c (print_semantic_body): Zero selected register.

Tue May 27 14:12:32 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.h: Stop options and code gen type bit masks overlaping.

Fri May 23 12:01:08 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-semantics.c (print_semantic_body): Incorrect test for
 	zero-r0 code.

Fri May 16 14:32:31 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-semantics.c (print_semantic_body): Use common sim-engine
 	interface.

Fri May 16 11:48:30 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-semantics.c (print_semantic_body): Add code to clear r0.

	* igen.c (main): Add new option zero-r0, which adds code to clear
 	GPR(0) each cycle.

Wed May  7 12:31:30 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_itrace): Fix so line-nr is passed to trace
 	function.

	* gen-idecode.c (print_idecode_validate): Correct FP code.

	* gen-support.c (gen_support_h): Always pass MY_INDEX to support
 	functions.
	(print_support_function_name): Ditto.

Tue May  6 06:12:04 1997  Mike Meissner  <meissner@cygnus.com>

	* igen.c (print_itrace): Call trace_one_insn to trace
	instructions, rather than doing it directly.

Mon May  5 14:11:46 1997  Mike Meissner  <meissner@cygnus.com>

	* gen-engine.c (engine_switch_leaf): Remove extra %s.
	(print_engine_floating_point_unavailable): Wrap in #ifdef
	UNUSED/#endif, until somebody uses it.

	* gen-idecode.c (error_leaf_contains_multiple_insn): Remove unused
	variable.
	(print_jump_until_stop_body): Wrap in #ifdef UNUSED/#endif, until
	somebody uses it.
	(print_idecode_validate): Use long formats to print long values.

	* gen-semantics.c (print_idecode_invalid): Set name to "unknown"
	if we get an unexpected type.

Fri May  2 13:28:06 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_itrace): Pass SD as well as CPU to calls to
 	trace_printf.

	* gen-support.c (gen_support_h): Always pass sim_cia cia to
 	support functions.
	(print_support_function_name): Ditto.

Wed Apr 30 17:35:51 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-support.c (support_c_function): Remove unnecessary memset of
 	cia.
  	* gen-semantics.c (print_semantic_body): Wasn't closing
 	generated comment.

Tue Apr 29 11:11:12 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (load_insn_table): Report instructions that do not
 	have at least a format and name.
	(insn_table_find_opcode_field): Check progress is being made.

	* gen-support.c (support_c_function): Report empty function body.

Thu Apr 24 11:43:45 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (insn_table_expand_opcode): Allow reserved fields to
 	be broken up.
	(insn_table_expand_insns): Allow special rules to apply to groups
 	of instructions when all members of the group match the special
 	mask/value.

	* gen-semantics.c (print_c_semantic): Ditto.
	* igen.c (print_semantic_function_formal): Ditto.
	(print_semantic_function_type): Ditto.
	* igen.c (print_icache_function_formal): Ditto.
	* gen-idecode.c (print_idecode_issue_function_body): Ditto.

	* gen-idecode.c (gen_idecode_h): Prepend the global_prefix to the
 	instruction_address type.

	* gen-semantics.c (print_semantic_body): Call cpu_error when an
 	unimplemented instruction is encountered - gives the interpreter
 	the chance to stop correctly.

Wed Apr 23 20:06:36 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_function_name): Allow dot's in instruction names.

Tue Apr 22 21:46:28 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (main), igen.h: Support new option - delayed-branch -
 	generate code to drive a delayed branch processor.

	* gen-idecode.c (gen_idecode_h): Define instruction_address type.

	* igen.c (print_icache_function_formal): Replace address_word with
 	instruction_address.
	(print_semantic_function_formal): Ditto.
	(print_semantic_function_type): Ditto.
	* gen-idecode.c (print_idecode_issue_function_body): Ditto.

	* gen-semantics.c (print_semantic_body): Ditto.
	(print_c_semantic): Ditto.

	* gen-support.c (support_c_function): Return a zeroed CIA instead
 	of just zero - works with any cia type.

	* igen.c (print_itrace): For delayed branch case, print just the
 	current instruction.

Thu Apr 17 07:02:33 1997  Doug Evans  <dje@canuck.cygnus.com>

	* igen.c (print_itrace): Use TRACE_FOO_P and trace_printf.

Tue Apr 15 15:20:31 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (INSTALL): Set to @INSTALL@.
	(INSTALL_XFORM, INSTALL_XFORM1): Remove.

Mon Apr 14 16:29:34 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (INSTALL): Change install.sh to install-sh.

Wed Apr  2 18:51:20 1997  Doug Evans  <dje@canuck.cygnus.com>

	* gen-support.c (gen_support_c): sim-state.h renamed to sim-main.h.
	* gen-idecode.c (gen_idecode_c): Likewise.
	* igen.c (gen_semantics_c): Likewise.

Mon Mar 24 10:10:08 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* gen-icache.c (print_icache_body): No longer define cpu/sd,
 	support.h now defines CPU/SD globally.

	* gen-model.c (gen_model_h): Ditto.

	* gen-idecode.c (print_idecode_issue_function_body): Ditto.
	(print_jump): Ditto.
	(print_jump_until_stop_body): Ditto.
	(print_idecode_validate): Ditto.

	* gen-icache.c (print_icache_body): Ditto.

	* gen-semantics.c (print_semantic_body): Ditto.

	* igen.c (print_semantic_function_formal): Rename cpu to sim_cpu,
 	processor to cpu.
	(print_icache_function_formal): Ditto.

	* gen-support.c (print_support_function_name): Include sd/cpu arg
 	in support function argument list.
	(support_c_function): Generate code to cpu/sd from sd/cpu.
	(gen_support_h): Define _SD the argument prefix for all support
 	functions.  Define SD/CPU to determine sd/cpu from value of _SD
	macro.

Tue Mar 18 15:52:24 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* gen-support.c (gen_support_c): Update for renaming of engine to
 	sim-state.

	* igen.c: Ditto.
	* gen-idecode.c (gen_idecode_c): Ditto.

Mon Mar 17 15:17:07 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* ld-decode.c (load_decode_table): Rename slash to reserved.
	(dump_decode_rule): Ditto.

	* ld-insn.c (parse_insn_format): Differentiate between a `/' -
 	reserved bit - and a `*' - wild card.
	(parse_insn_format): Change is_slash to more informative reserved.
	(dump_insn_field): Ditto.
	(insn_field_is_constant): Ditto.
	(insn_table_expand_opcode): Ditto.

	* gen-idecode.c (print_idecode_validate): Make check_mask and
 	check_val the correct integer size.
	(print_idecode_validate): Fix reserved bit check for 64 bit
 	targets.

Fri Mar 14 11:24:06 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* ld-insn.c (parse_insn_format): Accept '*' as an alternative of
 	`/' in bit fields.  `/' denotes a wild bit.

Fri Mar  7 18:20:38 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* igen.h, igen.c (main): New options. Control generation of
 	conditional issue and slot verification code.

Fri Mar  7 18:17:25 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* gen-support.c (print_support_function_name): Prepend the global
 	name prefix when applicable.  Provide #define to map the user
 	specified name the generated globaly unique one.

Fri Mar  7 18:07:45 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* gen-idecode.c (print_idecode_validate): Wrap each of the checks
 	- reserved bits, floating point and slot validation - with a
 	#ifdef so that they are optional.

Fri Mar  7 16:35:13 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* gen-idecode.c (error_leaf_contains_multiple_insn): New function
 	- report the error of a leaf node in the decision tree containing
 	several instructions.
	(print_idecode_table_leaf): Detect a leaf with multiple instructions.
	(print_idecode_switch_leaf): Ditto.

	* gen-semantics.h, gen-semantics.c (print_idecode_illegal,
 	print_idecode_invalid): Rename former to latter.  Add argument so
 	that one function can generate all invalid instruction cases -
 	illegal, fp-unavailable, wrong-slot.
	* gen-engine.c: Update.

	* gen-idecode.c: Use print_idecode_invalid to generate a function
 	call for cases when fp-unavailable and the slot is wrong.

	* gen-idecode.c (print_idecode_validate): New check, generate code
 	to verify that the instruction slot is correct.

	* igen.c (main): Simplify options.

Wed Mar  5 09:55:55 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* igen.c (print_itrace): Remove source line reference for trace
 	code - let the user see the generated file.
	(print_itrace): Print the trace code rather than reference a
	macro.

Tue Mar  4 17:31:55 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* igen.c (print_semantic_function_actual): Pass either the
 	processor - smp - or the engine - mono - into semantic functions.
  	Don't pass in both.

	* gen-icache.c (print_icache_body): Dependant on smp, derive
 	processor from engine or engine from processor, and hence ensuring
 	that both are defined in all semantic functions.

Mon Mar  3 17:11:21 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* ld-insn.c (parse_insn_format): Make the width field optional.
  	If missing assume that the number of characters in the value
 	determines the number of bits in the field.

Thu Feb 27 11:27:48 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* ld-insn.c (insn_table_expand_opcode): Replace assertion with
 	more useful error message.

Tue Feb 25 16:43:27 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* misc.c (error): Output errors on stderr.

	* ld-insn.c (parse_insn_format): Skip any leading spaces.
  	Verify the width of instructions being parsed.

	* table.c (table_entry_read): Parse CPP's convention for
 	specifying original file name/line-nr.

Wed Feb 19 12:30:28 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* ld-insn.c (parse_insn_format): Allow trailing spaces in
 	instruction fields.

	* Makefile.in: Create using ../ppc/Makefile.in as a starting
 	point.
	* configure.in: Ditto vis ../ppc/configure.in

Mon Feb 17 10:44:18 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* gen-support.c (gen_support_c): Always include engine.h instead
 	of cpu.h
	* gen-idecode.c (gen_idecode_c): Ditto.

	* words.h (instruction_word): Remove instruction_word - now
 	generated by igen.
	(address_word): New.  Used by igen.

	* lf.c (lf_print_function_type_function): New, pass a function to
 	print out the type instead of a constant string.

	* igen.h, igen.c (print_semantic_function_formal,
 	SEMANTIC_FUNCTION_FORMAL): Relace macro with function.
	(print_semantic_function_actual, SEMANTIC_FUNCTION_ACTUAL): Ditto.
	(print_semantic_function_type, SEMANTIC_FUNCTION_TYPE): Ditto.
	(print_icache_function_type, ICACHE_FUNCTION_TYPE): Ditto.
	(print_icache_function_formal, ICACHE_FUNCTION_FORMAL): Ditto.
	(print_icache_function_actual, ICACHE_FUNCTION_ACTUAL): Ditto.
	* gen-idecode.c (print_idecode_table): Update.
	(idecode_switch_leaf): Update.
	(print_idecode_switch_function_header): Ditto.
	(print_idecode_floating_point_unavailable): Ditto.
	(print_idecode_issue_function_header): Ditto.
	* igen.c (gen_icache_h): Ditto.
	* gen-engine.c (print_engine_table): Ditto.
	(engine_switch_leaf): Ditto.
	* gen-support.c (print_support_function_name): Ditto.
	* gen-semantics.c (print_semantic_function_header): Update.
	Update.
	* gen-icache.c (print_icache_function_header): Update.
	(print_icache_function): Update.
	(print_icache_internal_function_declaration): Update.
	(print_icache_internal_function_definition): Update.

	* gen-idecode.c (gen_idecode_h): Drop including of idecode_*.h
 	files, will at some stage need to move it into support.

	* igen.h, igen.c (main): New option -e <engine> - generate a full
 	simulation engine.  Previously this was the -d <idecode-file>
 	option.
	* gen-engine.h, gen-engine.c: Copies of gen-idecode.*.  Will need
 	to clean these up so that that call upon the updated gen-idecode
	code.

	* gen-idecode.h, gen-idecode.c: Prune out any code not relevant to
 	generating a decode table.

	* Makefile.in (igen): Add dependencies for new gen-engine.* files.

	* igen.h, igen.c (main): New option -M - Control what is returned
 	by semantic functions - -1/NIA vs CIA+N/NIA.  Add
 	generate_semantic_returning_modified_nia_only to igen_code enum.
	* gen-semantics.c (print_semantic_body): As an alternative, make
 	NIA == -1 instead of CIA+insn_size by default.

	* igen.h, igen.c (main, global_name_prefix, global_uname_prefix):
 	New option -P <prefix> - Prepend all generated functions with the
 	specified prefix.
	(gen_idecode_c): Adjust.
	* gen-icache.c (print_icache_struct): Ditto.
	* gen-support.c (gen_support_c): Ditto.

Sun Feb 16 15:23:15 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* igen.c (main): Correct usage. Missleading message about ucase
 	options dumping internal tables.  -F now includes rather then
 	excludes instructions.

	* misc.h, misc.c (a2i): Make 64bit.

	* ld-insn.h (max_insn_bit_size, default_insn_bit_size): Increase
 	max to 64bits, expect trouble.  Make the default 32 bits.
	* gen-idecode.c (print_idecode_table): Change EXTRACTED*
 	et.al. macro's to use the insn_bit_size instead of assuming 32
 	bits.
	* gen-icache.c (print_icache_extraction): Ditto.
	* gen-idecode.c (idecode_switch_start): Ditto.
	* gen-idecode.c (gen_idecode_c): Ditto

	* igen.h (insn_specifying_widths), igen.c (main): New option -W.
  	Indicates that the instruction field of the table is specifying
 	bit widths instead of bit offsets.
	* ld-insn.c (parse_insn_format): Parse instruction fields
 	specifying widths.

	* misc.c (a2i): Allow binary numbers to be specified using the
 	syntax 0bNNNN.
	* ld-insn.c: Allow such numbers to appear in the instruction
 	format.

	* table.c (table_entry_read): Make // a valid comment character.
	(table_entry_read): Skip lines containing a leading " - these may
 	eventually be used in a disasembler.

Fri Feb 14 15:23:15 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* filter.c, filter.h, gen-engine.c, gen-engine.h, gen-icache.c,
 	gen-icache.h, gen-idecode.c, gen-idecode.h, gen-itable.c,
 	gen-itable.h, gen-model.c, gen-model.h, gen-semantics.c,
 	gen-semantics.h, gen-support.c, gen-support.h, igen.c, igen.h,
 	ld-cache.c, ld-cache.h, ld-decode.c, ld-decode.h, ld-insn.c,
 	ld-insn.h, lf.c, lf.h, misc.c, misc.h, table.c, table.h: Copy in
 	from the ../ppc directory.

	* filter_host.c, filter_host.h: Copy in from the ../ppc directory
 	renaming from filter_filename.[hc]
