Browse Source

sim: ppc: unify igen filter modules

The common igen code was forked from the ppc long ago.  The filter
module is still pretty similar in API, so we can unfork them with
a little bit of effort.

The filter.c module is still here because of the unique it_is API.
The common igen code doesn't seem to have an equiv API as this only
operates on two strings and not an actual filter object, and it's
easy enough to leave behind to unfork the rest.
binutils-2_42-branch
Mike Frysinger 2 years ago
parent
commit
086d7dbb2e
  1. 26
      sim/Makefile.in
  2. 41
      sim/ppc/filter-ppc.c
  3. 23
      sim/ppc/filter-ppc.h
  4. 141
      sim/ppc/filter.c
  5. 1
      sim/ppc/gen-icache.c
  6. 1
      sim/ppc/gen-idecode.c
  7. 1
      sim/ppc/gen-semantics.c
  8. 1
      sim/ppc/gen-support.c
  9. 2
      sim/ppc/igen.c
  10. 13
      sim/ppc/ld-insn.c
  11. 7
      sim/ppc/local.mk

26
sim/Makefile.in

@ -812,7 +812,7 @@ or1k_libsim_a_AR = $(AR) $(ARFLAGS)
or1k_libsim_a_OBJECTS = $(am_or1k_libsim_a_OBJECTS) \ or1k_libsim_a_OBJECTS = $(am_or1k_libsim_a_OBJECTS) \
$(nodist_or1k_libsim_a_OBJECTS) $(nodist_or1k_libsim_a_OBJECTS)
ppc_libigen_a_AR = $(AR) $(ARFLAGS) 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/filter_host.o igen/lf.o \
@SIM_ENABLE_ARCH_ppc_TRUE@ igen/misc.o @SIM_ENABLE_ARCH_ppc_TRUE@ igen/misc.o
@SIM_ENABLE_ARCH_ppc_TRUE@am_ppc_libigen_a_OBJECTS = \ @SIM_ENABLE_ARCH_ppc_TRUE@am_ppc_libigen_a_OBJECTS = \
@ -821,7 +821,7 @@ ppc_libigen_a_AR = $(AR) $(ARFLAGS)
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/dumpf.$(OBJEXT) \ @SIM_ENABLE_ARCH_ppc_TRUE@ ppc/dumpf.$(OBJEXT) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-decode.$(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/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/ld-insn.$(OBJEXT) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/gen-model.$(OBJEXT) \ @SIM_ENABLE_ARCH_ppc_TRUE@ ppc/gen-model.$(OBJEXT) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/gen-itable.$(OBJEXT) \ @SIM_ENABLE_ARCH_ppc_TRUE@ ppc/gen-itable.$(OBJEXT) \
@ -933,7 +933,6 @@ am__EXEEXT_1 = $(IGEN) igen/filter$(EXEEXT) igen/gen$(EXEEXT) \
@SIM_ENABLE_ARCH_m32c_TRUE@am__EXEEXT_4 = m32c/opc2c$(EXEEXT) @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_m68hc11_TRUE@am__EXEEXT_5 = m68hc11/gencode$(EXEEXT)
@SIM_ENABLE_ARCH_ppc_TRUE@am__EXEEXT_6 = $(PPC_IGEN) \ @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-cache$(EXEEXT) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-decode$(EXEEXT) \ @SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-decode$(EXEEXT) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-insn$(EXEEXT) @SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-insn$(EXEEXT)
@ -1148,10 +1147,6 @@ am_or1k_run_OBJECTS =
or1k_run_OBJECTS = $(am_or1k_run_OBJECTS) or1k_run_OBJECTS = $(am_or1k_run_OBJECTS)
@SIM_ENABLE_ARCH_or1k_TRUE@or1k_run_DEPENDENCIES = or1k/nrun.o \ @SIM_ENABLE_ARCH_or1k_TRUE@or1k_run_DEPENDENCIES = or1k/nrun.o \
@SIM_ENABLE_ARCH_or1k_TRUE@ or1k/libsim.a $(am__DEPENDENCIES_4) @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) @SIM_ENABLE_ARCH_ppc_TRUE@am_ppc_igen_OBJECTS = ppc/igen.$(OBJEXT)
ppc_igen_OBJECTS = $(am_ppc_igen_OBJECTS) ppc_igen_OBJECTS = $(am_ppc_igen_OBJECTS)
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_igen_DEPENDENCIES = ppc/libigen.a @SIM_ENABLE_ARCH_ppc_TRUE@ppc_igen_DEPENDENCIES = ppc/libigen.a
@ -1311,8 +1306,7 @@ SOURCES = $(aarch64_libsim_a_SOURCES) \
$(m68hc11_run_SOURCES) $(mcore_run_SOURCES) \ $(m68hc11_run_SOURCES) $(mcore_run_SOURCES) \
$(microblaze_run_SOURCES) $(mips_run_SOURCES) \ $(microblaze_run_SOURCES) $(mips_run_SOURCES) \
$(mn10300_run_SOURCES) $(moxie_run_SOURCES) \ $(mn10300_run_SOURCES) $(moxie_run_SOURCES) \
$(msp430_run_SOURCES) $(or1k_run_SOURCES) \ $(msp430_run_SOURCES) $(or1k_run_SOURCES) $(ppc_igen_SOURCES) \
$(ppc_filter_SOURCES) $(ppc_igen_SOURCES) \
$(ppc_ld_cache_SOURCES) $(ppc_ld_decode_SOURCES) \ $(ppc_ld_cache_SOURCES) $(ppc_ld_decode_SOURCES) \
$(ppc_ld_insn_SOURCES) $(ppc_run_SOURCES) $(pru_run_SOURCES) \ $(ppc_ld_insn_SOURCES) $(ppc_run_SOURCES) $(pru_run_SOURCES) \
$(riscv_run_SOURCES) $(rl78_run_SOURCES) $(rx_run_SOURCES) \ $(riscv_run_SOURCES) $(rl78_run_SOURCES) $(rx_run_SOURCES) \
@ -2997,7 +2991,7 @@ testsuite_common_CPPFLAGS = \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/dumpf.c \ @SIM_ENABLE_ARCH_ppc_TRUE@ ppc/dumpf.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-decode.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/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/ld-insn.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/gen-model.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-itable.c \
@ -3007,6 +3001,7 @@ testsuite_common_CPPFLAGS = \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/gen-support.c @SIM_ENABLE_ARCH_ppc_TRUE@ ppc/gen-support.c
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_libigen_a_LIBADD = \ @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/filter_host.o \
@SIM_ENABLE_ARCH_ppc_TRUE@ igen/lf.o \ @SIM_ENABLE_ARCH_ppc_TRUE@ igen/lf.o \
@SIM_ENABLE_ARCH_ppc_TRUE@ igen/misc.o @SIM_ENABLE_ARCH_ppc_TRUE@ igen/misc.o
@ -3046,8 +3041,6 @@ testsuite_common_CPPFLAGS = \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/stamp-igen ppc/hw.c ppc/hw.h \ @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/stamp-hw ppc/stamp-pk
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_IGEN_OPCODE_RULES = ppc/@sim_ppc_opcode@ @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_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_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_decode_SOURCES =
@ -3056,7 +3049,6 @@ testsuite_common_CPPFLAGS = \
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_ld_insn_LDADD = ppc/ld-insn-main.o ppc/libigen.a @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_TOOLS = \
@SIM_ENABLE_ARCH_ppc_TRUE@ $(PPC_IGEN) \ @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-cache \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-decode \ @SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-decode \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-insn @SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-insn
@ -3756,7 +3748,7 @@ ppc/ld-decode.$(OBJEXT): ppc/$(am__dirstamp) \
ppc/$(DEPDIR)/$(am__dirstamp) ppc/$(DEPDIR)/$(am__dirstamp)
ppc/ld-cache.$(OBJEXT): ppc/$(am__dirstamp) \ ppc/ld-cache.$(OBJEXT): ppc/$(am__dirstamp) \
ppc/$(DEPDIR)/$(am__dirstamp) ppc/$(DEPDIR)/$(am__dirstamp)
ppc/filter.$(OBJEXT): ppc/$(am__dirstamp) \ ppc/filter-ppc.$(OBJEXT): ppc/$(am__dirstamp) \
ppc/$(DEPDIR)/$(am__dirstamp) ppc/$(DEPDIR)/$(am__dirstamp)
ppc/ld-insn.$(OBJEXT): ppc/$(am__dirstamp) \ ppc/ld-insn.$(OBJEXT): ppc/$(am__dirstamp) \
ppc/$(DEPDIR)/$(am__dirstamp) ppc/$(DEPDIR)/$(am__dirstamp)
@ -4038,10 +4030,6 @@ msp430/run$(EXEEXT): $(msp430_run_OBJECTS) $(msp430_run_DEPENDENCIES) $(EXTRA_ms
or1k/run$(EXEEXT): $(or1k_run_OBJECTS) $(or1k_run_DEPENDENCIES) $(EXTRA_or1k_run_DEPENDENCIES) or1k/$(am__dirstamp) or1k/run$(EXEEXT): $(or1k_run_OBJECTS) $(or1k_run_DEPENDENCIES) $(EXTRA_or1k_run_DEPENDENCIES) or1k/$(am__dirstamp)
@rm -f or1k/run$(EXEEXT) @rm -f or1k/run$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(or1k_run_OBJECTS) $(or1k_run_LDADD) $(LIBS) $(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) 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) @SIM_ENABLE_ARCH_ppc_FALSE@ppc/igen$(EXEEXT): $(ppc_igen_OBJECTS) $(ppc_igen_DEPENDENCIES) $(EXTRA_ppc_igen_DEPENDENCIES) ppc/$(am__dirstamp)
@ -4216,7 +4204,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/modules.Po@am__quote@ @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@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)/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-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-idecode.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/gen-itable.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/gen-itable.Po@am__quote@

41
sim/ppc/filter-ppc.c

@ -0,0 +1,41 @@
/* 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;
}

23
sim/ppc/filter.h → sim/ppc/filter-ppc.h

@ -11,28 +11,14 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, see <http://www.gnu.org/licenses/>. 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 #ifndef PPC_FILTER_H
(const char *flags, #define PPC_FILTER_H
filter *filters);
/* true if the flag is in the list */ /* true if the flag is in the list */
@ -40,3 +26,4 @@ extern int it_is
(const char *flag, (const char *flag,
const char *flags); const char *flags);
#endif /* PPC_FILTER_H */

141
sim/ppc/filter.c

@ -1,141 +0,0 @@
/* 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

1
sim/ppc/gen-icache.c

@ -25,6 +25,7 @@
#include "table.h" #include "table.h"
#include "filter.h" #include "filter.h"
#include "filter-ppc.h"
#include "ld-decode.h" #include "ld-decode.h"
#include "ld-cache.h" #include "ld-cache.h"

1
sim/ppc/gen-idecode.c

@ -23,6 +23,7 @@
#include "table.h" #include "table.h"
#include "filter.h" #include "filter.h"
#include "filter-ppc.h"
#include "ld-decode.h" #include "ld-decode.h"
#include "ld-cache.h" #include "ld-cache.h"

1
sim/ppc/gen-semantics.c

@ -24,6 +24,7 @@
#include "lf-ppc.h" #include "lf-ppc.h"
#include "table.h" #include "table.h"
#include "filter.h" #include "filter.h"
#include "filter-ppc.h"
#include "ld-decode.h" #include "ld-decode.h"
#include "ld-cache.h" #include "ld-cache.h"

1
sim/ppc/gen-support.c

@ -22,6 +22,7 @@
#include "lf-ppc.h" #include "lf-ppc.h"
#include "table.h" #include "table.h"
#include "filter.h" #include "filter.h"
#include "filter-ppc.h"
#include "ld-decode.h" #include "ld-decode.h"
#include "ld-cache.h" #include "ld-cache.h"

2
sim/ppc/igen.c

@ -480,7 +480,7 @@ main(int argc,
ASSERT(hi_bit_nr == insn_bit_size-1 || hi_bit_nr == 0); ASSERT(hi_bit_nr == insn_bit_size-1 || hi_bit_nr == 0);
break; break;
case 'F': case 'F':
filters = new_filter(optarg, filters); filter_parse(&filters, optarg);
break; break;
case 'J': case 'J':
code &= ~generate_calls; code &= ~generate_calls;

13
sim/ppc/ld-insn.c

@ -22,6 +22,7 @@
#include "lf.h" #include "lf.h"
#include "table.h" #include "table.h"
#include "filter.h" #include "filter.h"
#include "filter-ppc.h"
#include "ld-decode.h" #include "ld-decode.h"
#include "ld-cache.h" #include "ld-cache.h"
#include "ld-insn.h" #include "ld-insn.h"
@ -219,7 +220,7 @@ parse_include_entry (table *file,
if (file_entry->nr_fields < 4) if (file_entry->nr_fields < 4)
ERROR ("Incorrect nr fields for include record\n"); ERROR ("Incorrect nr fields for include record\n");
/* process it */ /* 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, table_push (file, includes,
file_entry->fields[include_path], file_entry->fields[include_path],
@ -365,7 +366,7 @@ load_insn_table(const char *file_name,
} }
else if ((it_is("function", file_entry->fields[insn_form]) else if ((it_is("function", file_entry->fields[insn_form])
|| it_is("internal", 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 /* Ok, this is evil. Need to convert a new style function into
an old style function. Construct an old style table and then an old style function. Construct an old style table and then
copy it back. */ copy it back. */
@ -409,13 +410,13 @@ load_insn_table(const char *file_name,
model_table_insert_specific(table, file_entry, &model_data, &last_model_data); model_table_insert_specific(table, file_entry, &model_data, &last_model_data);
} }
else if (it_is("include", file_entry->fields[insn_form]) 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); parse_include_entry (file, file_entry, filters, includes);
} }
else if ((it_is("cache", file_entry->fields[insn_form]) else if ((it_is("cache", file_entry->fields[insn_form])
|| it_is("compute", file_entry->fields[insn_form]) || it_is("compute", file_entry->fields[insn_form])
|| it_is("scratch", 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, append_cache_rule (cache_rules,
file_entry->fields[insn_form], /* type */ file_entry->fields[insn_form], /* type */
file_entry->fields[cache_name], file_entry->fields[cache_name],
@ -427,7 +428,7 @@ load_insn_table(const char *file_name,
else { else {
insn_fields *fields; insn_fields *fields;
/* skip instructions that aren't relevant to the mode */ /* 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", fprintf(stderr, "Dropping %s - %s\n",
file_entry->fields[insn_name], file_entry->fields[insn_name],
file_entry->fields[insn_flags]); file_entry->fields[insn_flags]);
@ -982,7 +983,7 @@ main(int argc, char **argv)
if (argc != 5) if (argc != 5)
ERROR("Usage: insn <filter> <hi-bit-nr> <decode-table> <insn-table>\n"); 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]); hi_bit_nr = a2i(argv[2]);
ASSERT(hi_bit_nr < insn_bit_size); ASSERT(hi_bit_nr < insn_bit_size);
decode_rules = load_decode_table(argv[3], hi_bit_nr); decode_rules = load_decode_table(argv[3], hi_bit_nr);

7
sim/ppc/local.mk

@ -104,7 +104,7 @@ EXTRA_LIBRARIES += %D%/libigen.a
%D%/dumpf.c \ %D%/dumpf.c \
%D%/ld-decode.c \ %D%/ld-decode.c \
%D%/ld-cache.c \ %D%/ld-cache.c \
%D%/filter.c \ %D%/filter-ppc.c \
%D%/ld-insn.c \ %D%/ld-insn.c \
%D%/gen-model.c \ %D%/gen-model.c \
%D%/gen-itable.c \ %D%/gen-itable.c \
@ -113,6 +113,7 @@ EXTRA_LIBRARIES += %D%/libigen.a
%D%/gen-idecode.c \ %D%/gen-idecode.c \
%D%/gen-support.c %D%/gen-support.c
%C%_libigen_a_LIBADD = \ %C%_libigen_a_LIBADD = \
igen/filter.o \
igen/filter_host.o \ igen/filter_host.o \
igen/lf.o \ igen/lf.o \
igen/misc.o igen/misc.o
@ -199,9 +200,6 @@ $(%C%_libigen_a_OBJECTS) $(%C%_igen_OBJECTS): %D%/%.o: %D%/%.c
%D%/%-main.o: %D%/%.c %D%/%-main.o: %D%/%.c
$(AM_V_CC)$(COMPILE_FOR_BUILD) -DMAIN -c $< -o $@ $(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_SOURCES =
%C%_ld_cache_LDADD = %D%/ld-cache-main.o %D%/libigen.a %C%_ld_cache_LDADD = %D%/ld-cache-main.o %D%/libigen.a
@ -213,7 +211,6 @@ $(%C%_libigen_a_OBJECTS) $(%C%_igen_OBJECTS): %D%/%.o: %D%/%.c
%C%_IGEN_TOOLS = \ %C%_IGEN_TOOLS = \
$(PPC_IGEN) \ $(PPC_IGEN) \
%D%/filter \
%D%/ld-cache \ %D%/ld-cache \
%D%/ld-decode \ %D%/ld-decode \
%D%/ld-insn %D%/ld-insn

Loading…
Cancel
Save