or1k_libsim_a_OBJECTS = $(am_or1k_libsim_a_OBJECTS) \
$(nodist_or1k_libsim_a_OBJECTS)
ppc_libigen_a_AR = $(AR) $(ARFLAGS)
-@SIM_ENABLE_ARCH_ppc_TRUE@ppc_libigen_a_DEPENDENCIES = \
+@SIM_ENABLE_ARCH_ppc_TRUE@ppc_libigen_a_DEPENDENCIES = igen/filter.o \
@SIM_ENABLE_ARCH_ppc_TRUE@ igen/filter_host.o igen/lf.o \
@SIM_ENABLE_ARCH_ppc_TRUE@ igen/misc.o
@SIM_ENABLE_ARCH_ppc_TRUE@am_ppc_libigen_a_OBJECTS = \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/dumpf.$(OBJEXT) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-decode.$(OBJEXT) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-cache.$(OBJEXT) \
-@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/filter.$(OBJEXT) \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/filter-ppc.$(OBJEXT) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-insn.$(OBJEXT) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/gen-model.$(OBJEXT) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/gen-itable.$(OBJEXT) \
@SIM_ENABLE_ARCH_m32c_TRUE@am__EXEEXT_4 = m32c/opc2c$(EXEEXT)
@SIM_ENABLE_ARCH_m68hc11_TRUE@am__EXEEXT_5 = m68hc11/gencode$(EXEEXT)
@SIM_ENABLE_ARCH_ppc_TRUE@am__EXEEXT_6 = $(PPC_IGEN) \
-@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/filter$(EXEEXT) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-cache$(EXEEXT) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-decode$(EXEEXT) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-insn$(EXEEXT)
or1k_run_OBJECTS = $(am_or1k_run_OBJECTS)
@SIM_ENABLE_ARCH_or1k_TRUE@or1k_run_DEPENDENCIES = or1k/nrun.o \
@SIM_ENABLE_ARCH_or1k_TRUE@ or1k/libsim.a $(am__DEPENDENCIES_4)
-am_ppc_filter_OBJECTS =
-ppc_filter_OBJECTS = $(am_ppc_filter_OBJECTS)
-@SIM_ENABLE_ARCH_ppc_TRUE@ppc_filter_DEPENDENCIES = ppc/filter-main.o \
-@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/libigen.a
@SIM_ENABLE_ARCH_ppc_TRUE@am_ppc_igen_OBJECTS = ppc/igen.$(OBJEXT)
ppc_igen_OBJECTS = $(am_ppc_igen_OBJECTS)
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_igen_DEPENDENCIES = ppc/libigen.a
$(m68hc11_run_SOURCES) $(mcore_run_SOURCES) \
$(microblaze_run_SOURCES) $(mips_run_SOURCES) \
$(mn10300_run_SOURCES) $(moxie_run_SOURCES) \
- $(msp430_run_SOURCES) $(or1k_run_SOURCES) \
- $(ppc_filter_SOURCES) $(ppc_igen_SOURCES) \
+ $(msp430_run_SOURCES) $(or1k_run_SOURCES) $(ppc_igen_SOURCES) \
$(ppc_ld_cache_SOURCES) $(ppc_ld_decode_SOURCES) \
$(ppc_ld_insn_SOURCES) $(ppc_run_SOURCES) $(pru_run_SOURCES) \
$(riscv_run_SOURCES) $(rl78_run_SOURCES) $(rx_run_SOURCES) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/dumpf.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-decode.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-cache.c \
-@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/filter.c \
+@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/filter-ppc.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-insn.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/gen-model.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/gen-itable.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/gen-support.c
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_libigen_a_LIBADD = \
+@SIM_ENABLE_ARCH_ppc_TRUE@ igen/filter.o \
@SIM_ENABLE_ARCH_ppc_TRUE@ igen/filter_host.o \
@SIM_ENABLE_ARCH_ppc_TRUE@ igen/lf.o \
@SIM_ENABLE_ARCH_ppc_TRUE@ igen/misc.o
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/stamp-igen ppc/hw.c ppc/hw.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/stamp-hw ppc/stamp-pk
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_IGEN_OPCODE_RULES = ppc/@sim_ppc_opcode@
-@SIM_ENABLE_ARCH_ppc_TRUE@ppc_filter_SOURCES =
-@SIM_ENABLE_ARCH_ppc_TRUE@ppc_filter_LDADD = ppc/filter-main.o ppc/libigen.a
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_ld_cache_SOURCES =
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_ld_cache_LDADD = ppc/ld-cache-main.o ppc/libigen.a
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_ld_decode_SOURCES =
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_ld_insn_LDADD = ppc/ld-insn-main.o ppc/libigen.a
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_IGEN_TOOLS = \
@SIM_ENABLE_ARCH_ppc_TRUE@ $(PPC_IGEN) \
-@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/filter \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-cache \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-decode \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-insn
ppc/$(DEPDIR)/$(am__dirstamp)
ppc/ld-cache.$(OBJEXT): ppc/$(am__dirstamp) \
ppc/$(DEPDIR)/$(am__dirstamp)
-ppc/filter.$(OBJEXT): ppc/$(am__dirstamp) \
+ppc/filter-ppc.$(OBJEXT): ppc/$(am__dirstamp) \
ppc/$(DEPDIR)/$(am__dirstamp)
ppc/ld-insn.$(OBJEXT): ppc/$(am__dirstamp) \
ppc/$(DEPDIR)/$(am__dirstamp)
or1k/run$(EXEEXT): $(or1k_run_OBJECTS) $(or1k_run_DEPENDENCIES) $(EXTRA_or1k_run_DEPENDENCIES) or1k/$(am__dirstamp)
@rm -f or1k/run$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(or1k_run_OBJECTS) $(or1k_run_LDADD) $(LIBS)
-
-ppc/filter$(EXEEXT): $(ppc_filter_OBJECTS) $(ppc_filter_DEPENDENCIES) $(EXTRA_ppc_filter_DEPENDENCIES) ppc/$(am__dirstamp)
- @rm -f ppc/filter$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(ppc_filter_OBJECTS) $(ppc_filter_LDADD) $(LIBS)
ppc/igen.$(OBJEXT): ppc/$(am__dirstamp) ppc/$(DEPDIR)/$(am__dirstamp)
@SIM_ENABLE_ARCH_ppc_FALSE@ppc/igen$(EXEEXT): $(ppc_igen_OBJECTS) $(ppc_igen_DEPENDENCIES) $(EXTRA_ppc_igen_DEPENDENCIES) ppc/$(am__dirstamp)
@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/modules.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/modules.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/dumpf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/filter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/filter-ppc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/gen-icache.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/gen-idecode.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/gen-itable.Po@am__quote@
--- /dev/null
+/* This file is part of the program psim.
+
+ Copyright (C) 1994-1995, 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 3 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, see <http://www.gnu.org/licenses/>.
+
+ */
+
+#include <string.h>
+
+#include "filter-ppc.h"
+
+int
+it_is(const char *flag,
+ const char *flags)
+{
+ int flag_len = strlen(flag);
+ while (*flags != '\0') {
+ if (!strncmp(flags, flag, flag_len)
+ && (flags[flag_len] == ',' || flags[flag_len] == '\0'))
+ return 1;
+ while (*flags != ',') {
+ if (*flags == '\0')
+ return 0;
+ flags++;
+ }
+ flags++;
+ }
+ return 0;
+}
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, see <http://www.gnu.org/licenses/>.
-
- */
-
-
-typedef struct _filter filter;
-
-/* append the filter onto the end of the list */
-
-extern filter *new_filter
-(const char *filt,
- filter *filters);
-
-
-/* returns true if the flags are non empty and some are missing from the filter list */
+ */
-extern int is_filtered_out
-(const char *flags,
- filter *filters);
+#ifndef PPC_FILTER_H
+#define PPC_FILTER_H
/* true if the flag is in the list */
(const char *flag,
const char *flags);
+#endif /* PPC_FILTER_H */
+++ /dev/null
-/* This file is part of the program psim.
-
- Copyright (C) 1994-1995, 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 3 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, see <http://www.gnu.org/licenses/>.
-
- */
-
-
-#include <stdio.h>
-
-#include <string.h>
-
-#include "misc.h"
-#include "filter.h"
-
-struct _filter {
- char *flag;
- filter *next;
-};
-
-
-filter *
-new_filter(const char *filt,
- filter *filters)
-{
- while (strlen(filt) > 0) {
- filter *new_filter;
- /* break up the filt list */
- const char *end = strchr(filt, ',');
- const char *next;
- int len;
- if (end == NULL) {
- end = strchr(filt, '\0');
- next = end;
- }
- else {
- next = end + 1;
- }
- len = end - filt;
- /* add to filter list */
- new_filter = ZALLOC(filter);
- new_filter->flag = (char*)zalloc(len + 1);
- strncpy(new_filter->flag, filt, len);
- new_filter->next = filters;
- filters = new_filter;
- filt = next;
- }
- return filters;
-}
-
-
-int
-is_filtered_out(const char *flags,
- filter *filters)
-{
- while (strlen(flags) > 0) {
- int present;
- filter *filt = filters;
- /* break the string up */
- const char *end = strchr(flags, ',');
- const char *next;
- int len;
- if (end == NULL) {
- end = strchr(flags, '\0');
- next = end;
- }
- else {
- next = end + 1;
- }
- len = end - flags;
- /* check that it is present */
- present = 0;
- filt = filters;
- while (filt != NULL) {
- if (strncmp(flags, filt->flag, len) == 0
- && strlen(filt->flag) == len) {
- present = 1;
- break;
- }
- filt = filt->next;
- }
- if (!present)
- return 1;
- flags = next;
- }
- return 0;
-}
-
-
-int
-it_is(const char *flag,
- const char *flags)
-{
- int flag_len = strlen(flag);
- while (*flags != '\0') {
- if (!strncmp(flags, flag, flag_len)
- && (flags[flag_len] == ',' || flags[flag_len] == '\0'))
- return 1;
- while (*flags != ',') {
- if (*flags == '\0')
- return 0;
- flags++;
- }
- flags++;
- }
- return 0;
-}
-
-
-#ifdef MAIN
-int
-main(int argc, char **argv)
-{
- filter *filters = NULL;
- int i;
- if (argc < 2) {
- printf("Usage: filter <flags> <filter> ...\n");
- exit (1);
- }
- /* load the filter up */
- for (i = 2; i < argc; i++)
- filters = new_filter(argv[i], filters);
- if (is_filtered_out(argv[1], filters))
- printf("fail\n");
- else
- printf("pass\n");
- return 0;
-}
-#endif
#include "table.h"
#include "filter.h"
+#include "filter-ppc.h"
#include "ld-decode.h"
#include "ld-cache.h"
#include "table.h"
#include "filter.h"
+#include "filter-ppc.h"
#include "ld-decode.h"
#include "ld-cache.h"
#include "lf-ppc.h"
#include "table.h"
#include "filter.h"
+#include "filter-ppc.h"
#include "ld-decode.h"
#include "ld-cache.h"
#include "lf-ppc.h"
#include "table.h"
#include "filter.h"
+#include "filter-ppc.h"
#include "ld-decode.h"
#include "ld-cache.h"
ASSERT(hi_bit_nr == insn_bit_size-1 || hi_bit_nr == 0);
break;
case 'F':
- filters = new_filter(optarg, filters);
+ filter_parse(&filters, optarg);
break;
case 'J':
code &= ~generate_calls;
#include "lf.h"
#include "table.h"
#include "filter.h"
+#include "filter-ppc.h"
#include "ld-decode.h"
#include "ld-cache.h"
#include "ld-insn.h"
if (file_entry->nr_fields < 4)
ERROR ("Incorrect nr fields for include record\n");
/* process it */
- if (!is_filtered_out(file_entry->fields[include_flags], filters))
+ if (!is_filtered_out(filters, file_entry->fields[include_flags]))
{
table_push (file, includes,
file_entry->fields[include_path],
}
else if ((it_is("function", file_entry->fields[insn_form])
|| it_is("internal", file_entry->fields[insn_form]))
- && !is_filtered_out(file_entry->fields[insn_flags], filters)) {
+ && !is_filtered_out(filters, file_entry->fields[insn_flags])) {
/* Ok, this is evil. Need to convert a new style function into
an old style function. Construct an old style table and then
copy it back. */
model_table_insert_specific(table, file_entry, &model_data, &last_model_data);
}
else if (it_is("include", file_entry->fields[insn_form])
- && !is_filtered_out(file_entry->fields[insn_flags], filters)) {
+ && !is_filtered_out(filters, file_entry->fields[insn_flags])) {
parse_include_entry (file, file_entry, filters, includes);
}
else if ((it_is("cache", file_entry->fields[insn_form])
|| it_is("compute", file_entry->fields[insn_form])
|| it_is("scratch", file_entry->fields[insn_form]))
- && !is_filtered_out(file_entry->fields[insn_flags], filters)) {
+ && !is_filtered_out(filters, file_entry->fields[insn_flags])) {
append_cache_rule (cache_rules,
file_entry->fields[insn_form], /* type */
file_entry->fields[cache_name],
else {
insn_fields *fields;
/* skip instructions that aren't relevant to the mode */
- if (is_filtered_out(file_entry->fields[insn_flags], filters)) {
+ if (is_filtered_out(filters, file_entry->fields[insn_flags])) {
fprintf(stderr, "Dropping %s - %s\n",
file_entry->fields[insn_name],
file_entry->fields[insn_flags]);
if (argc != 5)
ERROR("Usage: insn <filter> <hi-bit-nr> <decode-table> <insn-table>\n");
- filters = new_filter(argv[1], filters);
+ filter_parse(&filters, argv[1]);
hi_bit_nr = a2i(argv[2]);
ASSERT(hi_bit_nr < insn_bit_size);
decode_rules = load_decode_table(argv[3], hi_bit_nr);
%D%/dumpf.c \
%D%/ld-decode.c \
%D%/ld-cache.c \
- %D%/filter.c \
+ %D%/filter-ppc.c \
%D%/ld-insn.c \
%D%/gen-model.c \
%D%/gen-itable.c \
%D%/gen-idecode.c \
%D%/gen-support.c
%C%_libigen_a_LIBADD = \
+ igen/filter.o \
igen/filter_host.o \
igen/lf.o \
igen/misc.o
%D%/%-main.o: %D%/%.c
$(AM_V_CC)$(COMPILE_FOR_BUILD) -DMAIN -c $< -o $@
-%C%_filter_SOURCES =
-%C%_filter_LDADD = %D%/filter-main.o %D%/libigen.a
-
%C%_ld_cache_SOURCES =
%C%_ld_cache_LDADD = %D%/ld-cache-main.o %D%/libigen.a
%C%_IGEN_TOOLS = \
$(PPC_IGEN) \
- %D%/filter \
%D%/ld-cache \
%D%/ld-decode \
%D%/ld-insn