From 86454a35393a450062edcc7f46e4528bece19264 Mon Sep 17 00:00:00 2001 From: Giacomo Travaglini Date: Mon, 4 May 2020 14:16:08 +0100 Subject: [PATCH 01/56] util: Port git hooks to python3 This involves changing: * git-commit * git-pre-commit * style verifiers JIRA: https://gem5.atlassian.net/browse/GEM5-473 Change-Id: I7bd0b54469f942bf927c8be1fd94d12f67594d48 Signed-off-by: Giacomo Travaglini Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28588 Maintainer: Bobby R. Bruce Reviewed-by: Jason Lowe-Power Reviewed-by: Daniel Carvalho Tested-by: kokoro --- util/git-commit-msg.py | 2 +- util/git-pre-commit.py | 37 ++++++++++++++++++++---------------- util/style/file_types.py | 2 +- util/style/region.py | 38 ++++++++++++++++++------------------- util/style/repo.py | 24 +++++++++++++---------- util/style/sort_includes.py | 4 ++-- util/style/style.py | 2 +- util/style/verifiers.py | 35 ++++++++++++++++++---------------- 8 files changed, 78 insertions(+), 66 deletions(-) diff --git a/util/git-commit-msg.py b/util/git-commit-msg.py index 23270bcadf..92e8100be3 100755 --- a/util/git-commit-msg.py +++ b/util/git-commit-msg.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2019 Inria # All rights reserved diff --git a/util/git-pre-commit.py b/util/git-pre-commit.py index 15109498ea..b6d124abba 100755 --- a/util/git-pre-commit.py +++ b/util/git-pre-commit.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2016 ARM Limited # All rights reserved @@ -35,6 +35,8 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +from __future__ import print_function + from tempfile import TemporaryFile import os import subprocess @@ -66,7 +68,7 @@ staged_mismatch = set() for status, fname in git.status(filter="MA", cached=True): if args.verbose: - print "Checking %s..." % fname + print("Checking {}...".format(fname)) if check_ignores(fname): continue if status == "M": @@ -77,7 +79,7 @@ for status, fname in git.status(filter="MA", cached=True): # Show they appropriate object and dump it to a file status = git.file_from_index(fname) f = TemporaryFile() - f.write(status) + f.write(status.encode()) verifiers = [ v(ui, opts, base=repo_base) for v in all_verifiers ] for v in verifiers: @@ -93,22 +95,25 @@ for status, fname in git.status(filter="MA", cached=True): if failing_files: if len(failing_files) > len(staged_mismatch): - print >> sys.stderr - print >> sys.stderr, "Style checker failed for the following files:" + print("\n", file=sys.stderr) + print("Style checker failed for the following files:", file=sys.stderr) for f in failing_files: if f not in staged_mismatch: - print >> sys.stderr, "\t%s" % f - print >> sys.stderr - print >> sys.stderr, \ - "Please run the style checker manually to fix the offending files.\n" \ - "To check your modifications, run: util/style.py -m" + print("\t{}".format(f), file=sys.stderr) + print("\n", file=sys.stderr) + print( + "Please run the style checker manually to fix " + "the offending files.\n" + "To check your modifications, run: util/style.py -m", + file=sys.stderr) - print >> sys.stderr + print("\n", file=sys.stderr) if staged_mismatch: - print >> sys.stderr, \ - "It looks like you have forgotten to stage your fixes for commit in\n"\ - "the following files: " + print( + "It looks like you have forgotten to stage your " + "fixes for commit in\n" + "the following files: ", file=sys.stderr) for f in staged_mismatch: - print >> sys.stderr, "\t%s" % f - print >> sys.stderr, "Please `git --add' them" + print("\t%s".format(f), file=sys.stderr) + print("Please `git --add' them", file=sys.stderr) sys.exit(1) diff --git a/util/style/file_types.py b/util/style/file_types.py index 4ffa7e0281..2577492fd9 100644 --- a/util/style/file_types.py +++ b/util/style/file_types.py @@ -77,7 +77,7 @@ hash_bang = ( ) # the list of all languages that we detect -all_languages = frozenset(lang_types.itervalues()) +all_languages = frozenset(lang_types.values()) all_languages |= frozenset(lang for start,lang in lang_prefixes) all_languages |= frozenset(lang for start,lang in hash_bang) diff --git a/util/style/region.py b/util/style/region.py index f4e12c52ad..ce00680357 100644 --- a/util/style/region.py +++ b/util/style/region.py @@ -57,8 +57,8 @@ class Region(tuple): args = tuple(arg) if len(args) != 2: - raise AttributeError, \ - "Only one or two arguments allowed, %d provided" % (alen, ) + raise(AttributeError, \ + "Only one or two arguments allowed, %d provided" % (alen, )) return tuple.__new__(cls, args) @@ -239,13 +239,13 @@ if __name__ == '__main__': n = Region(9,10) def test(left, right): - print "%s == %s: %s" % (left, right, left == right) - print "%s != %s: %s" % (left, right, left != right) - print "%s < %s: %s" % (left, right, left < right) - print "%s <= %s: %s" % (left, right, left <= right) - print "%s > %s: %s" % (left, right, left > right) - print "%s >= %s: %s" % (left, right, left >= right) - print + print("%s == %s: %s" % (left, right, left == right)) + print("%s != %s: %s" % (left, right, left != right)) + print("%s < %s: %s" % (left, right, left < right)) + print("%s <= %s: %s" % (left, right, left <= right)) + print("%s > %s: %s" % (left, right, left > right)) + print("%s >= %s: %s" % (left, right, left >= right)) + print("\n") test(neg_inf, neg_inf) test(neg_inf, pos_inf) @@ -268,14 +268,14 @@ if __name__ == '__main__': test(-11111, pos_inf) test(11111, pos_inf) - print x - print y - print x & y - print z + print(x) + print(y) + print(x & y) + print(z) - print 4 in x - print 4 in z - print 5 not in x - print 6 not in z - print z in y - print n in y, n not in y + print(4 in x) + print(4 in z) + print(5 not in x) + print(6 not in z) + print(z in y) + print(n in y, n not in y) diff --git a/util/style/repo.py b/util/style/repo.py index acf59ce80f..a0eee98fac 100644 --- a/util/style/repo.py +++ b/util/style/repo.py @@ -39,8 +39,8 @@ from abc import * import os import subprocess -from region import * -from style import modified_regions +from .region import * +from .style import modified_regions class AbstractRepo(object): __metaclass__ = ABCMeta @@ -118,7 +118,8 @@ class GitRepo(AbstractRepo): def repo_base(self): if self._repo_base is None: self._repo_base = subprocess.check_output( - [ self.git, "rev-parse", "--show-toplevel" ]).rstrip("\n") + [ self.git, "rev-parse", "--show-toplevel" ]) \ + .decode().rstrip("\n") return self._repo_base @@ -159,7 +160,7 @@ class GitRepo(AbstractRepo): try: self._head_revision = subprocess.check_output( [ self.git, "rev-parse", "--verify", "HEAD" ], - stderr=subprocess.PIPE).rstrip("\n") + stderr=subprocess.PIPE).decode().rstrip("\n") except subprocess.CalledProcessError: # Assume that the repo is empty and use the semi-magic # empty tree revision if git rev-parse returned an error. @@ -185,7 +186,7 @@ class GitRepo(AbstractRepo): if filter: cmd += [ "--diff-filter=%s" % filter ] cmd += [ self.head_revision(), "--" ] + files - status = subprocess.check_output(cmd).rstrip("\n") + status = subprocess.check_output(cmd).decode().rstrip("\n") if status: return [ f.split("\t") for f in status.split("\n") ] @@ -194,11 +195,12 @@ class GitRepo(AbstractRepo): def file_from_index(self, name): return subprocess.check_output( - [ self.git, "show", ":%s" % (name, ) ]) + [ self.git, "show", ":%s" % (name, ) ]).decode() def file_from_head(self, name): return subprocess.check_output( - [ self.git, "show", "%s:%s" % (self.head_revision(), name) ]) + [ self.git, "show", "%s:%s" % (self.head_revision(), name) ]) \ + .decode() class MercurialRepo(AbstractRepo): def __init__(self): @@ -208,7 +210,7 @@ class MercurialRepo(AbstractRepo): def repo_base(self): if self._repo_base is None: self._repo_base = subprocess.check_output( - [ self.hg, "root" ]).rstrip("\n") + [ self.hg, "root" ]).decode().rstrip("\n") return self._repo_base @@ -233,14 +235,16 @@ class MercurialRepo(AbstractRepo): return modified_regions(old, new, context=context) def status(self, filter=None): - files = subprocess.check_output([ self.hg, "status" ]).rstrip("\n") + files = subprocess.check_output([ self.hg, "status" ]) \ + .decode().rstrip("\n") if files: return [ f.split(" ") for f in files.split("\n") ] else: return [] def file_from_tip(self, name): - return subprocess.check_output([ self.hg, "cat", name ]) + return subprocess.check_output([ self.hg, "cat", name ]) \ + .decode() def detect_repo(path="."): """Auto-detect the revision control system used for a source code diff --git a/util/style/sort_includes.py b/util/style/sort_includes.py index f2f929c09b..ab0bb5fea5 100644 --- a/util/style/sort_includes.py +++ b/util/style/sort_includes.py @@ -42,7 +42,7 @@ import os import re import sys -from file_types import * +from .file_types import * cpp_c_headers = { 'assert.h' : 'cassert', @@ -314,6 +314,6 @@ if __name__ == '__main__': for filename,language in find_files(base, languages=opts.languages, file_ignore=opts.file_ignore, dir_ignore=opts.dir_ignore): if opts.dry_run: - print "%s: %s" % (filename, language) + print("{}: {}".format(filename, language)) else: update_file(filename, filename, language, SortIncludes()) diff --git a/util/style/style.py b/util/style/style.py index 68c77a7c02..c505dafeaf 100644 --- a/util/style/style.py +++ b/util/style/style.py @@ -44,7 +44,7 @@ import difflib import re import sys -from region import * +from .region import * tabsize = 8 lead = re.compile(r'^([ \t]+)') diff --git a/util/style/verifiers.py b/util/style/verifiers.py index c2217d56b9..00cf0705ca 100644 --- a/util/style/verifiers.py +++ b/util/style/verifiers.py @@ -47,10 +47,12 @@ import os import re import sys -import style -import sort_includes -from region import * -from file_types import lang_type +from six import add_metaclass + +from . import style +from . import sort_includes +from .region import * +from .file_types import lang_type def safefix(fix_func): @@ -100,6 +102,7 @@ def _modified_regions(old, new): return regions +@add_metaclass(ABCMeta) class Verifier(object): """Base class for style verifiers @@ -117,7 +120,6 @@ class Verifier(object): """ - __metaclass__ = ABCMeta def __init__(self, ui, opts, base=None): self.ui = ui @@ -144,9 +146,9 @@ class Verifier(object): def open(self, filename, mode): try: - f = file(filename, mode) - except OSError, msg: - print 'could not open file %s: %s' % (filename, msg) + f = open(filename, mode) + except OSError as msg: + print('could not open file {}: {}'.format(filename, msg)) return None return f @@ -222,11 +224,12 @@ class Verifier(object): """ pass +@add_metaclass(ABCMeta) class LineVerifier(Verifier): def check(self, filename, regions=all_regions, fobj=None, silent=False): close = False if fobj is None: - fobj = self.open(filename, 'r') + fobj = self.open(filename, 'rb') close = True lang = lang_type(filename) @@ -236,13 +239,13 @@ class LineVerifier(Verifier): for num,line in enumerate(fobj): if num not in regions: continue - line = line.rstrip('\n') - if not self.check_line(line, language=lang): + s_line = line.decode().rstrip('\n') + if not self.check_line(s_line, language=lang): if not silent: self.ui.write("invalid %s in %s:%d\n" % \ (self.test_name, filename, num + 1)) if self.ui.verbose: - self.ui.write(">>%s<<\n" % line[:-1]) + self.ui.write(">>%s<<\n" % s_line[:-1]) errors += 1 if close: fobj.close() @@ -348,7 +351,7 @@ class SortedIncludes(Verifier): close = True norm_fname = self.normalize_filename(filename) - old = [ l.rstrip('\n') for l in fobj.xreadlines() ] + old = [ l.decode().rstrip('\n') for l in fobj ] if close: fobj.close() @@ -428,14 +431,14 @@ class ControlCharacters(LineVerifier): test_name = 'control character' opt_name = 'ascii' - valid = ('\n', '\t') - invalid = "".join([chr(i) for i in range(0, 0x20) if chr(i) not in valid]) + invalid = "".join([chr(i) for i in range(0, 0x20) \ + if chr(i) not in ('\n', '\t')]) def check_line(self, line, **kwargs): return self.fix_line(line) == line def fix_line(self, line, **kwargs): - return line.translate(None, ControlCharacters.invalid) + return ''.join(c for c in line if c not in ControlCharacters.invalid) class BoolCompare(LineVerifier): languages = set(('C', 'C++', 'python')) From 58a797d36c7b3b2768c1400d4aa45a8c126d6343 Mon Sep 17 00:00:00 2001 From: Giacomo Travaglini Date: Mon, 4 May 2020 14:01:52 +0100 Subject: [PATCH 02/56] util: Make cpt_upgraders python3 compatible It won't be possible to build gem5 in a python3 only environment otherwise since the cpt_upgrader.py script is automatically run at the end of compilation Change-Id: Iea4217e5cd64ca44b99aa0db5dabfdced7aeb3ea Signed-off-by: Giacomo Travaglini Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28587 Maintainer: Bobby R. Bruce Reviewed-by: Jason Lowe-Power Tested-by: kokoro --- util/cpt_upgrader.py | 65 +++++++++++++----------- util/cpt_upgraders/arm-hdlcd-upgrade.py | 4 +- util/cpt_upgraders/arm-miscreg-teehbr.py | 2 +- util/cpt_upgraders/arm-sve.py | 3 +- util/cpt_upgraders/armv8.py | 8 +-- util/cpt_upgraders/x86-add-tlb.py | 2 +- 6 files changed, 44 insertions(+), 40 deletions(-) diff --git a/util/cpt_upgrader.py b/util/cpt_upgrader.py index 4ac7dbf548..96dcaf6fd4 100755 --- a/util/cpt_upgrader.py +++ b/util/cpt_upgrader.py @@ -1,6 +1,6 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python -# Copyright (c) 2012-2013,2015-2016 ARM Limited +# Copyright (c) 2012-2013,2015-2016, 2020 ARM Limited # All rights reserved # # The license below extends only to copyright in the software and shall @@ -68,8 +68,9 @@ # upgrader. This can be especially valuable when maintaining private # upgraders in private branches. +from __future__ import print_function -import ConfigParser +from six.moves import configparser import glob, types, sys, os import os.path as osp @@ -79,8 +80,8 @@ def verboseprint(*args): if not verbose_print: return for arg in args: - print arg, - print + print(arg, end=' ') + print("\n") class Upgrader: tag_set = set() @@ -89,7 +90,7 @@ class Upgrader: legacy = {} def __init__(self, filename): self.filename = filename - execfile(filename, {}, self.__dict__) + exec(open(filename).read(), {}, self.__dict__) if not hasattr(self, 'tag'): self.tag = osp.basename(filename)[:-3] @@ -99,7 +100,7 @@ class Upgrader: self.depends = [self.depends] if not isinstance(self.depends, list): - print "Error: 'depends' for %s is the wrong type" % self.tag + print("Error: 'depends' for {} is the wrong type".format(self.tag)) sys.exit(1) if hasattr(self, 'fwd_depends'): @@ -109,23 +110,25 @@ class Upgrader: self.fwd_depends = [] if not isinstance(self.fwd_depends, list): - print "Error: 'fwd_depends' for %s is the wrong type" % self.tag + print("Error: 'fwd_depends' for {} is the wrong type".format( + self.tag)) sys.exit(1) if hasattr(self, 'upgrader'): if not isinstance(self.upgrader, types.FunctionType): - print "Error: 'upgrader' for %s is %s, not function" \ - % (self.tag, type(self)) + print("Error: 'upgrader' for {} is {}, not function".format( + self.tag, type(self))) sys.exit(1) Upgrader.tag_set.add(self.tag) elif hasattr(self, 'downgrader'): if not isinstance(self.downgrader, types.FunctionType): - print "Error: 'downgrader' for %s is %s, not function" \ - % (self.tag, type(self)) + print("Error: 'downgrader' for {} is {}, not function".format( + self.tag, type(self))) sys.exit(1) Upgrader.untag_set.add(self.tag) else: - print "Error: no upgrader or downgrader method for", self.tag + print("Error: no upgrader or downgrader method for".format( + self.tag)) sys.exit(1) if hasattr(self, 'legacy_version'): @@ -170,14 +173,14 @@ class Upgrader: for tag, upg in Upgrader.by_tag.items(): for fd in upg.fwd_depends: if fd not in Upgrader.by_tag: - print "Error: '%s' cannot (forward) depend on "\ - "nonexistent tag '%s'" % (fd, tag) + print("Error: '{}' cannot (forward) depend on " + "nonexistent tag '{}'".format(fd, tag)) sys.exit(1) Upgrader.by_tag[fd].depends.append(tag) for dep in upg.depends: if dep not in Upgrader.by_tag: - print "Error: '%s' cannot depend on "\ - "nonexistent tag '%s'" % (tag, dep) + print("Error: '{}' cannot depend on " + "nonexistent tag '{}'".format(tag, dep)) sys.exit(1) def process_file(path, **kwargs): @@ -191,7 +194,7 @@ def process_file(path, **kwargs): import shutil shutil.copyfile(path, path + '.bak') - cpt = ConfigParser.SafeConfigParser() + cpt = configparser.SafeConfigParser() # gem5 is case sensitive with paramaters cpt.optionxform = str @@ -219,7 +222,7 @@ def process_file(path, **kwargs): elif cpt.has_option('Globals','version_tags'): tags = set((''.join(cpt.get('Globals','version_tags'))).split()) else: - print "fatal: no version information in checkpoint" + print("fatal: no version information in checkpoint") exit(1) verboseprint("has tags", ' '.join(tags)) @@ -228,8 +231,8 @@ def process_file(path, **kwargs): # simulator support for its changes. unknown_tags = tags - (Upgrader.tag_set | Upgrader.untag_set) if unknown_tags: - print "warning: upgrade script does not recognize the following "\ - "tags in this checkpoint:", ' '.join(unknown_tags) + print("warning: upgrade script does not recognize the following " + "tags in this checkpoint:", ' '.join(unknown_tags)) # Apply migrations for tags not in checkpoint and tags present for which # downgraders are present, respecting dependences @@ -237,8 +240,8 @@ def process_file(path, **kwargs): while to_apply: ready = set([ t for t in to_apply if Upgrader.get(t).ready(tags) ]) if not ready: - print "could not apply these upgrades:", ' '.join(to_apply) - print "update dependences impossible to resolve; aborting" + print("could not apply these upgrades:", ' '.join(to_apply)) + print("update dependences impossible to resolve; aborting") exit(1) for tag in ready: @@ -278,14 +281,14 @@ if __name__ == '__main__': Upgrader.load_all() if options.get_cc_file: - print "// this file is auto-generated by util/cpt_upgrader.py" - print "#include " - print "#include " + print("// this file is auto-generated by util/cpt_upgrader.py") + print("#include ") + print("#include ") print - print "std::set version_tags = {" + print("std::set version_tags = {") for tag in Upgrader.tag_set: - print " \"%s\"," % tag - print "};" + print(" \"{}\",".format(tag)) + print("};") exit(0) elif len(args) != 1: parser.error("You must specify a checkpoint file to modify or a "\ @@ -312,8 +315,8 @@ if __name__ == '__main__': elif osp.isfile(cpt_file): process_file(cpt_file, **vars(options)) else: - print "Error: checkpoint file not found at in %s " % path, - print "and recurse not specified" + print("Error: checkpoint file not found in {} ".format(path)) + print("and recurse not specified") sys.exit(1) sys.exit(0) diff --git a/util/cpt_upgraders/arm-hdlcd-upgrade.py b/util/cpt_upgraders/arm-hdlcd-upgrade.py index ce4b073803..dbddc567ff 100644 --- a/util/cpt_upgraders/arm-hdlcd-upgrade.py +++ b/util/cpt_upgraders/arm-hdlcd-upgrade.py @@ -94,8 +94,8 @@ def upgrader(cpt): cpt.set(sec_dma, "buffer", "") - print "Warning: Assuming that the HDLCD pixel clock and global frequency " \ - "are still using their default values." + print("Warning: Assuming that the HDLCD pixel clock and global frequency " + "are still using their default values.") sec_osc = "system.realview.realview_io.osc_pxl" global_tick = 1E12 pxl_freq = 137E6 diff --git a/util/cpt_upgraders/arm-miscreg-teehbr.py b/util/cpt_upgraders/arm-miscreg-teehbr.py index 70359ddfad..f0174d5985 100644 --- a/util/cpt_upgraders/arm-miscreg-teehbr.py +++ b/util/cpt_upgraders/arm-miscreg-teehbr.py @@ -7,7 +7,7 @@ def upgrader(cpt): if re.search('.*sys.*\.cpu.*\.isa$', sec): mr = cpt.get(sec, 'miscRegs').split() if len(mr) == 161: - print "MISCREG_TEEHBR already seems to be inserted." + print("MISCREG_TEEHBR already seems to be inserted.") else: mr.insert(51,0); # Add dummy value for MISCREG_TEEHBR cpt.set(sec, 'miscRegs', ' '.join(str(x) for x in mr)) diff --git a/util/cpt_upgraders/arm-sve.py b/util/cpt_upgraders/arm-sve.py index 53fab7fd98..aa66045c88 100644 --- a/util/cpt_upgraders/arm-sve.py +++ b/util/cpt_upgraders/arm-sve.py @@ -23,7 +23,8 @@ def upgrader(cpt): # Updating SVE misc registers (dummy values) mr = cpt.get(sec, 'miscRegs').split() if len(mr) == 820: - print "MISCREG_SVE registers already seems to be inserted." + print("MISCREG_SVE registers already seems " + "to be inserted.") else: # Replace MISCREG_FREESLOT_1 with MISCREG_ID_AA64ZFR0_EL1 mr[-1] = 0; diff --git a/util/cpt_upgraders/armv8.py b/util/cpt_upgraders/armv8.py index 4e4e2a3766..1bb4c2bdd8 100644 --- a/util/cpt_upgraders/armv8.py +++ b/util/cpt_upgraders/armv8.py @@ -3,10 +3,10 @@ def upgrader(cpt): if cpt.get('root','isa') != 'arm': return import re - print "Warning: The size of the FP register file has changed. "\ - "To get similar results you need to adjust the number of "\ - "physical registers in the CPU you're restoring into by "\ - "NNNN." + print("Warning: The size of the FP register file has changed. " + "To get similar results you need to adjust the number of " + "physical registers in the CPU you're restoring into by " + "NNNN.") # Find the CPU context's and upgrade their registers for sec in cpt.sections(): re_xc_match = re.match('^.*?sys.*?\.cpu(\d+)*\.xc\.*', sec) diff --git a/util/cpt_upgraders/x86-add-tlb.py b/util/cpt_upgraders/x86-add-tlb.py index bd07a100d2..db465d512c 100644 --- a/util/cpt_upgraders/x86-add-tlb.py +++ b/util/cpt_upgraders/x86-add-tlb.py @@ -12,6 +12,6 @@ def upgrader(cpt): cpt.set(sec, '_size', '0') cpt.set(sec, 'lruSeq', '0') else: - print "ISA is not x86" + print("ISA is not x86") legacy_version = 6 From 38e7427ea7aec120ac8ffdf72918c549151f2e96 Mon Sep 17 00:00:00 2001 From: Giacomo Travaglini Date: Tue, 5 May 2020 10:38:10 +0100 Subject: [PATCH 03/56] python: Manually convert float to int when using %x This is required by python3.5 which is not allowing a floating point value to be printed in hex and will trigger a TypeError assertion: TypeError: %X format: an integer is required, not float Change-Id: I2033366751924579cc87e7fccda8fdb33a31412d Signed-off-by: Giacomo Travaglini Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28607 Reviewed-by: Bobby R. Bruce Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/python/m5/util/dot_writer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python/m5/util/dot_writer.py b/src/python/m5/util/dot_writer.py index e6de3f3219..c66108d21b 100644 --- a/src/python/m5/util/dot_writer.py +++ b/src/python/m5/util/dot_writer.py @@ -267,7 +267,7 @@ def dot_gen_colour(simNode, isPort = False): return dot_rgb_to_html(r, g, b) def dot_rgb_to_html(r, g, b): - return "#%.2x%.2x%.2x" % (r, g, b) + return "#%.2x%.2x%.2x" % (int(r), int(g), int(b)) # We need to create all of the clock domains. We abuse the alpha channel to get # the correct domain colouring. From 4f1c4147decd8c8b08e2cef2342fa25224cf4225 Mon Sep 17 00:00:00 2001 From: Ayaz Akram Date: Mon, 4 May 2020 21:11:38 -0700 Subject: [PATCH 04/56] mem-ruby: Deep renaming of Prefetcher to RubyPrefetcher A recent change (https://gem5-review.googlesource.com/c/ public/gem5/+/27949) updated the ruby prefetcher name, which breaks the use of old name in some SLICC files. This change makes sure that the new name is used at all places. Issue-On: https://gem5.atlassian.net/browse/GEM5-498 Change-Id: Ic667b61eac13dc7c267cee7dce3aa970f7ae9a8b Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28667 Reviewed-by: Timothy Hayes Maintainer: Jason Lowe-Power Tested-by: kokoro --- configs/ruby/MESI_Three_Level.py | 2 +- configs/ruby/MESI_Two_Level.py | 2 +- src/mem/ruby/SConscript | 2 +- src/mem/ruby/protocol/MESI_Three_Level-L0cache.sm | 2 +- src/mem/ruby/protocol/MESI_Two_Level-L1cache.sm | 2 +- src/mem/ruby/protocol/RubySlicc_Types.sm | 2 +- .../structures/{Prefetcher.cc => RubyPrefetcher.cc} | 4 ++-- .../structures/{Prefetcher.hh => RubyPrefetcher.hh} | 4 ++-- src/mem/ruby/structures/RubyPrefetcher.py | 10 +++++++--- src/mem/ruby/structures/SConscript | 2 +- src/mem/slicc/symbols/StateMachine.py | 2 +- 11 files changed, 19 insertions(+), 15 deletions(-) rename src/mem/ruby/structures/{Prefetcher.cc => RubyPrefetcher.cc} (99%) rename src/mem/ruby/structures/{Prefetcher.hh => RubyPrefetcher.hh} (99%) diff --git a/configs/ruby/MESI_Three_Level.py b/configs/ruby/MESI_Three_Level.py index 61d6c523b6..0bd893e380 100644 --- a/configs/ruby/MESI_Three_Level.py +++ b/configs/ruby/MESI_Three_Level.py @@ -121,7 +121,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, clk_domain = system.cpu[i].clk_domain # Ruby prefetcher - prefetcher = RubyPrefetcher.Prefetcher( + prefetcher = RubyPrefetcher( num_streams=16, unit_filter = 256, nonunit_filter = 256, diff --git a/configs/ruby/MESI_Two_Level.py b/configs/ruby/MESI_Two_Level.py index 8d2e01fb67..3ddf8eff71 100644 --- a/configs/ruby/MESI_Two_Level.py +++ b/configs/ruby/MESI_Two_Level.py @@ -78,7 +78,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, start_index_bit = block_size_bits, is_icache = False) - prefetcher = RubyPrefetcher.Prefetcher() + prefetcher = RubyPrefetcher() # the ruby random tester reuses num_cpus to specify the # number of cpu ports connected to the tester object, which diff --git a/src/mem/ruby/SConscript b/src/mem/ruby/SConscript index 8c22ae495f..fc90f8a624 100644 --- a/src/mem/ruby/SConscript +++ b/src/mem/ruby/SConscript @@ -126,7 +126,7 @@ MakeInclude('structures/CacheMemory.hh') MakeInclude('structures/DirectoryMemory.hh') MakeInclude('structures/PerfectCacheMemory.hh') MakeInclude('structures/PersistentTable.hh') -MakeInclude('structures/Prefetcher.hh') +MakeInclude('structures/RubyPrefetcher.hh') MakeInclude('structures/TBETable.hh') MakeInclude('structures/TimerTable.hh') MakeInclude('structures/WireBuffer.hh') diff --git a/src/mem/ruby/protocol/MESI_Three_Level-L0cache.sm b/src/mem/ruby/protocol/MESI_Three_Level-L0cache.sm index 3639ef2c59..4de4a293e0 100644 --- a/src/mem/ruby/protocol/MESI_Three_Level-L0cache.sm +++ b/src/mem/ruby/protocol/MESI_Three_Level-L0cache.sm @@ -46,7 +46,7 @@ machine(MachineType:L0Cache, "MESI Directory L0 Cache") Cycles response_latency := 2; bool send_evictions; - Prefetcher * prefetcher; + RubyPrefetcher * prefetcher; bool enable_prefetch := "False"; // From this node's L0 cache to the network diff --git a/src/mem/ruby/protocol/MESI_Two_Level-L1cache.sm b/src/mem/ruby/protocol/MESI_Two_Level-L1cache.sm index 7c83478db5..3e3580f704 100644 --- a/src/mem/ruby/protocol/MESI_Two_Level-L1cache.sm +++ b/src/mem/ruby/protocol/MESI_Two_Level-L1cache.sm @@ -30,7 +30,7 @@ machine(MachineType:L1Cache, "MESI Directory L1 Cache CMP") : Sequencer * sequencer; CacheMemory * L1Icache; CacheMemory * L1Dcache; - Prefetcher * prefetcher; + RubyPrefetcher * prefetcher; int l2_select_num_bits; Cycles l1_request_latency := 2; Cycles l1_response_latency := 2; diff --git a/src/mem/ruby/protocol/RubySlicc_Types.sm b/src/mem/ruby/protocol/RubySlicc_Types.sm index 66d84fca30..6ab0f3f768 100644 --- a/src/mem/ruby/protocol/RubySlicc_Types.sm +++ b/src/mem/ruby/protocol/RubySlicc_Types.sm @@ -246,7 +246,7 @@ structure (TimerTable, inport="yes", external = "yes") { bool isSet(Addr); } -structure (Prefetcher, external = "yes") { +structure (RubyPrefetcher, external = "yes") { void observeMiss(Addr, RubyRequestType); void observePfHit(Addr); void observePfMiss(Addr); diff --git a/src/mem/ruby/structures/Prefetcher.cc b/src/mem/ruby/structures/RubyPrefetcher.cc similarity index 99% rename from src/mem/ruby/structures/Prefetcher.cc rename to src/mem/ruby/structures/RubyPrefetcher.cc index 06021159c9..8646b99323 100644 --- a/src/mem/ruby/structures/Prefetcher.cc +++ b/src/mem/ruby/structures/RubyPrefetcher.cc @@ -38,7 +38,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "mem/ruby/structures/Prefetcher.hh" +#include "mem/ruby/structures/RubyPrefetcher.hh" #include "base/bitfield.hh" #include "debug/RubyPrefetcher.hh" @@ -46,7 +46,7 @@ #include "mem/ruby/system/RubySystem.hh" RubyPrefetcher* -PrefetcherParams::create() +RubyPrefetcherParams::create() { return new RubyPrefetcher(this); } diff --git a/src/mem/ruby/structures/Prefetcher.hh b/src/mem/ruby/structures/RubyPrefetcher.hh similarity index 99% rename from src/mem/ruby/structures/Prefetcher.hh rename to src/mem/ruby/structures/RubyPrefetcher.hh index 4d2513f78d..b691d3d866 100644 --- a/src/mem/ruby/structures/Prefetcher.hh +++ b/src/mem/ruby/structures/RubyPrefetcher.hh @@ -51,7 +51,7 @@ #include "mem/ruby/slicc_interface/AbstractController.hh" #include "mem/ruby/slicc_interface/RubyRequest.hh" #include "mem/ruby/system/RubySystem.hh" -#include "params/Prefetcher.hh" +#include "params/RubyPrefetcher.hh" #include "sim/sim_object.hh" #include "sim/system.hh" @@ -93,7 +93,7 @@ class PrefetchEntry class RubyPrefetcher : public SimObject { public: - typedef PrefetcherParams Params; + typedef RubyPrefetcherParams Params; RubyPrefetcher(const Params *p); ~RubyPrefetcher(); diff --git a/src/mem/ruby/structures/RubyPrefetcher.py b/src/mem/ruby/structures/RubyPrefetcher.py index d762ba5308..38397c3342 100644 --- a/src/mem/ruby/structures/RubyPrefetcher.py +++ b/src/mem/ruby/structures/RubyPrefetcher.py @@ -42,10 +42,10 @@ from m5.proxy import * from m5.objects.System import System -class Prefetcher(SimObject): - type = 'Prefetcher' +class RubyPrefetcher(SimObject): + type = 'RubyPrefetcher' cxx_class = 'RubyPrefetcher' - cxx_header = "mem/ruby/structures/Prefetcher.hh" + cxx_header = "mem/ruby/structures/RubyPrefetcher.hh" num_streams = Param.UInt32(4, "Number of prefetch streams to be allocated") @@ -58,3 +58,7 @@ class Prefetcher(SimObject): cross_page = Param.Bool(False, """True if prefetched address can be on a page different from the observed address""") sys = Param.System(Parent.any, "System this prefetcher belongs to") + +class Prefetcher(RubyPrefetcher): + """DEPRECATED""" + pass diff --git a/src/mem/ruby/structures/SConscript b/src/mem/ruby/structures/SConscript index 9e2bde924a..0cf05598f8 100644 --- a/src/mem/ruby/structures/SConscript +++ b/src/mem/ruby/structures/SConscript @@ -40,6 +40,6 @@ Source('DirectoryMemory.cc') Source('CacheMemory.cc') Source('WireBuffer.cc') Source('PersistentTable.cc') -Source('Prefetcher.cc') +Source('RubyPrefetcher.cc') Source('TimerTable.cc') Source('BankedArray.cc') diff --git a/src/mem/slicc/symbols/StateMachine.py b/src/mem/slicc/symbols/StateMachine.py index 0904ac63fc..1263344aa2 100644 --- a/src/mem/slicc/symbols/StateMachine.py +++ b/src/mem/slicc/symbols/StateMachine.py @@ -61,7 +61,7 @@ python_class_map = { "MemoryControl": "MemoryControl", "MessageBuffer": "MessageBuffer", "DMASequencer": "DMASequencer", - "Prefetcher":"Prefetcher", + "RubyPrefetcher":"RubyPrefetcher", "Cycles":"Cycles", } From f0f79fedf6384b24a0d0a1b1e615289728175a9e Mon Sep 17 00:00:00 2001 From: Jason Lowe-Power Date: Fri, 1 May 2020 09:14:11 -0700 Subject: [PATCH 05/56] configs: Remove old boot files Most of these "rcS" scripts are only useful for specific disk images that have long been lost to the gem5 community. This commit deletes all of these scripts. It keeps the generally useful hack_back_cktp script and the bbench scripts that work with the android images that are still available. In the future, these remaning scripts should be moved to the gem5 resources repository. Issue-on: https://gem5.atlassian.net/browse/GEM5-350 Change-Id: Iba99e70fde7f656e968b4ecd95663275bd38fd6e Signed-off-by: Jason Lowe-Power Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28507 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- configs/boot/ammp.rcS | 12 - configs/boot/ammp.symbol | 257 -- configs/boot/art.rcS | 7 - configs/boot/bn-app.rcS | 3 - configs/boot/bonnie.rcS | 13 - configs/boot/bonnie.symbol | 309 -- configs/boot/bzip.rcS | 6 - configs/boot/cc1.symbol | 3454 -------------------- configs/boot/devtime.rcS | 8 - configs/boot/equake.rcS | 12 - configs/boot/equake.symbol | 94 - configs/boot/gcc.rcS | 12 - configs/boot/gzip.rcS | 12 - configs/boot/gzip.symbol | 268 -- configs/boot/iscsi-client.rcS | 107 - configs/boot/iscsi-server.rcS | 59 - configs/boot/ls.rcS | 18 - configs/boot/mcf.rcS | 12 - configs/boot/mcf.symbol | 65 - configs/boot/mesa.rcS | 12 - configs/boot/mesa.symbol | 1135 ------- configs/boot/micro_ctx.rcS | 3 - configs/boot/micro_memlat.rcS | 4 - configs/boot/micro_memlat2mb.rcS | 3 - configs/boot/micro_memlat8.rcS | 3 - configs/boot/micro_memlat8mb.rcS | 3 - configs/boot/micro_stream.rcS | 3 - configs/boot/micro_streamcopy.rcS | 3 - configs/boot/micro_streamscale.rcS | 3 - configs/boot/micro_syscall.rcS | 3 - configs/boot/micro_tlblat.rcS | 3 - configs/boot/micro_tlblat2.rcS | 3 - configs/boot/micro_tlblat3.rcS | 3 - configs/boot/mutex-test.rcS | 6 - configs/boot/nat-netperf-maerts-client.rcS | 48 - configs/boot/nat-netperf-server.rcS | 32 - configs/boot/nat-netperf-stream-client.rcS | 50 - configs/boot/nat-spec-surge-client.rcS | 51 - configs/boot/nat-spec-surge-server.rcS | 56 - configs/boot/natbox-netperf.rcS | 53 - configs/boot/natbox-spec-surge.rcS | 56 - configs/boot/netperf-maerts-client.rcS | 57 - configs/boot/netperf-rr.rcS | 45 - configs/boot/netperf-server.rcS | 30 - configs/boot/netperf-stream-client.rcS | 45 - configs/boot/netperf-stream-nt-client.rcS | 45 - configs/boot/netperf-stream-udp-client.rcS | 45 - configs/boot/netperf-stream-udp-local.rcS | 22 - configs/boot/nfs-client-dbench.rcS | 59 - configs/boot/nfs-client-nhfsstone.rcS | 49 - configs/boot/nfs-client-smallb.rcS | 48 - configs/boot/nfs-client-tcp-smallb.rcS | 48 - configs/boot/nfs-client-tcp.rcS | 48 - configs/boot/nfs-client.rcS | 48 - configs/boot/nfs-server-nhfsstone.rcS | 66 - configs/boot/nfs-server.rcS | 68 - configs/boot/null.rcS | 0 configs/boot/ping-client.rcS | 25 - configs/boot/ping-server.rcS | 26 - configs/boot/setup | 37 - configs/boot/spec-surge-client.rcS | 45 - configs/boot/spec-surge-server.rcS | 53 - configs/boot/surge-client.rcS | 44 - configs/boot/surge-server.rcS | 52 - 64 files changed, 7269 deletions(-) delete mode 100644 configs/boot/ammp.rcS delete mode 100644 configs/boot/ammp.symbol delete mode 100644 configs/boot/art.rcS delete mode 100644 configs/boot/bn-app.rcS delete mode 100644 configs/boot/bonnie.rcS delete mode 100644 configs/boot/bonnie.symbol delete mode 100644 configs/boot/bzip.rcS delete mode 100644 configs/boot/cc1.symbol delete mode 100644 configs/boot/devtime.rcS delete mode 100644 configs/boot/equake.rcS delete mode 100644 configs/boot/equake.symbol delete mode 100644 configs/boot/gcc.rcS delete mode 100644 configs/boot/gzip.rcS delete mode 100644 configs/boot/gzip.symbol delete mode 100644 configs/boot/iscsi-client.rcS delete mode 100644 configs/boot/iscsi-server.rcS delete mode 100644 configs/boot/ls.rcS delete mode 100644 configs/boot/mcf.rcS delete mode 100644 configs/boot/mcf.symbol delete mode 100644 configs/boot/mesa.rcS delete mode 100644 configs/boot/mesa.symbol delete mode 100644 configs/boot/micro_ctx.rcS delete mode 100644 configs/boot/micro_memlat.rcS delete mode 100644 configs/boot/micro_memlat2mb.rcS delete mode 100644 configs/boot/micro_memlat8.rcS delete mode 100644 configs/boot/micro_memlat8mb.rcS delete mode 100644 configs/boot/micro_stream.rcS delete mode 100644 configs/boot/micro_streamcopy.rcS delete mode 100644 configs/boot/micro_streamscale.rcS delete mode 100644 configs/boot/micro_syscall.rcS delete mode 100644 configs/boot/micro_tlblat.rcS delete mode 100644 configs/boot/micro_tlblat2.rcS delete mode 100644 configs/boot/micro_tlblat3.rcS delete mode 100644 configs/boot/mutex-test.rcS delete mode 100644 configs/boot/nat-netperf-maerts-client.rcS delete mode 100644 configs/boot/nat-netperf-server.rcS delete mode 100644 configs/boot/nat-netperf-stream-client.rcS delete mode 100644 configs/boot/nat-spec-surge-client.rcS delete mode 100755 configs/boot/nat-spec-surge-server.rcS delete mode 100644 configs/boot/natbox-netperf.rcS delete mode 100644 configs/boot/natbox-spec-surge.rcS delete mode 100644 configs/boot/netperf-maerts-client.rcS delete mode 100644 configs/boot/netperf-rr.rcS delete mode 100644 configs/boot/netperf-server.rcS delete mode 100644 configs/boot/netperf-stream-client.rcS delete mode 100644 configs/boot/netperf-stream-nt-client.rcS delete mode 100644 configs/boot/netperf-stream-udp-client.rcS delete mode 100644 configs/boot/netperf-stream-udp-local.rcS delete mode 100644 configs/boot/nfs-client-dbench.rcS delete mode 100755 configs/boot/nfs-client-nhfsstone.rcS delete mode 100755 configs/boot/nfs-client-smallb.rcS delete mode 100755 configs/boot/nfs-client-tcp-smallb.rcS delete mode 100755 configs/boot/nfs-client-tcp.rcS delete mode 100755 configs/boot/nfs-client.rcS delete mode 100755 configs/boot/nfs-server-nhfsstone.rcS delete mode 100755 configs/boot/nfs-server.rcS delete mode 100644 configs/boot/null.rcS delete mode 100644 configs/boot/ping-client.rcS delete mode 100644 configs/boot/ping-server.rcS delete mode 100644 configs/boot/setup delete mode 100644 configs/boot/spec-surge-client.rcS delete mode 100755 configs/boot/spec-surge-server.rcS delete mode 100755 configs/boot/surge-client.rcS delete mode 100755 configs/boot/surge-server.rcS diff --git a/configs/boot/ammp.rcS b/configs/boot/ammp.rcS deleted file mode 100644 index 485244c3c7..0000000000 --- a/configs/boot/ammp.rcS +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -cd /benchmarks/spec/ammp00/ - -/sbin/m5 checkpoint 0 0 -/sbin/m5 checkpoint 100000000 200000000 - -/sbin/m5 loadsymbol - -/sbin/m5 resetstats -./ammp < input/mdred.in -/sbin/m5 exit diff --git a/configs/boot/ammp.symbol b/configs/boot/ammp.symbol deleted file mode 100644 index 93ef405556..0000000000 --- a/configs/boot/ammp.symbol +++ /dev/null @@ -1,257 +0,0 @@ -000000012001da40 T AMMPmonitor -000000012001dfc0 T AMMPmonitor_mute -0000000120034338 D _DYNAMIC -00000001200346c8 D _GLOBAL_OFFSET_TABLE_ -0000000120034d60 G _IO_stdin_used -0000000120034500 T _PROCEDURE_LINKAGE_TABLE_ -00000001200344e0 d __CTOR_END__ -00000001200344d8 d __CTOR_LIST__ -00000001200344f0 d __DTOR_END__ -00000001200344e8 d __DTOR_LIST__ -0000000120034334 r __FRAME_END__ -00000001200344f8 d __JCR_END__ -00000001200344f8 d __JCR_LIST__ -0000000120034da0 A __bss_start -00000001200328c8 D __data_start -0000000120020c40 t __do_global_ctors_aux -0000000120001090 t __do_global_dtors_aux -0000000120034d68 G __dso_handle -00000001200328c8 A __fini_array_end -00000001200328c8 A __fini_array_start -00000001200328c8 A __init_array_end -00000001200328c8 A __init_array_start -0000000120020ba0 T __libc_csu_fini -0000000120020af0 T __libc_csu_init -0000000120001050 W __start -0000000120034da0 A _edata -0000000120035418 A _end -0000000120020ca0 T _fini -0000000120000fe8 T _init -0000000120001050 T _start -000000012000d220 T a_angle -000000012000b3d0 T a_bond -000000012000e1b0 T a_c_angle -0000000120009cd0 T a_d_zero -0000000120009c90 T a_f_zero -0000000120009f70 T a_ftodx -000000012000a000 T a_ftogx -000000012000a090 T a_ftovx -0000000120009d20 T a_g_zero -0000000120010950 T a_hybrid -000000012000a7c0 T a_inactive_f_zero -0000000120009e50 T a_inc_d -0000000120009dc0 T a_inc_f -0000000120009ee0 T a_inc_v -000000012000a370 T a_l2_d -000000012000a220 T a_l2_f -000000012000a290 T a_l2_g -000000012000a300 T a_l2_v -0000000120008bf0 T a_m_serial -000000012000a1a0 T a_max_d -000000012000a120 T a_max_f -000000012000d570 T a_mmangle -000000012000b620 T a_mmbond -0000000120009c30 T a_next -0000000120005350 T a_noel -0000000120004700 T a_nonbon -0000000120009bc0 T a_number -00000001200096b0 T a_pr_beta -000000012000a660 T a_readvelocity -0000000120020750 T a_restrain -000000012001eda0 T a_tether -000000012001a2e0 T a_torsion -0000000120009d70 T a_v_zero -0000000120003c90 T aaerror -0000000120009a60 T activate -000000012001fef0 T alltether -0000000120004370 T analyze -000000012000c0d0 T angle -0000000120034df8 S angle_first -0000000120034e00 S angle_last -0000000120034dd0 s ap.2 -0000000120034de0 s ap.4 -0000000120008970 T atom -0000000120034dc8 s atomNUMBER -0000000120034dcc s atomUPDATE -000000012000a8b0 T bond -0000000120034de8 S bond_first -0000000120034df0 S bond_last -000000012000bf20 T bond_length -000000012001f240 T bstrot -0000000120034ea0 b buff.0 -000000012001ad40 T cngdel -0000000120034da0 s completed.1 -00000001200200c0 T cpyvec -00000001200328c8 W data_start -0000000120034d98 g dielecold.0 -000000012000efe0 T dump_angles -0000000120008d00 T dump_atoms -000000012000be40 T dump_bonds -000000012000a3e0 T dump_excludes -000000012000a6c0 T dump_force -0000000120011a50 T dump_hybrids -0000000120005c20 T dump_noels -0000000120008f40 T dump_pdb -0000000120020a10 T dump_restrains -000000012001ffe0 T dump_tethers -0000000120017b30 T dump_tgroup -000000012001a170 T dump_torsions -000000012001b7a0 T dump_variable -000000012000a590 T dump_velocity -0000000120034d7c g echo.0 -0000000120001760 T eval -000000012000c580 T f_angle -000000012000ac60 T f_bond -0000000120001230 T f_box -000000012000dc50 T f_c_angle -000000012000ea10 T f_ho_angle -000000012000bab0 T f_ho_bond -0000000120011020 T f_ho_hybrid -0000000120005840 T f_ho_noel -000000012001fca0 T f_ho_tether -00000001200102b0 T f_hybrid -000000012000cd10 T f_mmangle -000000012000b0e0 T f_mmbond -0000000120005060 T f_noel -00000001200155d0 T f_nonbon -0000000120020500 T f_restrain -000000012001ebd0 T f_tether -0000000120019850 T f_torsion -000000012000fbd0 T f_trace -0000000120034db8 S first -0000000120035058 B forces -0000000120001130 t frame_dummy -0000000120014b20 T fv_update_nonbon -0000000120034e58 s fx.0 -0000000120034e60 s fy.1 -0000000120034e68 s fz.2 -000000012000ef40 T get_angle -000000012000bda0 T get_bond -000000012000c050 T get_bond_pointer -000000012001b6e0 T get_f_variable -00000001200119b0 T get_hybrid -000000012001b740 T get_i_variable -0000000120005b80 T get_noel -0000000120020970 T get_restrain -000000012001a9f0 T get_torsion -00000001200184a0 T get_torsion_value -000000012001ca50 T getatomdata -000000012000f130 T gsdg -000000012000e5a0 T gsdg_angle -000000012000bfc0 T gsdg_bond -000000012000f810 T gsdg_dgeom -0000000120011790 T gsdg_hybrid -000000012000f6c0 T gsdg_line_search -0000000120005d30 T gsdg_noel -000000012001a850 T gsdg_torsion -0000000120034d84 g highest.0 -0000000120007490 T hpac -000000012000fe30 T hybrid -0000000120034e08 S hybrid_first -0000000120034e10 S hybrid_last -0000000120034e70 S in_mom_list -0000000120009920 T inactivate -00000001200097a0 T inactivate_non_zero -0000000120034d80 g inloop.1 -0000000120034e74 s ip.1 -0000000120034e78 s jp.2 -0000000120034e7c s kp.3 -0000000120034dc0 S last -0000000120034dd8 s lastmatched.3 -000000012001b0d0 T linmin -0000000120003f80 T loadloop -0000000120034e28 s local.3 -0000000120034d88 g lowest.1 -0000000120034e20 s lsize.2 -0000000120001180 T main -0000000120017c10 T match_tgroup -000000012001b450 T match_variable -000000012001b860 T math -000000012001cd40 T math_findlabel -000000012001ccb0 T math_match_atom -0000000120020100 T matmul -0000000120012b90 T mm_fv_update_nonbon -000000012001cef0 T mom -000000012001d3f0 T mom_add -000000012001d900 T mom_jab -00000001200350f8 B mom_list -000000012001d890 T mom_param -000000012001d600 T mom_solve -0000000120004c70 T noel -0000000120034da8 S noel_first -0000000120034db0 S noel_last -0000000120034d78 G nused -0000000120034e18 s oldatomnumber.0 -0000000120034d90 g oldcutoff.4 -0000000120034d70 g p.0 -0000000120006430 T pac -0000000120006dd0 T pacpac -00000001200350a8 B potentials -0000000120007ac0 T ppac -0000000120008180 T ptpac -000000012001e840 T rand3 -000000012001e480 T randf -000000012001e760 T randg -0000000120001550 T read_eval_do -00000001200201c0 T restrain -0000000120034e90 S restrain_first -0000000120034e98 S restrain_last -000000012001b4e0 T set_f_variable -000000012001b5e0 T set_i_variable -0000000120018730 T set_torsion -000000012001e2a0 T significance -0000000120034e1c s since.1 -000000012001aa90 T steep -0000000120018f50 T tailor_exclude -0000000120018d30 T tailor_include -0000000120019110 T tailor_qab -000000012001e940 T tether -0000000120034e80 S tether_first -0000000120034e88 S tether_last -00000001200171f0 T tg_apply -0000000120017490 T tg_d_apply -0000000120016fd0 T tg_do_search -0000000120034e30 S tg_first -0000000120017a20 T tg_gen_con -0000000120016b90 T tg_init -0000000120017700 T tg_nonbon -0000000120016220 T tgroup -0000000120004220 T tisint -0000000120003cd0 T tisvariable -00000001200189e0 T tmap -0000000120017ec0 T tmin -0000000120019190 T torsion -0000000120034e38 S torsion_first -0000000120034e40 S torsion_last -0000000120006840 T tpac -0000000120016800 T tsearch -0000000120017c80 T tset -0000000120018200 T tset_bond_build -0000000120012100 T u_f_nonbon -0000000120011b60 T u_v_nonbon -0000000120012770 T uselist -000000012000c310 T v_angle -000000012000aac0 T v_bond -0000000120001540 T v_box -000000012000d930 T v_c_angle -000000012000e750 T v_ho_angle -000000012000b8a0 T v_ho_bond -0000000120010ce0 T v_ho_hybrid -00000001200055e0 T v_ho_noel -000000012001faf0 T v_ho_tether -000000012000fff0 T v_hybrid -0000000120005dc0 T v_maxwell -000000012000ca20 T v_mmangle -000000012000aef0 T v_mmbond -0000000120004e60 T v_noel -0000000120015a80 T v_nonbon -0000000120005fd0 T v_rescale -0000000120020360 T v_restrain -000000012001eab0 T v_tether -00000001200193e0 T v_torsion -000000012000f990 T v_trace -000000012001c6f0 T validatom -0000000120034e48 S variableFIRST -0000000120034e50 S variableLAST -00000001200061a0 T verlet -0000000120015ec0 T zone_nonbon diff --git a/configs/boot/art.rcS b/configs/boot/art.rcS deleted file mode 100644 index caca5889e3..0000000000 --- a/configs/boot/art.rcS +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -#/benchmarks/spec/art00/art -scanfile c756hel.in -trainfile1 a10.img -stride 2 -startx 134 -starty 220 -endx 184 -endy 240 -objects 3 -cd /benchmarks/spec/art00/ -/sbin/m5 resetstats -/benchmarks/spec/art00/art -scanfile c756hel.in -trainfile1 a10.img -stride 5 -startx 134 -starty 220 -endx 184 -endy 240 -objects 1 -/sbin/m5 exit diff --git a/configs/boot/bn-app.rcS b/configs/boot/bn-app.rcS deleted file mode 100644 index 6fe2800f44..0000000000 --- a/configs/boot/bn-app.rcS +++ /dev/null @@ -1,3 +0,0 @@ -cd /benchmarks/bn -./bottleneck-app -m5 exit diff --git a/configs/boot/bonnie.rcS b/configs/boot/bonnie.rcS deleted file mode 100644 index 65b2fd6c9a..0000000000 --- a/configs/boot/bonnie.rcS +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "Mounting empty disk..." -mkdir /tmp-space -/bin/mount /dev/hdb1 /tmp-space -chmod a+rwx /tmp-space -echo "done." - -/bin/bonnie++ -u 99 -s 700 -r 0 -n 0 -f -F -d /tmp-space -m5 exit diff --git a/configs/boot/bonnie.symbol b/configs/boot/bonnie.symbol deleted file mode 100644 index 041753eb2c..0000000000 --- a/configs/boot/bonnie.symbol +++ /dev/null @@ -1,309 +0,0 @@ -0000000120025cb0 V DW.ref._ZTISt9bad_alloc -0000000120025c98 V DW.ref.__gxx_personality_v0 -0000000120025018 D _DYNAMIC -00000001200255a0 D _GLOBAL_OFFSET_TABLE_ -0000000120025c80 G _IO_stdin_used -00000001200251e0 T _PROCEDURE_LINKAGE_TABLE_ -000000012000e8a0 T _Unwind_Backtrace -000000012000e860 T _Unwind_DeleteException -000000012000c290 T _Unwind_FindEnclosingFunction -0000000120010df0 T _Unwind_Find_FDE -0000000120010850 t _Unwind_Find_registered_FDE -000000012000e470 T _Unwind_ForcedUnwind -000000012000e340 t _Unwind_ForcedUnwind_Phase2 -000000012000c260 T _Unwind_GetCFA -000000012000c2d0 T _Unwind_GetDataRelBase -000000012000e9d0 T _Unwind_GetGR -000000012000e9f0 T _Unwind_GetIP -000000012000c270 T _Unwind_GetLanguageSpecificData -000000012000c280 T _Unwind_GetRegionStart -000000012000c2e0 T _Unwind_GetTextRelBase -0000000120010ac0 t _Unwind_IteratePhdrCallback -000000012000e160 T _Unwind_RaiseException -000000012000e070 t _Unwind_RaiseException_Phase2 -000000012000e5c0 T _Unwind_Resume -000000012000e710 T _Unwind_Resume_or_Rethrow -000000012000e9e0 T _Unwind_SetGR -000000012000ea00 T _Unwind_SetIP -0000000120003cb0 T _Z10TestDirOpsiiiiR12CGlobalItems -0000000120003220 T _Z11TestFileOpsiR12CGlobalItems -0000000120009250 T _Z11bon_setugidPKcS0_b -00000001200096b4 t _Z12read_sleb128PKhPl -0000000120009678 t _Z12read_uleb128PKhPm -0000000120009a04 t _Z15get_ttype_entryP16lsda_header_infom -0000000120009a84 t _Z16get_adjusted_ptrPKSt9type_infoS1_PPv -000000012000ab40 t _Z16get_globals_dtorPv -000000012000ab9c t _Z16get_globals_initv -00000001200098a8 t _Z17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info -0000000120009b30 t _Z20check_exception_specP16lsda_header_infoPKSt9type_infoPvl -0000000120009be0 t _Z20empty_exception_specP16lsda_header_infol -00000001200095b4 t _Z21base_of_encoded_valuehP15_Unwind_Context -000000012000abe0 t _Z21get_globals_init_oncev -0000000120009548 t _Z21size_of_encoded_valueh -000000012000a3ec t _Z23__gxx_exception_cleanup19_Unwind_Reason_CodeP17_Unwind_Exception -000000012000970c t _Z28read_encoded_value_with_basehmPKhPm -0000000120004200 T _Z5usagev -0000000120004510 T _Z6seekerP4ForkPvi -0000000120004240 T _Z8io_errorPKcb -000000012000a310 T _ZN10__cxxabiv111__terminateEPFvvE -000000012000a374 T _ZN10__cxxabiv112__unexpectedEPFvvE -000000012000b08c T _ZN10__cxxabiv117__class_type_infoD0Ev -000000012000b058 T _ZN10__cxxabiv117__class_type_infoD1Ev -000000012000b024 T _ZN10__cxxabiv117__class_type_infoD2Ev -0000000120025ca0 G _ZN10__cxxabiv119__terminate_handlerE -000000012000b148 T _ZN10__cxxabiv120__si_class_type_infoD0Ev -000000012000b114 T _ZN10__cxxabiv120__si_class_type_infoD1Ev -000000012000b0e0 T _ZN10__cxxabiv120__si_class_type_infoD2Ev -0000000120025ca8 G _ZN10__cxxabiv120__unexpected_handlerE -000000012000b204 T _ZN10__cxxabiv121__vmi_class_type_infoD0Ev -000000012000b1d0 T _ZN10__cxxabiv121__vmi_class_type_infoD1Ev -000000012000b19c T _ZN10__cxxabiv121__vmi_class_type_infoD2Ev -00000001200024b0 T _ZN12CGlobalItems18decrement_and_waitEi -0000000120002380 T _ZN12CGlobalItemsC1EPb -0000000120002250 T _ZN12CGlobalItemsC2EPb -0000000120008de0 T _ZN4Fork2goEPFvPS_PviES1_i -0000000120009080 T _ZN4Fork4ReadEPvii -0000000120009010 T _ZN4Fork4waitEv -0000000120009160 T _ZN4Fork5WriteEPvii -0000000120008d60 T _ZN4Fork7startitEP11THREAD_DATA -0000000120008d40 T _ZN4ForkC1Ev -0000000120008d20 T _ZN4ForkC2Ev -0000000120004cd0 T _ZN7CFileOp10read_blockEPv -0000000120004f90 T _ZN7CFileOp11write_blockEPv -0000000120004e70 T _ZN7CFileOp15read_block_getcEPc -0000000120005080 T _ZN7CFileOp16write_block_putcEv -0000000120005180 T _ZN7CFileOp4openEPKcbb -0000000120004a40 T _ZN7CFileOp4seekEii -0000000120005770 T _ZN7CFileOp5closeEv -0000000120005910 T _ZN7CFileOp6doseekElb -0000000120005630 T _ZN7CFileOp6m_openEPKcib -0000000120005430 T _ZN7CFileOp6reopenEbb -0000000120004760 T _ZN7CFileOp9seek_testEbR9Semaphore -0000000120005330 T _ZN7CFileOpC1ER8BonTimeriib -0000000120005230 T _ZN7CFileOpC2ER8BonTimeriib -0000000120004400 T _ZN7CFileOpD1Ev -00000001200042f0 T _ZN7CFileOpD2Ev -0000000120007b40 T _ZN8BonTimer10InitializeEv -0000000120007820 T _ZN8BonTimer10cpu_so_farEv -0000000120007c80 T _ZN8BonTimer10print_statE7tests_t -0000000120007f80 T _ZN8BonTimer11PrintHeaderEP8_IO_FILE -00000001200078f0 T _ZN8BonTimer11get_cpu_useEv -0000000120007970 T _ZN8BonTimer11get_delta_tE7tests_t -00000001200077e0 T _ZN8BonTimer11time_so_farEv -0000000120007860 T _ZN8BonTimer12get_cur_timeEv -0000000120007b70 T _ZN8BonTimer14print_cpu_statE7tests_t -0000000120007e40 T _ZN8BonTimer15print_file_statE7tests_t -0000000120007a10 T _ZN8BonTimer16add_delta_reportER8report_s7tests_t -00000001200079c0 T _ZN8BonTimer16get_delta_reportER8report_s -0000000120008030 T _ZN8BonTimer8DoReportEPKciiiiiiP8_IO_FILE -0000000120007790 T _ZN8BonTimer9timestampEv -0000000120007b00 T _ZN8BonTimerC1Ev -0000000120007ac0 T _ZN8BonTimerC2Ev -00000001200061a0 T _ZN9COpenTest10make_namesEb -0000000120005bf0 T _ZN9COpenTest11random_sortEv -0000000120007400 T _ZN9COpenTest11stat_randomER8BonTimer -0000000120006520 T _ZN9COpenTest13create_a_fileEPKcPcii -0000000120006710 T _ZN9COpenTest13create_a_linkEPKcS1_i -0000000120006c50 T _ZN9COpenTest13delete_randomER8BonTimer -00000001200074c0 T _ZN9COpenTest15stat_sequentialER8BonTimer -0000000120006f10 T _ZN9COpenTest17delete_sequentialER8BonTimer -0000000120006830 T _ZN9COpenTest6createEPKcR8BonTimeriiiib -0000000120007280 T _ZN9COpenTest9stat_fileEPKc -0000000120005b50 T _ZN9COpenTestC1EibPb -0000000120005ab0 T _ZN9COpenTestC2EibPb -0000000120005f40 T _ZN9COpenTestD1Ev -0000000120005ce0 T _ZN9COpenTestD2Ev -0000000120008aa0 T _ZN9Semaphore18decrement_and_waitEi -0000000120008920 T _ZN9Semaphore6createEi -0000000120008850 T _ZN9Semaphore9clear_semEv -0000000120008be0 T _ZN9Semaphore9get_mutexEv -0000000120008a10 T _ZN9Semaphore9get_semidEv -0000000120008c80 T _ZN9Semaphore9put_mutexEv -00000001200087d0 T _ZN9SemaphoreC1Eiii -0000000120008750 T _ZN9SemaphoreC2Eiii -000000012000b258 T _ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj -000000012000ba74 T _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE -000000012000b2b8 T _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv -000000012000b4c0 T _ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE -000000012000b330 T _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_ -000000012000baa4 T _ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE -000000012000b510 T _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE -000000012000b340 T _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_ -000000012000bb38 T _ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE -000000012000b5c4 T _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE -000000012000b394 T _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_ -000000012000ab30 T _ZNKSt9exception4whatEv -000000012000b00c T _ZNKSt9type_info10__do_catchEPKS_PPvj -000000012000b01c T _ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv -000000012000affc T _ZNKSt9type_info14__is_pointer_pEv -000000012000b004 T _ZNKSt9type_info15__is_function_pEv -000000012000afa8 T _ZNSt10bad_typeidD0Ev -000000012000af74 T _ZNSt10bad_typeidD1Ev -000000012000af40 T _ZNSt10bad_typeidD2Ev -000000012000aadc T _ZNSt13bad_exceptionD0Ev -000000012000aaa8 T _ZNSt13bad_exceptionD1Ev -000000012000aa74 T _ZNSt13bad_exceptionD2Ev -000000012000aeec T _ZNSt8bad_castD0Ev -000000012000aeb8 T _ZNSt8bad_castD1Ev -000000012000ae84 T _ZNSt8bad_castD2Ev -000000012000add4 T _ZNSt9bad_allocD0Ev -000000012000ada0 T _ZNSt9bad_allocD1Ev -000000012000ad6c T _ZNSt9bad_allocD2Ev -000000012000aa40 T _ZNSt9exceptionD0Ev -000000012000aa2c T _ZNSt9exceptionD1Ev -000000012000aa18 T _ZNSt9exceptionD2Ev -000000012000ae50 T _ZNSt9type_infoD0Ev -000000012000ae3c T _ZNSt9type_infoD1Ev -000000012000ae28 T _ZNSt9type_infoD2Ev -000000012000a39c T _ZSt10unexpectedv -000000012000a3bc T _ZSt13set_terminatePFvvE -000000012000a3d4 T _ZSt14set_unexpectedPFvvE -000000012000ad54 T _ZSt15set_new_handlerPFvvE -000000012000a9e4 T _ZSt18uncaught_exceptionv -0000000120025cd0 G _ZSt7nothrow -000000012000a354 T _ZSt9terminatev -00000001200127d8 V _ZTIN10__cxxabiv117__class_type_infoE -00000001200127f0 V _ZTIN10__cxxabiv120__si_class_type_infoE -0000000120012808 V _ZTIN10__cxxabiv121__vmi_class_type_infoE -00000001200127c0 V _ZTISt10bad_typeid -0000000120012578 V _ZTISt13bad_exception -00000001200127a8 V _ZTISt8bad_cast -00000001200125d8 V _ZTISt9bad_alloc -0000000120012568 V _ZTISt9exception -0000000120012798 V _ZTISt9type_info -000000012001286b V _ZTSN10__cxxabiv117__class_type_infoE -0000000120012846 V _ZTSN10__cxxabiv120__si_class_type_infoE -0000000120012820 V _ZTSN10__cxxabiv121__vmi_class_type_infoE -000000012001288d V _ZTSSt10bad_typeid -0000000120012590 V _ZTSSt13bad_exception -000000012001289c V _ZTSSt8bad_cast -00000001200125f0 V _ZTSSt9bad_alloc -00000001200125a2 V _ZTSSt9exception -00000001200128a8 V _ZTSSt9type_info -00000001200126b0 V _ZTVN10__cxxabiv117__class_type_infoE -0000000120012658 V _ZTVN10__cxxabiv120__si_class_type_infoE -0000000120012600 V _ZTVN10__cxxabiv121__vmi_class_type_infoE -0000000120012708 V _ZTVSt10bad_typeid -0000000120012518 V _ZTVSt13bad_exception -0000000120012730 V _ZTVSt8bad_cast -00000001200125b0 V _ZTVSt9bad_alloc -0000000120012540 V _ZTVSt9exception -0000000120012758 V _ZTVSt9type_info -0000000120025cb8 g _ZZ18__gthread_active_pvE20__gthread_active_ptr -0000000120025cc8 g _ZZ18__gthread_active_pvE20__gthread_active_ptr -0000000120025cc4 g _ZZ21get_globals_init_oncevE4once -0000000120009518 T _ZdlPv -000000012000a648 T _Znam -000000012000a580 T _Znwm -00000001200251c0 d __CTOR_END__ -00000001200251b8 d __CTOR_LIST__ -00000001200251d0 d __DTOR_END__ -00000001200251c8 d __DTOR_LIST__ -0000000120024f30 r __FRAME_END__ -00000001200251d8 d __JCR_END__ -00000001200251d8 d __JCR_LIST__ -0000000120025ce8 A __bss_start -000000012000a694 T __cxa_allocate_exception -000000012000a884 T __cxa_begin_catch -000000012000a19c T __cxa_call_unexpected -000000012000a930 T __cxa_end_catch -000000012000a7b4 T __cxa_free_exception -000000012000ac84 T __cxa_get_globals -000000012000ac3c T __cxa_get_globals_fast -000000012000a4f8 T __cxa_rethrow -000000012000a45c T __cxa_throw -0000000120024000 D __data_start -000000012000fa50 T __deregister_frame -000000012000fa20 T __deregister_frame_info -000000012000f8c0 T __deregister_frame_info_bases -0000000120011470 t __do_global_ctors_aux -0000000120002160 t __do_global_dtors_aux -0000000120025c88 G __dso_handle -000000012000bd74 T __dynamic_cast -0000000120024000 A __fini_array_end -0000000120024000 A __fini_array_start -000000012000d250 T __frame_state_for -0000000120025ce0 g __gthread_active_ptr.0 -0000000120025cd8 g __gthread_active_ptr.1 -0000000120009c28 T __gxx_personality_v0 -0000000120024000 A __init_array_end -0000000120024000 A __init_array_start -00000001200113e0 T __libc_csu_fini -0000000120011350 T __libc_csu_init -0000000120025d00 S __new_handler -000000012000f6f0 T __register_frame -000000012000f6b0 T __register_frame_info -000000012000f5f0 T __register_frame_info_bases -000000012000f820 T __register_frame_info_table -000000012000f760 T __register_frame_info_table_bases -000000012000f860 T __register_frame_table -0000000120002120 W __start -0000000120025ce8 A _edata -0000000120035db0 A _end -00000001200114d0 T _fini -00000001200020b0 T _init -0000000120002120 T _start -0000000120010250 t add_fdes -0000000120025cea s already_printed_error -00000001200094b0 T arm -0000000120010a30 t base_from_cb_data -000000012000fab0 t base_from_object -000000012000bf50 t base_of_encoded_value -00000001200094f8 T checkpoint -00000001200100e0 t classify_object_over_fdes -0000000120025ce8 s completed.1 -00000001200024f0 T ctrl_c_handler -0000000120024000 W data_start -0000000120009508 T debugbreak -00000001200094e8 T dump_stats -00000001200094f0 T dumpreset_stats -0000000120035d40 b dwarf_reg_size_table -0000000120025d30 b emergency_buffer -0000000120024008 d emergency_mutex -0000000120025cf0 s emergency_used -000000012000caa0 t execute_cfa_program -000000012000c520 t execute_stack_op -0000000120025ce9 s exitNow -000000012000c2f0 t extract_cie_info -000000012000fd20 t fde_mixed_encoding_compare -000000012000fc60 t fde_single_encoding_compare -00000001200111d0 t fde_split -000000012000fc30 t fde_unencoded_compare -0000000120002200 t frame_dummy -000000012000fe00 t frame_heapsort -000000012000fb40 t get_cie_encoding -0000000120025cf8 s globals_key -0000000120035d30 b globals_static -000000012000ea10 t init_dwarf_reg_size_table -0000000120010e90 t init_object -00000001200094d8 T initparam -00000001200094c0 T ivlb -00000001200094c8 T ivle -00000001200103d0 t linear_search_fdes -00000001200094d0 T m5exit -0000000120002590 T main -0000000120025d10 s marker.1 -0000000120035d88 b object_mutex -0000000120025d08 s once_regsizes.0 -0000000120025c90 g p.0 -00000001200094b8 T quiesce -000000012000c0d0 t read_encoded_value_with_base -000000012000f460 t read_encoded_value_with_base -000000012000c060 t read_sleb128 -000000012000f3f0 t read_sleb128 -000000012000c020 t read_uleb128 -000000012000f3b0 t read_uleb128 -0000000120009500 T readfile -00000001200094e0 T reset_stats -0000000120010560 t search_object -0000000120025d20 s seen_objects -000000012000bed0 t size_of_encoded_value -000000012000f330 t size_of_encoded_value -0000000120009510 T switchcpu -0000000120025d18 s unseen_objects -0000000120025cc0 g use_thread_key -000000012000cf90 t uw_frame_state_for -000000012000d590 t uw_init_context_1 -000000012000d650 t uw_install_context_1 -000000012000d540 t uw_update_context -000000012000d390 t uw_update_context_1 diff --git a/configs/boot/bzip.rcS b/configs/boot/bzip.rcS deleted file mode 100644 index 369659ca00..0000000000 --- a/configs/boot/bzip.rcS +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -cd /benchmarks/spec/bzip200/ -/sbin/m5 resetstats -/benchmarks/spec/bzip200/bzip2 lgred.graphic 1 -/sbin/m5 exit diff --git a/configs/boot/cc1.symbol b/configs/boot/cc1.symbol deleted file mode 100644 index 16c16912bc..0000000000 --- a/configs/boot/cc1.symbol +++ /dev/null @@ -1,3454 +0,0 @@ -00000001201fec60 G DFbignan -00000001201fec68 G DFlittlenan -0000000120006f30 T GNU_xref_begin -0000000120006f70 T GNU_xref_end -00000001201e9b60 d Reg_names -00000001201fec70 G SFbignan -00000001201fec74 G SFlittlenan -00000001201e9ff8 D TFbignan -00000001201ea008 D TFlittlenan -00000001201e82c8 D W_options -00000001201ea018 D XFbignan -00000001201ea024 D XFlittlenan -00000001201fad48 D _DYNAMIC -00000001201fb210 D _GLOBAL_OFFSET_TABLE_ -00000001201febe8 G _IO_stdin_used -00000001201faf10 T _PROCEDURE_LINKAGE_TABLE_ -00000001201faef0 d __CTOR_END__ -00000001201faee8 d __CTOR_LIST__ -00000001201faf00 d __DTOR_END__ -00000001201faef8 d __DTOR_LIST__ -00000001201fad44 r __FRAME_END__ -00000001201faf08 d __JCR_END__ -00000001201faf08 d __JCR_LIST__ -00000001201fecdc A __bss_start -00000001201e6a58 D __data_start -000000012019eb20 t __do_global_ctors_aux -00000001200019e0 t __do_global_dtors_aux -00000001201febf0 G __dso_handle -00000001201e6a58 A __fini_array_end -00000001201e6a58 A __fini_array_start -00000001201e6a58 A __init_array_end -00000001201e6a58 A __init_array_start -000000012019ea80 T __libc_csu_fini -000000012019e9d0 T __libc_csu_init -00000001200019a0 W __start -00000001201fecdc A _edata -00000001202157c8 A _end -000000012019eb80 T _fini -0000000120001938 T _init -00000001200019a0 T _start -00000001202003e8 S abs_optab -00000001200d89c0 t abstract_origin_attribute -000000012016a550 t actual_hazard -000000012016af00 t actual_hazard_this_instance -000000012016fb20 t add_bb_string -00000001201831a0 T add_clobbers -00000001201ff138 s add_cost -0000000120200858 S add_cost -0000000120164b10 t add_dependence -0000000120055d40 T add_double -00000001200b4c60 T add_insn -00000001200b2c40 T add_insn_after -00000001200b2d90 T add_insn_before -000000012002f860 t add_ixpansion -00000001200fed90 t add_label_notes -0000000120197770 T add_operand -0000000120200408 S add_optab -000000012015d210 t add_to_delay_list -00000001201ff5f8 s added_links_insn -00000001201ff4c0 s addr_combined_regs -00000001201ff4b8 s addr_placeholder -00000001201731d0 T address_operand -00000001201720f0 T adj_offsettable_operand -00000001200dfe00 t adjust_copied_decl_tree -000000012016aa30 t adjust_priority -0000000120095b20 T adjust_stack -00000001200291a0 t affix_data_type -00000001201ff588 s after_insn_hard_regs -0000000120062e10 T aggregate_value_p -00000001201fed48 s align.4 -000000012005f550 t all_blocks -000000012006a350 T all_cases_count -00000001201eb418 d all_from_align -00000001201ff3e8 s all_minus_one -0000000120200110 S all_types_permanent -0000000120134ef0 t alloc_qty_for_scratch -0000000120094f90 T allocate_dynamic_stack_space -000000012010fc50 T allocate_for_life_analysis -0000000120154180 t allocate_reload_reg -00000001200422b0 T allocation_temporary_p -00000001201ff808 s allocno_calls_crossed -000000012013a160 t allocno_compare -00000001201ff818 s allocno_live_length -00000001201ff810 s allocno_n_refs -00000001201ff7a0 s allocno_order -00000001201ff798 s allocno_reg -00000001201ff7c0 s allocno_row_words -00000001201ff7a8 s allocno_size -00000001201ff820 s allocnos_live -00000001201fed6c s already.0 -00000001201ff698 s altclass -000000012014b230 t alter_reg -000000012016e1e0 T alter_subreg -0000000120140e20 t alternative_allows_memconst -0000000120190fb0 t alu_unit_blockage -000000012018cc20 T alu_unit_blockage_range -000000012018c790 T alu_unit_ready_cost -00000001202005d8 S and_optab -00000001200387d0 T announce_function -00000001201ff258 s anonymous_types -0000000120095bd0 T anti_adjust_stack -00000001201645f0 T anti_dependence -000000012006f4f0 T any_pending_cleanups -000000012016f6b0 T app_disable -000000012016f690 T app_enable -00000001201ffb1c s app_on -0000000120203548 b apply_args_mode -0000000120203748 b apply_args_reg_offset -0000000120082a30 T apply_args_register_offset -0000000120084640 t apply_args_size -00000001201ff108 s apply_args_value -000000012016fd70 T apply_change_group -0000000120122f00 t apply_distributive_law -0000000120203648 b apply_result_mode -0000000120084920 t apply_result_size -000000012010d890 t approx_final_value -00000001202007d8 S arg_pointer_rtx -00000001202001e8 S arg_pointer_save_area -00000001201e73ff d argnofun.1 -00000001201e73e8 d argstring.0 -0000000120197640 T arith32_operand -00000001201975c0 T arith5_operand -00000001201976b0 T arith64_operand -0000000120197540 T arith_operand -00000001201eb6b8 d arityvec -0000000120043af0 T array_type_nelts -00000001200ba350 t asctoe -00000001200ba340 t asctoe113 -00000001200ba310 t asctoe24 -00000001200ba320 t asctoe53 -00000001200ba330 t asctoe64 -00000001200ba360 t asctoeg -00000001202004f0 S ashl_optab -0000000120200608 S ashr_optab -00000001201fff10 S asm_file_name -000000012016f110 T asm_fprintf -000000012016c9c0 t asm_insn_count -0000000120171ab0 T asm_noperands -0000000120200058 S asm_out_file -00000001200a80b0 T assemble_alias -00000001200a8fb0 T assemble_align -00000001200a8b20 T assemble_asm -00000001200a8a10 T assemble_constant_align -00000001200a8cb0 T assemble_constructor -00000001200a8bd0 T assemble_destructor -00000001200a8dd0 T assemble_end_function -00000001200a9310 T assemble_external -00000001200a9320 T assemble_external_libcall -00000001200a8d40 T assemble_gc_entry -00000001200a9330 T assemble_global -00000001200a4660 T assemble_integer -00000001200a93b0 T assemble_label -00000001200a3d40 T assemble_name -00000001200a4890 T assemble_real -00000001200a2700 T assemble_start_function -00000001200a3e80 T assemble_static_space -00000001200a9060 T assemble_string -00000001200a40f0 T assemble_trampoline_template -00000001200a2be0 T assemble_variable -00000001200a8f30 T assemble_zeros -0000000120059c00 T assign_outer_stack_local -000000012005d300 T assign_parms -0000000120059a60 T assign_stack_local -0000000120059db0 T assign_stack_temp -00000001201e7368 d asso_values.0 -0000000120162c10 t attach_deaths -0000000120169c10 t attach_deaths_insn -0000000120040b10 T attribute_hash_list -0000000120040bc0 T attribute_list_contained -0000000120040b40 T attribute_list_equal -0000000120200b10 b attrtab -00000001201feec8 s attrtab_idx -0000000120200000 S aux_info_file -00000001201fefe0 s aux_info_file_name -000000012010cd40 T back_branch_in_range_p -00000001201ff8a4 s bad_spill_regs -000000012006c730 t balance_case_nodes -00000001201ff218 s base_label_num -00000001201ff520 s basic_block_drops_in -00000001202008c8 S basic_block_end -00000001202008d8 S basic_block_head -0000000120200878 S basic_block_live_at_start -00000001201ff528 s basic_block_loop_depth -0000000120215098 B basic_block_needs -00000001201045b0 t basic_induction_var -00000001201ffa18 s bb_dead_regs -00000001201fecb8 g bb_file_label_num -00000001201fecbc g bb_func_label_num -00000001201ffad0 s bb_head -00000001201ffa20 s bb_live_regs -00000001201fecb0 g bb_tail -00000001201ff968 s bb_ticks -0000000120081f90 T bc_adjust_stack -000000012019c610 T bc_align -000000012019b890 T bc_align_bytecode -000000012019bd00 T bc_align_const -000000012019bfa0 T bc_align_data -00000001200810f0 T bc_allocate_local -0000000120082af0 T bc_allocate_variable_array -000000012019b760 T bc_begin_function -0000000120063420 T bc_build_calldesc -0000000120081320 T bc_canonicalize_array_ref -000000012006ab50 t bc_check_for_full_enumeration_handling -000000012019c5f0 T bc_data -00000001201ffbc8 s bc_data_seg -000000012019b710 T bc_define_pointer -000000012019c760 T bc_emit -000000012019cb00 T bc_emit_bytecode -000000012019b960 T bc_emit_bytecode_const -000000012019ba90 T bc_emit_bytecode_labeldef -000000012019bb10 T bc_emit_bytecode_labelref -000000012019bc00 T bc_emit_code_labelref -000000012019c240 T bc_emit_common -000000012019bdd0 T bc_emit_const -000000012019bf60 T bc_emit_const_labeldef -000000012019bf80 T bc_emit_const_labelref -000000012019bea0 T bc_emit_const_skip -000000012019c070 T bc_emit_data -000000012019c200 T bc_emit_data_labeldef -000000012019c220 T bc_emit_data_labelref -000000012019c140 T bc_emit_data_skip -000000012019ac10 T bc_emit_instruction -000000012019c9b0 T bc_emit_labeldef -000000012019ca00 T bc_emit_labelref -000000012019c890 T bc_emit_skip -000000012019cc40 T bc_emit_trampoline -000000012019a140 T bc_end_function -0000000120081600 T bc_expand_address -000000012019d430 T bc_expand_binary_operation -0000000120081480 T bc_expand_component_address -0000000120081a90 T bc_expand_constructor -000000012019dd40 T bc_expand_conversion -0000000120068a10 t bc_expand_decl -0000000120068ce0 t bc_expand_decl_init -0000000120068110 t bc_expand_end_bindings -000000012006bc60 t bc_expand_end_case -0000000120065b50 t bc_expand_end_cond -000000012006fc40 t bc_expand_end_loop -000000012007b490 T bc_expand_expr -0000000120064180 t bc_expand_fixup -0000000120063670 T bc_expand_function_end -000000012005fcc0 T bc_expand_function_start -000000012006f690 t bc_expand_goto_internal -000000012019df90 T bc_expand_increment -0000000120069450 t bc_expand_start_case -0000000120065ab0 t bc_expand_start_cond -000000012019de90 T bc_expand_truth_conversion -000000012019d900 T bc_expand_unary_operation -0000000120064240 t bc_fixup_gotos -0000000120081910 T bc_gen_constr_label -000000012019ca60 T bc_gen_rtx -000000012019ba30 T bc_get_bytecode_label -000000012019c420 T bc_globalize_label -000000012019d350 T bc_init_mode_to_code_map -000000012006fe00 T bc_init_mode_to_opcode_maps -0000000120199ef0 T bc_initialize -0000000120082b60 T bc_load_bit_field -00000001200811a0 T bc_load_externaddr -0000000120081200 T bc_load_externaddr_id -0000000120081290 T bc_load_localaddr -0000000120080f90 T bc_load_memory -00000001200812d0 T bc_load_parmaddr -00000001200a9d10 t bc_make_decl_rtl -000000012006f5a0 T bc_new_uid -00000001200a9160 T bc_output_constructor -00000001200a9250 T bc_output_data_constructor -000000012019caf0 T bc_print_rtl -00000001200815a0 T bc_push_offset_and_size -000000012006a050 t bc_pushcase -0000000120081870 T bc_runtime_type_code -0000000120081f50 T bc_store_bit_field -0000000120081e50 T bc_store_field -0000000120081040 T bc_store_memory -000000012019c5d0 T bc_text -00000001201ffbc0 s bc_text_seg -00000001201ff0b0 s bc_uid.1 -000000012019ca50 T bc_write_file -000000012019ce50 T bc_xstrdup -000000012020c108 B bcc_gen_fctn -00000001202004d0 S bcmp_libfunc -0000000120200698 S bcopy_libfunc -00000001201eb43c d best_from_align -000000012002b5a0 T binary_op_error -0000000120043510 T binfo_member -000000012016add0 t birthing_insn_p -00000001200d8380 t bit_offset_attribute -000000012018ed90 T bit_unit_ready_cost -000000012010ce50 T biv_total_increment -0000000120132150 t block_alloc -00000001201ffb18 s block_depth -00000001201ff530 s block_live_static -0000000120198b80 t block_move_loop -0000000120191ea0 t block_move_no_loop -00000001201921e0 t block_move_sequence -00000001202002d0 S block_stack -00000001202002ac S block_start_count -00000001201ff0e8 s block_vector -000000012005f520 t blocks_nreverse -00000001201e9f94 d bmask -00000001201ffda0 S boolean_false_node -00000001201ffcc8 S boolean_true_node -00000001201ffe58 S boolean_type_node -0000000120038bb0 T botch -0000000120096150 t break_out_memory_refs -0000000120205fe4 b buffer.0 -0000000120206048 b buffer.1 -00000001202063cc b buffer.10 -0000000120206430 b buffer.11 -0000000120206494 b buffer.12 -00000001201fedf8 s buffer.2 -00000001202060ac b buffer.2 -0000000120206110 b buffer.3 -0000000120206174 b buffer.4 -00000001202061d8 b buffer.5 -000000012020623c b buffer.6 -00000001202062a0 b buffer.7 -0000000120206304 b buffer.8 -0000000120206368 b buffer.9 -00000001201feee0 s buffer_length.2 -000000012003fff0 T build -0000000120040250 T build1 -000000012001adb0 T build_array_ref -00000001200414f0 T build_array_type -000000012001c1a0 T build_binary_op -0000000120044230 T build_block -000000012001fc20 T build_c_cast -0000000120042a00 T build_complex -00000001200415e0 T build_complex_type -000000012001a930 T build_component_ref -00000001200255b0 T build_compound_expr -000000012001f570 T build_conditional_expr -0000000120044170 T build_decl -00000001200442b0 T build_decl_attribute_variant -00000001200437a0 T build_decl_list -0000000120014920 T build_enumerator -000000012001b260 T build_function_call -0000000120044ed0 T build_function_type -0000000120044dd0 T build_index_2_type -0000000120044c40 T build_index_type -000000012001abc0 T build_indirect_ref -00000001200427b0 T build_int_2_wide -0000000120045090 T build_method_type -0000000120020200 T build_modify_expr -00000001200403e0 T build_nt -0000000120006f10 T build_objc_string -0000000120045170 T build_offset_type -00000001200404a0 T build_parse_node -00000001200412a0 T build_pointer_type -00000001200413a0 T build_range_type -0000000120042800 T build_real -000000012003dc50 T build_real_from_int_cst -0000000120044fd0 T build_reference_type -000000012003e0c0 T build_string -0000000120043750 T build_tree_list -0000000120040590 T build_type_attribute_variant -0000000120040810 T build_type_copy -0000000120040740 T build_type_variant -000000012001e500 T build_unary_op -00000001200105e0 T builtin_function -00000001202006f4 S byte_mode -00000001200d81c0 t byte_size_attribute -0000000120200a28 S bytecode -0000000120200510 S bzero_libfunc -0000000120025510 T c_alignof -0000000120019fd0 T c_alignof_expr -000000012002d690 T c_build_type_variant -000000012000c410 T c_decode_option -0000000120024980 T c_expand_asm_operands -000000012002d190 T c_expand_expr_stmt -0000000120024c10 T c_expand_return -0000000120025bf0 T c_expand_start_case -00000001201ffc18 S c_function_chain -00000001201fedc0 s c_function_varargs -0000000120017a00 T c_mark_varargs -0000000120025430 T c_size_in_bytes -0000000120019e30 T c_sizeof -0000000120025350 T c_sizeof_nowarn -0000000120084500 t c_strlen -000000012010d100 t calculate_giv_inc -0000000120197400 T call_address_operand -0000000120200928 S call_fixed_reg_set -0000000120213ab0 B call_fixed_regs -0000000120200910 S call_used_reg_set -0000000120213a70 B call_used_regs -0000000120200978 S caller_save_needed -0000000120084d50 t calls_function_1 -00000001201ff128 s calls_function_save_exprs -000000012012c200 t can_combine_p -000000012009c7e0 T can_compare_p -00000001200a15b0 T can_extend_p -0000000120200800 S can_reach_end -00000001200e6860 T can_reverse_comparison_p -00000001201700e0 T cancel_changes -00000001201ff8c0 s cannot_omit_stores -00000001200e9090 t canon_hash -00000001200ea190 t canon_reg -00000001201648e0 t canon_rtx -000000012006f570 T case_index_expr_type -00000001202002c8 S case_stack -00000001201ff53c s cc0_live -0000000120200718 S cc0_rtx -00000001202007c8 S cc1_rtx -0000000120093200 T ceil_log2 -0000000120043540 T chain_member -00000001200435a0 T chain_member_purpose -0000000120043570 T chain_member_value -00000001200435f0 T chainon -00000001200b22f0 T change_address -0000000120209a58 b change_locs -0000000120044710 T change_main_variant -0000000120209800 b change_objects -0000000120209990 b change_old_codes -0000000120209be8 b change_olds -00000001201ffc30 S char_array_type_node -00000001201ffcb8 S char_type_node -000000012016fc40 T check_asm_operands -000000012002d290 T check_case_value -0000000120105f70 t check_dbra_loop -00000001201040a0 t check_final_value -000000012006a850 T check_for_full_enumeration_handling -000000012002d7a0 t check_format_info -000000012002cce0 T check_function_format -00000001200234d0 t check_init_type_bitfields -0000000120008020 T check_newline -000000012012ff00 T choose_hard_reg_mode -0000000120093540 t choose_multiplier -000000012014e7e0 t choose_reload_regs -0000000120213514 B class_narrowest_mode -00000001200b3080 T classify_insn -0000000120196810 T classify_integer -0000000120200240 S cleanup_label -00000001202002d8 S cleanups_this_call -0000000120200a40 b clear_binding_level -00000001200a9450 T clear_const_double_mem -000000012006e9f0 T clear_last_expr -0000000120042460 T clear_momentary -0000000120017050 T clear_parm_order -0000000120082a90 T clear_pending_stack_adjust -00000001201559d0 t clear_reg_live -0000000120153020 t clear_reload_reg_in_use -0000000120082650 T clear_storage -0000000120200358 S cmp_optab -000000012020c4a8 B code_to_optab -000000012002e9d0 t collect_iterators -0000000120114400 t combinable_i3pat -00000001201ff590 s combine_attempts -00000001201fef14 S combine_dump -00000001201ffef0 S combine_dump_file -00000001201ff598 s combine_extras -0000000120105650 t combine_givs -0000000120113b30 T combine_instructions -00000001201ff5bc s combine_max_regno -00000001201ff594 s combine_merges -00000001200fe3a0 t combine_movables -0000000120015c30 T combine_parm_decls -0000000120133580 t combine_regs -0000000120146c80 t combine_reloads -00000001200294d0 T combine_strings -00000001201ff59c s combine_successes -000000012005a0d0 T combine_temp_slots -00000001201fffd4 S combine_time -0000000120019070 T common_type -00000001200801f0 t compare -00000001200a5200 t compare_constant_1 -0000000120080310 T compare_from_rtx -0000000120152d50 t compare_spill_regs -00000001200e6bb0 T comparison_dominates_p -0000000120173a00 T comparison_operator -0000000120039530 t compile_file -00000001201feeb8 s compiled_from_record.0 -0000000120011560 T complete_array_type -00000001201fece0 s completed.1 -00000001201ffc08 S complex_double_type_node -00000001201ffe70 S complex_float_type_node -00000001201ffc38 S complex_integer_type_node -00000001201ffce8 S complex_long_double_type_node -00000001200196f0 T comptypes -0000000120200288 S cond_stack -00000001201968b0 T condition_value -00000001200e6db0 T condjump_in_parallel_p -00000001200e6cd0 T condjump_p -00000001201ff7b8 s conflicts -00000001201ff3f0 s consec_ints -0000000120105360 t consec_sets_giv -00000001201012d0 t consec_sets_invariant_p -0000000120200708 S const0_rtx -0000000120200780 S const1_rtx -0000000120200750 S const2_rtx -000000012004aac0 t const_binop -00000001201ff170 s const_double_chain -0000000120173400 T const_double_operand -00000001200a4df0 t const_hash -0000000120203b98 b const_hash_table -00000001201733f0 T const_int_operand -0000000120205b20 b const_int_rtx -00000001202006c8 S const_labelno -000000012018ee30 T const_num_delay_slots -00000001201ffe38 S const_ptr_type_node -00000001201ff188 s const_rtx_hash_table -00000001201ff1a8 s const_rtx_sym_hash_table -00000001200a8260 T const_section -00000001201ffe60 S const_string_type_node -0000000120213530 B const_tiny_rtx -00000001202007b8 S const_true_rtx -00000001200d9fa0 t const_value_attribute -000000012002cd30 T constant_expression_warning -00000001201ff438 s constant_pool_entries_cost -0000000120200798 S constm1_rtx -00000001201723a0 T constrain_operands -0000000120152980 t constraint_accepts_reg_p -00000001201feea0 s constructor_asmspec -00000001201fee58 s constructor_bit_index -00000001201fee68 s constructor_constant -00000001201fee98 s constructor_decl -00000001201fee80 s constructor_depth -00000001201fee60 s constructor_elements -00000001201fee70 s constructor_erroneous -00000001201fee28 s constructor_fields -00000001201fee84 s constructor_implicit -00000001201fee90 s constructor_incremental -00000001201fee30 s constructor_index -00000001201fee40 s constructor_max_index -00000001201fee00 S constructor_no_implicit -00000001201fee78 s constructor_pending_elts -00000001201fee38 s constructor_range_end -00000001201feeb0 s constructor_result -00000001201fee6c s constructor_simple -00000001201ffe98 S constructor_stack -00000001201fee74 s constructor_subconstants_deferred -00000001201feea8 s constructor_top_level -00000001201fee20 s constructor_type -00000001201fee48 s constructor_unfilled_fields -00000001201fee50 s constructor_unfilled_index -0000000120043f90 T contains_placeholder_p -00000001200a3c50 t contains_pointers_p -00000001201ff030 s context_display -00000001201ec720 d conversion_info -000000012019e5b0 t conversion_reasonable_p -000000012020ae90 b conversion_recipe -0000000120026880 T convert -000000012002cf90 T convert_and_check -000000012001b520 t convert_arguments -0000000120020650 t convert_for_assignment -0000000120071230 T convert_modes -0000000120070530 T convert_move -0000000120199c60 T convert_to_complex -0000000120199080 T convert_to_integer -00000001200711f0 T convert_to_mode -0000000120199930 T convert_to_pointer -0000000120199ad0 T convert_to_real -00000001200959e0 T copy_addr_to_reg -0000000120095600 T copy_all_regs -00000001201ff300 s copy_asm_constraints_vector -00000001201ff2f8 s copy_asm_operands_vector -00000001200a5dc0 t copy_constant -000000012012f480 t copy_cost -0000000120200834 S copy_cost -00000001200dae60 t copy_decl_list -00000001200dafd0 t copy_decl_rtls -00000001200daf10 t copy_decl_tree -00000001200db590 t copy_for_inline -0000000120017c10 T copy_lang_decl -00000001200426f0 T copy_list -0000000120109ac0 t copy_loop_body -00000001200aab70 T copy_most_rtx -000000012003d5b0 T copy_node -0000000120143780 T copy_replacements -00000001200aa7c0 T copy_rtx -00000001200dda30 T copy_rtx_and_substitute -00000001200b2430 T copy_rtx_if_shared -0000000120094b10 T copy_to_mode_reg -0000000120094a50 T copy_to_reg -0000000120095a90 T copy_to_suggested_reg -0000000120200440 S cos_optab -00000001201ff0d0 s cost_table -00000001201ff688 s costs -00000001201ffaf8 s count_basic_blocks -0000000120038620 T count_error -0000000120101550 t count_loop_regs_set -0000000120100050 t count_nonfixed_reads -0000000120152a80 t count_occurrences -000000012014a920 t count_possible_groups -00000001200f4b50 t count_reg_usage -00000001201ff8b0 s counted_for_groups -00000001201ff8b8 s counted_for_nongroups -0000000120165850 t create_reg_dead_note -00000001201ff310 s cross_jump_death_matters -00000001201fef0c S cse2_dump -00000001201fff38 S cse2_dump_file -00000001201fff90 S cse2_time -00000001200f4080 t cse_basic_block -00000001201ff3fc s cse_basic_block_end -00000001201ff3f8 s cse_basic_block_start -00000001200fc2e0 t cse_check_loop_start -00000001201ff440 s cse_check_loop_start_value -00000001201fef04 S cse_dump -00000001201ffff8 S cse_dump_file -00000001200f3530 T cse_end_of_basic_block -00000001200ed360 t cse_gen_binary -00000001200f6d90 t cse_insn -00000001201ff40c s cse_jumps_altered -00000001200f3a60 T cse_main -00000001202002e4 S cse_not_expected -00000001200f3290 t cse_process_notes -00000001200fb530 t cse_set_around_loop -00000001201fff44 S cse_time -00000001200a83f0 T ctors_section -00000001201fec54 g cur_insn_uid -00000001201fedd0 s current_binding_level -00000001201fed08 s current_declspecs -00000001201ff290 s current_dienum -00000001201fedc8 s current_extern_inline -00000001201fec90 g current_funcdef_number -0000000120200218 S current_function_arg_offset_rtx -0000000120200230 S current_function_args_info -0000000120200214 S current_function_args_size -0000000120200170 S current_function_calls_alloca -0000000120200188 S current_function_calls_longjmp -00000001202001a8 S current_function_calls_setjmp -0000000120200234 S current_function_contains_functions -00000001201ffd80 S current_function_decl -0000000120200168 S current_function_epilogue_delay_list -0000000120200258 S current_function_has_nonlocal_goto -0000000120200270 S current_function_has_nonlocal_label -00000001202001c8 S current_function_internal_arg_pointer -00000001202001f8 S current_function_name -0000000120200160 S current_function_needs_context -0000000120200248 S current_function_outgoing_args_size -00000001201fed98 s current_function_parm_tags -00000001201fed90 s current_function_parms -00000001202001c0 S current_function_pops_args -000000012020015c S current_function_pretend_args_size -00000001201feda0 s current_function_prototype_file -00000001201feda8 s current_function_prototype_line -0000000120200178 S current_function_return_rtx -00000001201ffcb0 S current_function_returns_null -0000000120200280 S current_function_returns_pcc_struct -0000000120200208 S current_function_returns_pointer -000000012020018c S current_function_returns_struct -00000001201ffdc0 S current_function_returns_value -00000001202001f0 S current_function_stdarg -0000000120200210 S current_function_uses_const_pool -00000001202001d0 S current_function_uses_pic_offset_table -000000012020020c S current_function_varargs -00000001201ff980 s current_live_regs -00000001202000a0 S current_obstack -00000001200d74c0 t data_member_location_attribute -00000001200a8580 T data_section -00000001201e6a58 W data_start -00000001201feec0 s data_type -00000001201fef2c S dbr_sched_dump -0000000120200038 S dbr_sched_dump_file -00000001201ffee0 S dbr_sched_time -00000001201593d0 T dbr_schedule -000000012016f6d0 T dbr_sequence_length -0000000120200730 S dconst0 -00000001202007d0 S dconst1 -0000000120200788 S dconst2 -0000000120200700 S dconstm1 -00000001201ffa30 s dead_notes -00000001200b08c0 T dead_or_set_p -00000001200ae500 T dead_or_set_regno_p -00000001201fef3c S debug_info_level -00000001201ffab8 s debug_insn -00000001201feffc S debug_no_type_hash -0000000120042380 T debug_obstack -00000001200bce10 T debug_real -0000000120145250 T debug_reload -00000001200acd80 T debug_rtx -00000001201ff1b8 S debug_rtx_count -00000001200acec0 T debug_rtx_find -00000001200acdd0 T debug_rtx_list -00000001201fec10 G debug_temp_inits -0000000120047750 T debug_tree -0000000120029800 T decl_attributes -0000000120041b90 T decl_function_context -0000000120039220 t decl_name -0000000120200060 S decl_printable_name -0000000120043810 T decl_tree_cons -00000001200453e0 T decl_type_context -000000012002c750 T declare_function_name -000000012006e810 T declare_nonlocal_label -0000000120016590 T declare_parm_level -00000001200a9b50 T declare_weak -00000001201fed10 s declspec_stack -00000001200a9f90 t decode_addr_const -0000000120171c90 T decode_asm_operands -0000000120058ce0 t decode_field_reference -00000001200a1bf0 T decode_reg_name -00000001200aa310 t decode_rtx_const -000000012013d160 t decompose -000000012019e060 t deduce_conversion -000000012001a1d0 T default_conversion -00000001201ffc48 S default_function_type -00000001200388a0 T default_print_error_function -00000001200a94a0 T defer_addressed_constants -00000001201ff180 s defer_addressed_constants_flag -000000012007e5d0 t defer_cleanups_to -00000001201ff178 s deferred_constants -000000012000e1a0 T define_label -0000000120016730 T delete_block -00000001200e4330 t delete_computation -00000001200f4de0 T delete_dead_from_cse -000000012014b150 t delete_dead_insn -00000001200e6f00 T delete_for_peephole -000000012015d2f0 t delete_from_delay_slot -00000001200e4d90 t delete_from_jump_chain -00000001200e4560 T delete_insn -00000001200b4ca0 T delete_insns_since -00000001200e42c0 T delete_jump -00000001200e5260 t delete_labelref_insn -0000000120152360 t delete_output_reload -0000000120021fc0 t digest_init -000000012020350c b direct_load -0000000120203529 b direct_store -00000001201feed8 s directive_buffer.1 -0000000120056e70 t distribute_bit_expr -000000012012ba90 t distribute_links -000000012012ad10 t distribute_notes -000000012004a2b0 T div_and_round_double -0000000120203a3c b div_cost -000000012018ee60 t div_unit_blockage -000000012018ebb0 T div_unit_blockage_range -000000012018b380 T div_unit_ready_cost -0000000120038b90 T do_abort -00000001201ff250 s do_block -00000001200e3700 t do_cross_jump -00000001201ff000 s do_identifier_warnings -000000012007e800 T do_jump -000000012007fc50 t do_jump_by_parts_equality -000000012007fe50 t do_jump_by_parts_equality_rtx -000000012007f710 t do_jump_by_parts_greater -000000012007f9e0 T do_jump_by_parts_greater_rtx -000000012007fff0 t do_jump_for_compare -000000012006c110 t do_jump_if_equal -00000001201ff414 s do_not_record -000000012007e550 T do_pending_stack_adjust -00000001201fec3c G do_preexpand_calls -0000000120080560 t do_store_flag -00000001201ffc00 S doing_objc_thang -00000001201fed68 S dollars_in_ident -00000001201ffd98 S double_ftype_double -00000001201ffe18 S double_ftype_double_double -0000000120200998 S double_reg_address_ok -00000001201ffd78 S double_type_node -000000012006f350 T drop_through_at_end_p -00000001200a8470 T dtors_section -0000000120200018 S dump_base_name -000000012012beb0 T dump_combine_stats -000000012012bf10 T dump_combine_total_stats -0000000120139930 t dump_conflicts -0000000120112190 T dump_flow_info -0000000120139f80 T dump_global_regs -0000000120134e20 T dump_local_alloc -00000001201fff6c S dump_time -00000001200454e0 T dump_tree_statistics -0000000120017c20 t duplicate_decls -00000001200e2ab0 t duplicate_loop_exit_test -00000001200ce060 t dwarf_attr_name -00000001200ce5e0 t dwarf_fund_type_name -00000001201ff2c0 s dwarf_last_decl -00000001200d7200 t dwarf_tag_name -00000001200cd250 T dwarfout_begin_block -00000001200cd480 T dwarfout_begin_function -00000001200cd900 T dwarfout_define -00000001200cd300 T dwarfout_end_block -00000001200cd5c0 T dwarfout_end_epilogue -00000001200cd520 T dwarfout_end_function -00000001200caa30 T dwarfout_file_scope_decl -00000001200cc540 T dwarfout_finish -00000001200cb950 T dwarfout_init -00000001200cd3b0 T dwarfout_label -00000001200cb160 T dwarfout_line -00000001200cd7c0 T dwarfout_resume_previous_source_file -00000001200cd650 T dwarfout_start_new_source_file -00000001200cdbb0 T dwarfout_undef -00000001201ff094 s dynamic_offset -00000001200b8a30 t e113toe -00000001200b8e80 t e24toe -00000001201e9e2c D e32 -00000001200b80a0 t e53toe -00000001200b8570 t e64toe -00000001200b6c40 t eadd -00000001200b6df0 t eadd1 -00000001200b65e0 T earith -000000012013c790 t earlyclobber_operand_p -00000001200b95e0 t ecmp -00000001200b7570 t ediv -00000001200bd6a0 t edivm -00000001200bc0d0 T efixi -00000001200bc140 T efixui -00000001200bb210 t efloor -00000001201e9e08 D ehalf -00000001200bea70 t eifrac -00000001200bb5c0 t eiremain -00000001200b6a30 t eisnan -00000001200b6a10 t eisneg -00000001200bb380 t eldexp -00000001200d84f0 t element_list_attribute -000000012018e7c0 T eligible_for_annul_true -000000012018e1b0 T eligible_for_delay -00000001201ff548 s elim_reg_set -00000001201e8fc8 d elim_regs.0 -00000001201ff834 s eliminable_regset -00000001201ea050 d eliminables.0 -00000001201ea0a0 d eliminables.0 -00000001201ea688 d eliminables.0 -00000001201ea670 d eliminables.2 -0000000120095380 T eliminate_constant_term -000000012014bc10 T eliminate_regs -000000012014cd40 t eliminate_regs_in_insn -00000001201e9e38 D elog2 -00000001200bdd70 t emdnorm -00000001200b5f30 T emit -00000001200a1250 T emit_0_to_1_insn -0000000120194ba0 t emit_add -00000001200b5be0 T emit_barrier -00000001200b3010 T emit_barrier_after -00000001200b5250 T emit_barrier_before -00000001201957a0 T emit_bcnd -0000000120071840 T emit_block_move -0000000120089a50 t emit_call_1 -00000001200b5ab0 T emit_call_insn -00000001200b5190 T emit_call_insn_before -000000012006cac0 t emit_case_nodes -00000001200a1210 T emit_clr_insn -000000012009c090 T emit_cmp_insn -000000012015cec0 t emit_delay_sequence -0000000120200298 S emit_filename -000000012009c830 T emit_float_lib_cmp -00000001200a1290 T emit_indirect_jump -00000001200b5750 T emit_insn -00000001200b2ee0 T emit_insn_after -00000001200b5340 T emit_insn_after_with_line_notes -00000001200b4fc0 T emit_insn_before -00000001200b58a0 T emit_insns -00000001200b5970 T emit_insns_after -00000001200b5900 T emit_insns_before -0000000120105ac0 T emit_iv_add_mult -000000012006e580 T emit_jump -000000012006ca30 t emit_jump_if_reachable -00000001200b59f0 T emit_jump_insn -00000001200b5500 T emit_jump_insn_after -00000001200b50e0 T emit_jump_insn_before -00000001200b5b80 T emit_label -00000001200b55b0 T emit_label_after -0000000120194ef0 t emit_ldst -000000012009be10 T emit_libcall_block -0000000120088070 T emit_library_call -00000001200887a0 T emit_library_call_value -00000001200b5c50 T emit_line_note -00000001200b5690 T emit_line_note_after -00000001200b5ef0 T emit_line_note_force -0000000120200290 S emit_lineno -0000000120071c20 T emit_move_insn -0000000120071e90 T emit_move_insn_1 -0000000120191520 T emit_move_sequence -000000012009ba10 T emit_no_conflict_block -000000012006e460 T emit_nop -00000001200b5db0 T emit_note -00000001200b5610 T emit_note_after -00000001200b52c0 T emit_note_before -0000000120072360 T emit_push_insn -00000001200821d0 T emit_queue -0000000120150350 t emit_reload_insns -0000000120095df0 T emit_stack_restore -0000000120094d40 T emit_stack_save -00000001200922d0 T emit_store_flag -00000001201989a0 T emit_test -000000012019dc30 T emit_typecode_conversion -00000001200a0dc0 T emit_unop_insn -000000012010a770 T emit_unrolled_add -00000001200b6990 t emov -00000001200bd500 t emovi -00000001201e9ef8 d emtens -00000001200b7b30 t emul -00000001200bdb40 t emulm -000000012016b090 T end_final -00000001201fed28 s end_of_file -00000001201ff958 s end_of_function_label -0000000120209514 b end_of_function_needs -00000001200b6430 T end_sequence -0000000120042160 T end_temporary_allocation -00000001200bd410 t endian -00000001200b69e0 t eneg -00000001200b9ff0 t enormlz -00000001201fed70 s enum_next_value -00000001201fed78 s enum_overflow -00000001201e9e14 D eone -00000001201e9e50 D epi -00000001201ff0a8 s epilogue -00000001201ffb94 s epilogue_marked -00000001202005b0 S eqdf2_libfunc -0000000120200458 S eqhf2_libfunc -00000001202006b0 S eqsf2_libfunc -00000001202005e0 S eqtf2_libfunc -0000000120197ba0 T equality_op -00000001200f16c0 t equiv_constant -00000001201ff778 s equiv_mem -00000001201ff780 s equiv_mem_modified -0000000120205f5c b equot -00000001202003f0 S eqxf2_libfunc -00000001200b6750 T ereal_atof -00000001200bd250 T ereal_cmp -00000001200bd340 T ereal_from_double -00000001200bd2f0 T ereal_from_float -00000001200bc1b0 T ereal_from_int -00000001200bc7c0 T ereal_from_uint -00000001200bd2b0 T ereal_isneg -00000001200bcd90 T ereal_ldexp -00000001200bc080 T ereal_negate -00000001200bd200 T ereal_to_decimal -00000001200b6840 T ereal_to_int -00000001201e9fb8 d ermsg -0000000120030560 T error -00000001200301d0 T error_for_asm -0000000120021a20 T error_init -00000001201ffd48 S error_mark_node -000000012002ffa0 T error_with_decl -000000012002fcf0 T error_with_file_and_line -00000001201fef44 S errorcount -00000001200b9cc0 t eshift -00000001201ff240 s esqinited -00000001201e9e44 D esqrt2 -000000012006c220 t estimate_case_costs -00000001200b6a90 t esub -00000001200bd090 T etardouble -00000001200bcf80 T etarldouble -00000001200bd0f0 T etarsingle -00000001200bce70 T etartdouble -00000001201e9e5c d etens -00000001200bf010 t etoasc -00000001200b92e0 t etoe53 -00000001200bba10 T etrunci -00000001200bbd60 T etruncui -00000001201e9e20 D etwo -00000001200b9750 t euifrac -000000012004bf50 t eval_subst -0000000120197a00 T even_relop -00000001201fec98 g everything.1 -00000001201fec9c g everything.2 -00000001201feca0 g everything.5 -0000000120038c80 T exact_log2_wide -00000001200e9450 t exp_equiv_p -000000012009ad30 T expand_abs -00000001200921b0 T expand_and -0000000120068e40 T expand_anon_union_decl -000000012006e940 T expand_asm -0000000120064330 T expand_asm_operands -0000000120072c90 T expand_assignment -00000001200962f0 T expand_binop -0000000120196d00 T expand_block_move -000000012007bde0 t expand_builtin -000000012007d3f0 t expand_builtin_apply -000000012007d180 t expand_builtin_apply_args -000000012007dad0 t expand_builtin_return -0000000120082930 T expand_builtin_return_addr -0000000120085050 T expand_call -00000001200690e0 t expand_cleanups -000000012007e6e0 T expand_cleanups_to -000000012009b0c0 T expand_complex_abs -000000012011e640 t expand_compound_operation -000000012006e5f0 T expand_computed_goto -000000012006eed0 T expand_continue_loop -0000000120093170 T expand_dec -0000000120068320 T expand_decl -000000012006f3f0 T expand_decl_cleanup -0000000120068b10 T expand_decl_init -000000012008eaa0 T expand_divmod -000000012006ed50 T expand_elseif -0000000120067850 T expand_end_bindings -000000012006acc0 T expand_end_case -0000000120069630 T expand_end_case_dummy -00000001200658d0 T expand_end_cond -0000000120065d70 T expand_end_loop -00000001200654b0 T expand_end_stmt_expr -000000012006ef30 T expand_exit_loop -000000012006ef90 T expand_exit_loop_if_false -000000012006f160 T expand_exit_something -0000000120075360 T expand_expr -0000000120064f60 T expand_expr_stmt -000000012011e960 t expand_field_assignment -000000012009ddb0 T expand_fix -0000000120063eb0 t expand_fixup -000000012006e920 T expand_fixups -000000012009cf70 T expand_float -00000001200607d0 T expand_function_end -000000012005ff70 T expand_function_start -00000001200639c0 T expand_goto -0000000120063ce0 t expand_goto_internal -00000001200930e0 T expand_inc -000000012007dce0 t expand_increment -00000001200dbc40 T expand_inline_function -000000012006e6a0 T expand_label -000000012006ee30 T expand_loop_continue_here -0000000120063660 T expand_main_function -000000012008da30 T expand_mult -00000001200933d0 T expand_mult_add -000000012008e3a0 T expand_mult_highpart -0000000120093240 T expand_mult_highpart_adjust -000000012006f1d0 T expand_null_return -00000001201374d0 t expand_preferences -0000000120066330 T expand_return -000000012008ce50 T expand_shift -0000000120067600 T expand_start_bindings -0000000120069210 T expand_start_case -0000000120069500 T expand_start_case_dummy -0000000120065700 T expand_start_cond -000000012006ec10 T expand_start_else -000000012006eb00 T expand_start_elseif -0000000120065b90 T expand_start_loop -000000012006edd0 T expand_start_loop_continue_elsewhere -000000012006ea10 T expand_start_stmt_expr -000000012002f4a0 t expand_stmt_with_iterators_1 -00000001200998a0 T expand_twoval_binop -0000000120099f20 T expand_unop -00000001201fed54 S explicit_flag_signed_bitfields -0000000120095510 T expr_size -00000001202002a8 S expr_stmts_for_value -00000001202000b8 S expression_obstack -00000001202003f8 S extenddftf2_libfunc -0000000120200320 S extenddfxf2_libfunc -000000012012bd50 T extended_count -0000000120200658 S extendsfdf2_libfunc -0000000120200418 S extendsftf2_libfunc -0000000120200488 S extendsfxf2_libfunc -000000012020fce0 B extendtab -00000001201fefc4 S extra_warnings -000000012008b320 T extract_bit_field -000000012008c510 t extract_fixed_bit_field -000000012012c9c0 t extract_left_shift -000000012008cb50 t extract_split_bit_field -0000000120205f50 B ezero -00000001201e7a08 D f_options -00000001201ea030 D factors -00000001201ffba8 s failure_errno.1 -00000001201ff2b8 s fake_containing_scope -0000000120038b70 T fancy_abort -0000000120030830 T fatal -000000012002f9d0 T fatal_insn -0000000120038790 T fatal_insn_not_found -0000000120038740 T fatal_io_error -0000000120200688 S ffs_optab -00000001200d9980 t field_byte_offset -0000000120018f00 t field_decl_cmp -00000001201ff270 s filename_table -000000012015b4b0 t fill_eager_delay_slots -0000000120159ed0 t fill_simple_delay_slots -000000012015e3a0 t fill_slots_from_thread -000000012016ca70 T final -000000012010bd30 T final_biv_value -000000012016f890 T final_end_function -000000012010c1d0 T final_giv_value -000000012016cdb0 T final_scan_insn -00000001202009c0 S final_sequence -000000012016f720 T final_start_function -00000001201ffed8 S final_time -00000001201ff264 s finalizing -00000001201003a0 t find_and_verify_loops -000000012010df00 t find_basic_blocks -00000001200f5950 t find_best_addr -00000001200f67a0 t find_comparison_args -0000000120173f60 t find_constant_term_loc -00000001200e3280 t find_cross_jump -000000012013c220 t find_dummy_reload -000000012015cc40 t find_end_label -0000000120143fa0 T find_equiv_reg -0000000120134400 t find_free_reg -0000000120061c20 T find_function_data -0000000120144fc0 t find_inc_amount -00000001200b03c0 T find_last_value -000000012006f5c0 T find_loop_tree_blocks -0000000120103610 t find_mem_givs -0000000120093b30 T find_next_ref -0000000120137ba0 t find_reg -00000001200ae880 T find_reg_fusage -00000001200b09c0 T find_reg_note -00000001200ae9e0 T find_regno_fusage -00000001200b0a20 T find_regno_note -000000012013d610 T find_reloads -0000000120141490 t find_reloads_address -0000000120142720 t find_reloads_address_1 -0000000120143360 t find_reloads_address_part -0000000120140ed0 t find_reloads_toplev -0000000120145e60 T find_replacement -0000000120173060 T find_single_use -0000000120170dc0 t find_single_use_1 -0000000120107b10 t find_single_use_in_loop -0000000120117900 t find_split_point -000000012010aff0 t find_splittable_givs -000000012010a800 t find_splittable_regs -0000000120164a10 t find_symbolic_term -0000000120111f40 t find_use_as_address -0000000120010df0 T finish_decl -0000000120014560 T finish_enum -0000000120006fb0 T finish_file -0000000120015fe0 T finish_function -0000000120016430 T finish_incomplete_decl -00000001200257e0 T finish_init -0000000120013a60 T finish_struct -0000000120200010 S finput -00000001202006d8 S first_global_object_name -00000001201ff1e8 s first_insn -00000001201ff210 s first_label_num -00000001201ff190 s first_pool -000000012005ed80 T fix_lexical_addr -0000000120130180 T fix_register -00000001202003b0 S fixdfdi_libfunc -0000000120200370 S fixdfsi_libfunc -00000001202002f8 S fixdfti_libfunc -0000000120200920 S fixed_reg_set -0000000120213bec B fixed_regs -0000000120200468 S fixsfdi_libfunc -00000001202005f0 S fixsfsi_libfunc -0000000120200368 S fixsfti_libfunc -000000012020c850 B fixtab -0000000120200400 S fixtfdi_libfunc -00000001202003a0 S fixtfsi_libfunc -00000001202004c0 S fixtfti_libfunc -0000000120211728 B fixtrunctab -00000001202005c8 S fixunsdfdi_libfunc -00000001202004e8 S fixunsdfsi_libfunc -00000001202005a0 S fixunsdfti_libfunc -0000000120200378 S fixunssfdi_libfunc -0000000120200448 S fixunssfsi_libfunc -0000000120200328 S fixunssfti_libfunc -00000001202003c8 S fixunstfdi_libfunc -00000001202006b8 S fixunstfsi_libfunc -00000001202003b8 S fixunstfti_libfunc -0000000120200310 S fixunsxfdi_libfunc -00000001202004f8 S fixunsxfsi_libfunc -0000000120200650 S fixunsxfti_libfunc -000000012006f820 t fixup_gotos -000000012005bd20 t fixup_memory_subreg -00000001200493d0 T fixup_signed_type -000000012005c060 t fixup_stack_1 -00000001200494e0 T fixup_unsigned_type -000000012005aaa0 t fixup_var_refs -000000012005afa0 t fixup_var_refs_1 -000000012005ac10 t fixup_var_refs_insns -0000000120200318 S fixxfdi_libfunc -0000000120200630 S fixxfsi_libfunc -0000000120200490 S fixxfti_libfunc -00000001201fed50 S flag_allow_single_precision -00000001201fef74 S flag_caller_saves -00000001201ffc40 S flag_cond_mismatch -00000001201fff28 S flag_cse_follow_jumps -00000001201fff98 S flag_cse_skip_blocks -00000001201fef84 S flag_defer_pop -0000000120200024 S flag_delayed_branch -00000001201fff88 S flag_expensive_optimizations -00000001201fef9c S flag_fast_math -00000001201fef88 S flag_float_store -00000001201fef80 S flag_force_addr -00000001201fef7c S flag_force_mem -00000001201fefa4 S flag_gen_aux_info -00000001201fec24 G flag_gnu_linker -00000001201fefb4 S flag_inhibit_size_directive -00000001201ffef8 S flag_inline_functions -00000001201ffecc S flag_keep_inline_functions -00000001201fec78 g flag_minimal_debug -00000001201ffe50 S flag_no_asm -00000001201ffc98 S flag_no_builtin -0000000120200008 S flag_no_common -00000001201fef90 S flag_no_function_cse -00000001201fed58 S flag_no_ident -00000001201fff68 S flag_no_inline -00000001201ffc94 S flag_no_nonansi_builtin -00000001201fef98 S flag_no_peephole -00000001201fef94 S flag_omit_frame_pointer -00000001201fefbc S flag_pack_struct -00000001201fef78 S flag_pcc_struct_return -00000001201fefa8 S flag_pedantic_errors -00000001201fffdc S flag_pic -00000001201ffec8 S flag_pretend_float -00000001201fef30 S flag_print_asm_name -00000001201fefdc s flag_rerun_cse_after_loop -00000001201fefac S flag_schedule_insns -00000001201fefb0 S flag_schedule_insns_after_reload -0000000120200030 S flag_shared_data -00000001201ffe20 S flag_short_double -00000001201ffee8 S flag_short_enums -00000001201fffb8 S flag_short_temps -00000001201fec0c G flag_signed_bitfields -00000001201fff48 S flag_signed_char -00000001201fef8c S flag_strength_reduce -00000001201fefa0 S flag_syntax_only -00000001201fff08 S flag_thread_jumps -00000001201ffdf8 S flag_traditional -00000001201fff94 S flag_unroll_all_loops -00000001201fec1c G flag_unroll_loops -00000001201fefb8 S flag_verbose_asm -00000001201fff60 S flag_volatile -0000000120200068 S flag_volatile_global -00000001201fec20 G flag_writable_strings -00000001202033e8 b float_error -00000001201ffd88 S float_ftype_float -00000001201fff0c S float_handled -000000012020ba18 B float_handler -00000001200394c0 t float_signal -00000001201ffdd0 S float_type_node -0000000120200648 S floatdidf_libfunc -00000001202004b8 S floatdisf_libfunc -0000000120200638 S floatditf_libfunc -0000000120200668 S floatdixf_libfunc -0000000120200380 S floatsidf_libfunc -0000000120200528 S floatsisf_libfunc -00000001202004a0 S floatsitf_libfunc -00000001202003e0 S floatsixf_libfunc -000000012020e298 B floattab -00000001202003a8 S floattidf_libfunc -0000000120200530 S floattisf_libfunc -00000001202005f8 S floattitf_libfunc -0000000120200338 S floattixf_libfunc -0000000120200438 S flodiv_optab -0000000120038ce0 T floor_log2_wide -000000012010db80 T flow_analysis -000000012010eea0 t flow_delete_insn -00000001201fef10 S flow_dump -0000000120200048 S flow_dump_file -0000000120200040 S flow_time -0000000120164f30 t flush_pending_lists -000000012004c5f0 T fold -0000000120056820 t fold_convert -00000001200ee250 t fold_rtx -0000000120057700 t fold_truthop -00000001200e3cc0 T follow_jumps -000000012020099c S forbidden_regs -00000001200a69e0 T force_const_mem -0000000120049f20 T force_fit_type -00000001200fe2a0 t force_movables -00000001200b5f10 T force_next_line_note -0000000120095a00 T force_not_mem -0000000120074c00 T force_operand -0000000120094bf0 T force_reg -0000000120120540 t force_to_mode -00000001202007f8 S forced_labels -000000012014e490 t forget_old_reloads_1 -000000012000b7d0 T forget_protocol_qualifiers -0000000120145b80 T form_sum -000000012018f1c0 t fpadd100_unit_blockage -000000012018b860 T fpadd100_unit_blockage_range -000000012018b5e0 T fpadd100_unit_ready_cost -000000012018ef60 t fpadd110_unit_blockage -000000012018b460 T fpadd110_unit_blockage_range -000000012018ec40 T fpadd110_unit_ready_cost -000000012018fa70 t fpmul100_unit_blockage -000000012018bb20 T fpmul100_unit_blockage_range -000000012018ba30 T fpmul100_unit_ready_cost -000000012018ed00 T fpmul110_unit_ready_cost -0000000120001a80 t frame_dummy -00000001201ffb88 s frame_laid_out -00000001202001d8 S frame_offset -00000001202009ac S frame_pointer_needed -00000001202007c0 S frame_pointer_rtx -00000001201ffb8c s frame_size -00000001201fedd8 s free_binding_level -00000001200e7f30 t free_element -00000001201ff420 s free_element_chain -00000001201688c0 t free_pending_lists -0000000120062020 T free_temp_slots -0000000120062090 T free_temps_for_rtl_expr -00000001201ff27c s ft_entries -00000001201ff278 s ft_entries_allocated -0000000120200498 S ftrunc_optab -0000000120200284 S function_call_count -00000001200da320 T function_cannot_inline_p -00000001201ff160 s function_defined -00000001201feed0 s function_format_list -00000001202000f0 S function_maybepermanent_obstack -00000001202000c8 S function_obstack -00000001200a8830 T function_section -00000001200199a0 t function_types_compatible_p -00000001201eb100 D function_units -000000012018ced0 T function_units_used -00000001200ce960 t fundamental_type_code -00000001201fff9c S g_switch_set -00000001201ffeb0 S g_switch_value -000000012003bd90 T gcc_obstack_init -0000000120200360 S gedf2_libfunc -00000001202003d0 S gehf2_libfunc -000000012018a050 T gen_absdf2 -000000012018a0c0 T gen_abssf2 -00000001200a1330 T gen_add2_insn -0000000120188dc0 T gen_adddf3 -0000000120188f50 T gen_adddi3 -0000000120188ee0 T gen_addsf3 -0000000120188d50 T gen_addsi3 -00000001201898e0 T gen_anddi3 -00000001201815c0 T gen_andsi3 -0000000120181aa0 T gen_ashlsi3 -0000000120181f00 T gen_ashrsi3 -0000000120028650 T gen_aux_info_record -0000000120185ee0 T gen_bcnd -0000000120186100 T gen_beq -0000000120186a80 T gen_bge -0000000120186bd0 T gen_bgeu -00000001201863a0 T gen_bgt -00000001201864f0 T gen_bgtu -0000000120126bf0 t gen_binary -0000000120186df0 T gen_ble -0000000120186f40 T gen_bleu -000000012018a630 T gen_blockage -0000000120186710 T gen_blt -0000000120186860 T gen_bltu -0000000120186250 T gen_bne -0000000120185ff0 T gen_bxx -000000012018a130 T gen_call -0000000120187a30 T gen_call_block_move -0000000120187dc0 T gen_call_movstrsi_loop -000000012018a2e0 T gen_call_value -0000000120182830 T gen_casesi -0000000120182fc0 T gen_casesi_enter -0000000120182de0 T gen_casesi_jump -0000000120185360 T gen_cmpdf -0000000120185260 T gen_cmpsf -0000000120185120 T gen_cmpsi -0000000120027d40 t gen_decl -000000012018a6d0 T gen_decrement_and_branch_until_zero -0000000120181340 T gen_divdf3 -0000000120189870 T gen_divsf3 -000000012017f050 T gen_divsi3 -0000000120183160 T gen_dummy -000000012018a590 T gen_epilogue -00000001200a15e0 T gen_extend_insn -0000000120188720 T gen_extendhisi2 -0000000120188850 T gen_extendqihi2 -0000000120188980 T gen_extendqisi2 -0000000120188ab0 T gen_extendsfdf2 -00000001201885a0 T gen_extendsidi2 -0000000120189e90 T gen_extv -0000000120189f00 T gen_extzv -0000000120189d60 T gen_ffssi2 -0000000120188c70 T gen_fix_truncdfsi2 -0000000120188ce0 T gen_fix_truncsfsi2 -0000000120188b90 T gen_floatsidf2 -0000000120188c00 T gen_floatsisf2 -0000000120028c20 t gen_formal_list_for_func_def -00000001200287b0 t gen_formal_list_for_type -00000001200b1bf0 T gen_highpart -00000001200b3e60 T gen_imagpart -000000012018a690 T gen_indirect_jump -00000001200b43f0 T gen_inline_header_rtx -0000000120189950 T gen_iordi3 -0000000120181780 T gen_iorsi3 -0000000120183100 T gen_jump -00000001200b4360 T gen_label_rtx -0000000120187160 T gen_locate1 -0000000120187220 T gen_locate2 -00000001200b4000 T gen_lowpart -00000001200b14c0 T gen_lowpart_common -00000001201265a0 t gen_lowpart_for_combine -00000001200f1980 T gen_lowpart_if_possible -0000000120182360 T gen_lshrsi3 -00000001201833f0 T gen_m88k_rcs_id -00000001201877a0 T gen_movdf -00000001201876d0 T gen_movdi -000000012009cbd0 T gen_move_insn -0000000120187530 T gen_movhi -0000000120187600 T gen_movqi -0000000120187870 T gen_movsf -0000000120187370 T gen_movsi -0000000120187940 T gen_movstrsi -00000001201893a0 T gen_muldf3 -00000001201894c0 T gen_mulsf3 -0000000120189330 T gen_mulsi3 -0000000120189f70 T gen_negdf2 -0000000120189fe0 T gen_negsf2 -00000001201827c0 T gen_negsi2 -000000012018a4c0 T gen_nop -0000000120189aa0 T gen_one_cmpldi2 -0000000120189a30 T gen_one_cmplsi2 -000000012018a520 T gen_prologue -00000001200828f0 T gen_push_operand -00000001200b3e10 T gen_realpart -00000001200b1290 T gen_reg_rtx -0000000120151de0 T gen_reload -0000000120187440 T gen_reload_insi -000000012018a4e0 T gen_return -0000000120189b70 T gen_rotlsi3 -0000000120189cf0 T gen_rotrsi3 -00000001200b1100 T gen_rtvec -00000001200b1210 T gen_rtvec_v -00000001200b0e00 T gen_rtx -00000001201269a0 t gen_rtx_combine -00000001201854a0 T gen_seq -00000001200b64a0 T gen_sequence -0000000120185920 T gen_sge -00000001201859e0 T gen_sgeu -0000000120185620 T gen_sgt -00000001201856e0 T gen_sgtu -0000000120185aa0 T gen_sle -0000000120185b60 T gen_sleu -00000001201857a0 T gen_slt -0000000120185860 T gen_sltu -0000000120185560 T gen_sne -0000000120183430 T gen_split_1 -000000012017eed0 T gen_split_125 -000000012017e110 T gen_split_13 -000000012017e390 T gen_split_14 -000000012017e5a0 T gen_split_15 -0000000120184140 T gen_split_16 -00000001201842e0 T gen_split_17 -0000000120184450 T gen_split_18 -000000012017e7f0 T gen_split_19 -0000000120183610 T gen_split_2 -000000012017ea70 T gen_split_20 -000000012017ec80 T gen_split_21 -00000001201845e0 T gen_split_22 -0000000120184780 T gen_split_23 -00000001201848f0 T gen_split_24 -00000001201837f0 T gen_split_3 -0000000120184a80 T gen_split_31 -0000000120184bb0 T gen_split_33 -0000000120184d00 T gen_split_35 -0000000120184e30 T gen_split_37 -00000001201839d0 T gen_split_4 -0000000120183bb0 T gen_split_5 -0000000120183d90 T gen_split_6 -0000000120183f70 T gen_split_7 -0000000120185c20 T gen_split_75 -0000000120185d70 T gen_split_80 -00000001200a1470 T gen_sub2_insn -00000001201890b0 T gen_subdf3 -0000000120189240 T gen_subdi3 -00000001201891d0 T gen_subsf3 -0000000120189040 T gen_subsi3 -0000000120189b10 T gen_tbnd -0000000120189570 T gen_tcnd_divide_by_zero -0000000120184f80 T gen_test -0000000120189530 T gen_trap_divide_by_zero -0000000120188b20 T gen_truncdfsf2 -0000000120026a00 t gen_type -0000000120180e90 T gen_udivsi3 -0000000120126f10 t gen_unary -00000001201899c0 T gen_xordi3 -0000000120181920 T gen_xorsi3 -00000001201881f0 T gen_zero_extendhisi2 -0000000120188320 T gen_zero_extendqihi2 -0000000120188450 T gen_zero_extendqisi2 -00000001201049d0 t general_induction_var -0000000120171140 T general_operand -0000000120200428 S gesf2_libfunc -000000012018ee20 T get_attr_cpu -000000012018d8b0 T get_attr_fpu -000000012016be50 T get_attr_length -000000012018da20 T get_attr_type -0000000120048ce0 T get_best_mode -0000000120157380 t get_branch_condition -0000000120107100 T get_condition -0000000120107760 T get_condition_for_loop -000000012002c580 T get_directive_line -0000000120041c40 T get_file_function_name -0000000120062d80 T get_first_block_beg -00000001200b3df0 T get_first_label_num -0000000120062d30 T get_first_nonparm_insn -0000000120061cb0 T get_frame_size -000000012003d8a0 T get_identifier -00000001200746b0 T get_inner_reference -00000001200745e0 t get_inner_unaligned_p -00000001200b4830 T get_insns -00000001200afcb0 T get_integer_term -0000000120156dd0 t get_jump_flags -00000001200e39a0 T get_label_after -00000001200e3910 T get_label_before -00000001200b4850 T get_last_insn -00000001200b48b0 T get_last_insn_anywhere -00000001201299d0 t get_last_value -00000001201297d0 t get_last_value_validate -00000001200b4900 T get_max_uid -0000000120041960 T get_narrower -0000000120013760 T get_parm_info -0000000120048e70 T get_pending_sizes -00000001200842e0 t get_pointer_alignment -00000001200a9760 T get_pool_constant -00000001200a9830 T get_pool_mode -00000001200a9900 T get_pool_offset -00000001200a99d0 T get_pool_size -00000001200afd30 T get_related_value -00000001200384e0 T get_run_time -0000000120041e00 T get_set_constructor_bits -0000000120041fc0 T get_set_constructor_bytes -0000000120021790 t get_spelling -00000001200416b0 T get_unwidened -0000000120016e20 T getdecls -0000000120200580 S getf2_libfunc -0000000120198ed0 T getpwd -0000000120016e40 T gettags -0000000120200678 S gexf2_libfunc -0000000120135fa0 T global_alloc -0000000120200090 S global_alloc_time -00000001201fede0 s global_binding_level -00000001200164d0 T global_bindings_p -0000000120136f90 t global_conflicts -00000001202007e8 S global_const_equiv_map -00000001202007f0 S global_const_equiv_map_size -00000001201fef20 S global_reg_dump -0000000120200078 S global_reg_dump_file -0000000120213d0c B global_regs -0000000120130270 T globalize_reg -00000001201ff0e0 s goto_fixup_chain -0000000120011750 t grokdeclarator -0000000120017710 T grokfield -0000000120013550 t grokparms -0000000120016ee0 T groktypename -0000000120016f20 T groktypename_in_parm_context -000000012006c550 t group_case_nodes -0000000120200340 S gtdf2_libfunc -0000000120200670 S gthf2_libfunc -0000000120200500 S gtsf2_libfunc -0000000120200460 S gttf2_libfunc -0000000120200598 S gtxf2_libfunc -000000012000c110 T handle_pragma_token -00000001200a99f0 T handle_pragma_weak -0000000120008c80 T handle_sysv_pragma -00000001202007e0 S hard_frame_pointer_rtx -0000000120095f70 T hard_function_value -0000000120096090 T hard_libcall_value -00000001201ff7d0 s hard_reg_conflicts -00000001201ff7e0 s hard_reg_copy_preferences -00000001201ff7e8 s hard_reg_full_preferences -00000001201ff7d8 s hard_reg_preferences -000000012013c7e0 t hard_reg_set_here_p -0000000120152d20 t hard_reg_use_compare -00000001201ff3d8 s hard_regs_in_table -00000001201ff7c4 s hard_regs_live -00000001201ff938 s hard_regs_live -00000001201ff85c s hard_regs_live_known -00000001201ff948 s hard_regs_need_restore -00000001201ff940 s hard_regs_saved -00000001201ff418 s hash_arg_in_memory -00000001201ff41c s hash_arg_in_struct -0000000120201258 b hash_table -0000000120209db8 b hashtab -00000001200a1440 T have_add2_insn -00000001200a1580 T have_sub2_insn -00000001201ff244 s have_used_extensions -00000001201ffae8 s high_block_linenum -00000001201ffaec s high_function_linenum -00000001201ff120 s highest_outgoing_arg_in_use -00000001201ff6a8 s highest_regno_in_uid_map -00000001201ffff0 S id_clash_len -00000001201feff8 S id_string_size -000000012005f2a0 T identify_blocks -00000001201fecf8 s if_stmt_file -00000001201fed00 s if_stmt_line -00000001201219a0 t if_then_else_cond -00000001200fe1d0 t ignore_some_movables -00000001200a4ad0 T immed_double_const -00000001200a9420 T immed_real_const -00000001200a4d30 T immed_real_const_1 -00000001201732d0 T immediate_operand -0000000120200148 S immediate_size_expand -00000001200169f0 T implicitly_declare -00000001201ff08c s in_arg_offset -00000001201ff168 s in_named_name -00000001201ff308 s in_nonparm_insns -00000001200165c0 T in_parm_level_p -00000001201ff148 s in_section -00000001200b6480 T in_sequence_p -00000001201fef68 S in_system_header -00000001200a86e0 T in_text_section -0000000120152660 t inc_for_reload -00000001201fef58 S incomplete_decl_finalize_hook -0000000120018f40 T incomplete_type_error -00000001201ff1b4 s indent.0 -0000000120047830 T indent_to -0000000120044df0 T index_type_equal -0000000120173810 T indirect_operand -0000000120200999 S indirect_symref_ok -00000001200af270 T inequality_comparisons_p -00000001202002ec S inhibit_defer_pop -00000001201fefc0 S inhibit_warnings -00000001201ff348 s init.0 -00000001201ff34c s init.3 -00000001201ff350 s init.4 -00000001201641d0 T init_alias_analysis -00000001201740b0 T init_all_optabs -00000001201549c0 T init_caller_save -00000001200a9560 T init_const_rtx_hash_table -000000012000e5d0 T init_decl_processing -00000001200b35a0 T init_emit -00000001200b3800 T init_emit_once -0000000120089c70 T init_expmed -0000000120082040 T init_expr -000000012006ff10 T init_expr_once -000000012016f630 T init_final -000000012002cb10 T init_function_format_info -000000012005f5e0 T init_function_start -000000012016f700 T init_insn_lengths -000000012002e8e0 T init_iterators -0000000120007110 T init_lex -00000001200a1640 t init_libfuncs -0000000120107800 T init_loop -000000012018a8b0 T init_mov_optab -0000000120084200 t init_noncopied_parts -000000012003b990 T init_obstacks -000000012009ecb0 T init_optabs -0000000120082a70 T init_pending_stack_adjust -0000000120172e30 T init_recog -0000000120172e10 T init_recog_no_volatile -0000000120114280 t init_reg_last_arrays -0000000120109a30 t init_reg_map -0000000120130b10 t init_reg_modes -000000012012d1e0 T init_reg_sets -00000001201307a0 t init_reg_sets_1 -000000012012fec0 T init_regs -000000012010ff40 t init_regset_vector -0000000120147440 T init_reload -00000001200ac2b0 T init_rtl -0000000120156100 T init_save_areas -000000012006e240 T init_stmt -000000012006e270 T init_stmt_for_function -00000001200425f0 T init_tree_codes -00000001201ea0f8 d initial_call_used_regs -00000001201ea0b8 d initial_fixed_regs -000000012010d3a0 t initial_reg_note_copy -00000001201ff028 s initial_trampoline.1 -00000001201ffea0 S initialization_message -00000001200dfa70 t initialize_for_inline -00000001201ff26c s initialized.2 -00000001200213c0 T initializer_constant_valid_p -00000001201ffe90 S initializer_stack -0000000120200198 S inline_function_decl -0000000120200108 S inline_obstacks -00000001201fff20 S input_file_stack -000000012020000c S input_file_stack_tick -00000001201fffc0 S input_filename -00000001200e7f50 t insert -00000001200167b0 T insert_block -00000001200e7ab0 t insert_regs -0000000120155d20 t insert_save_restore -00000001202009b8 S insn_addresses -00000001201ff9f0 s insn_blockage -0000000120164cf0 t insn_cost -00000001201ff9e0 s insn_costs -00000001201ffac8 s insn_counter -00000001202009b4 S insn_current_address -000000012018ea90 T insn_current_length -00000001201109b0 t insn_dead_p -000000012018a8c0 T insn_default_length -000000012017c590 T insn_extract -00000001201bf238 R insn_gen_function -00000001201ffb28 s insn_lengths -00000001201ff9d0 s insn_luid -00000001201ff2d8 s insn_map -00000001201cec10 R insn_n_alternatives -00000001201bff7c R insn_n_dups -00000001201bfb10 R insn_n_operands -00000001201ea800 D insn_name -00000001201fecc8 G insn_name_ptr -00000001201ffb08 s insn_noperands -00000001201c03e8 R insn_operand_constraint -00000001201c5c58 R insn_operand_mode -00000001201c93a0 R insn_operand_predicate -00000001201c8890 R insn_operand_strict_low -00000001201be960 R insn_outfun -00000001201ff9d8 s insn_priority -0000000120209570 b insn_queue -00000001201ff9f8 s insn_ref_count -00000001201be088 R insn_template -00000001201ffa38 s insn_tick -00000001201ff9e8 s insn_units -000000012018eb20 T insn_variable_length_p -0000000120063780 t instantiate_decls_1 -00000001200621a0 T instantiate_virtual_regs -000000012005c860 t instantiate_virtual_regs_1 -0000000120197760 T int32_operand -0000000120197730 T int5_operand -00000001201ffcf8 S intDI_type_node -00000001201ffd08 S intHI_type_node -00000001201ffc78 S intQI_type_node -00000001201ffcd8 S intSI_type_node -00000001201ffdb0 S int_array_type_node -0000000120045270 T int_fits_type_p -00000001201ffe08 S int_ftype_cptr_cptr_sizet -00000001201ffd30 S int_ftype_int -00000001201ffca8 S int_ftype_ptr_ptr_int -00000001201ffde0 S int_ftype_string_string -00000001201ea238 d int_reg_class_contents -0000000120043a30 T int_size_in_bytes -0000000120042cf0 T integer_all_onesp -0000000120196960 T integer_ok_for_set -00000001201ffd58 S integer_one_node -0000000120042b90 T integer_onep -0000000120042ef0 T integer_pow2p -00000001201ffe80 S integer_type_node -00000001201ffd68 S integer_zero_node -0000000120042ac0 T integer_zerop -00000001200dd810 t integrate_decl_tree -00000001200dd710 t integrate_parm_decls -00000001201ffefc S integration_time -00000001200387c0 T interim_eh -0000000120200088 S interim_eh_hook -0000000120025d50 t internal_build_compound_expr -00000001200e87e0 t invalidate -00000001200f5710 t invalidate_for_call -00000001200f2dd0 t invalidate_from_clobbers -00000001200fb1e0 t invalidate_skipped_set -0000000120100fe0 T invariant_p -00000001200e4a60 T invert_exp -00000001200e6f60 T invert_jump -000000012004c250 T invert_truthvalue -0000000120200538 S ior_optab -0000000120044300 T is_attribute_p -0000000120006eb0 T is_class_name -000000012000b660 T is_reserved_word -00000001201ffea8 S iter_stack -000000012010d480 t iteration_info -000000012002ef90 T iterator_expand -000000012002ee60 T iterator_for_loop_end -000000012002ed40 T iterator_for_loop_start -00000001201feee8 s ixp_firstobj -0000000120201150 b ixp_obstack -00000001201fef28 S jump2_opt_dump -00000001201fffc8 S jump2_opt_dump_file -00000001200e3a30 t jump_back_p -00000001201ff318 s jump_chain -00000001201fef00 S jump_opt_dump -00000001201fffb0 S jump_opt_dump_file -00000001200e0140 T jump_optimize -0000000120200070 S jump_time -000000012007e7c0 T jumpif -000000012007e790 T jumpifnot -00000001201ffb38 s junk -00000001201fedec s keep_next_if_subblocks -00000001200164f0 T keep_next_level -00000001201fede8 s keep_next_level_flag -0000000120016510 T kept_level_p -00000001201222b0 t known_cond -00000001202034f8 b label.4 -00000001201ff0f8 s label_counter.3 -00000001201fedf0 s label_level_chain -00000001201ff2d0 s label_map -00000001201fec50 g label_num -000000012006e510 T label_rtx -00000001201ff628 s label_tick -00000001201ff14c s labelno.1 -00000001201ff150 s labelno.2 -0000000120200a30 S labelrefs -0000000120200a38 S labels -0000000120100f60 t labels_in_range_p -0000000120006de0 T lang_decode_option -00000001201fffa0 S lang_expand_expr -0000000120006e60 T lang_finish -0000000120006e70 T lang_identify -0000000120006e10 T lang_init -00000001201e7db0 D lang_options -00000001201fec00 G language_string -00000001201fff5c S larger_than_size -00000001201ffb78 s last_addr.2 -00000001202006d0 S last_assemble_variable_decl -00000001201ff0c8 s last_block_end_note -00000001201ff5d4 s last_call_cuid -00000001201ff558 s last_call_suid -000000012006f4d0 T last_cleanup_this_contour -00000001201fefd0 s last_error_function -00000001201fefec s last_error_tick -00000001201ff0b8 s last_expr_type -00000001201ff0c0 s last_expr_value -00000001201ff208 s last_filename -00000001201ff288 s last_filename -00000001201ffaf0 s last_filename -00000001201ffa98 s last_function_call -00000001201fed88 s last_function_parm_tags -00000001201fed80 s last_function_parms -00000001201ffac0 s last_ignored_compare -00000001201ff1f0 s last_insn -00000001201ff430 s last_jump_equiv_class -00000001201ff214 s last_label_num -00000001201ff268 s last_line_entry_num.0 -00000001201ff200 s last_linenum -00000001201ffae4 s last_linenum -00000001201ff540 s last_mem_set -00000001201ff048 s last_parm_insn -00000001201ffa90 s last_pending_memory_flush -00000001201ff198 s last_pool -00000001201ffaa8 s last_scheduled_insn -00000001201ff8ac s last_spill_reg -0000000120106ed0 t last_use_this_basic_block -00000001201ffbf0 S lastiddecl -00000001200144f0 t layout_array_type -00000001200478c0 T layout_decl -00000001200495d0 t layout_record -0000000120047db0 T layout_type -0000000120049bc0 t layout_union -00000001201ffe00 S ldouble_ftype_ldouble -00000001201ea470 d leaf.0 -00000001202009c8 S leaf_function -000000012016fa00 T leaf_function_p -0000000120200480 S ledf2_libfunc -0000000120191870 T legitimize_address -0000000120197110 T legitimize_operand -0000000120200330 S lehf2_libfunc -00000001202005c0 S lesf2_libfunc -0000000120200560 S letf2_libfunc -00000001202003d8 S lexf2_libfunc -00000001200fe070 t libcall_benefit -0000000120110c60 t libcall_dead_p -00000001200fdec0 t libcall_other_reg -000000012010eec0 t life_analysis -00000001201ffa00 s line_note -00000001201ffb20 s line_note_exists -00000001201ffa08 s line_note_head -00000001201feff0 s line_position -0000000120200094 S lineno -00000001200435d0 T list_length -00000001200436d0 T listify -0000000120130d90 T local_alloc -00000001201fff8c S local_alloc_time -00000001201fef1c S local_reg_dump -00000001201ffeb8 S local_reg_dump_file -0000000120206f90 b local_reg_live_length -0000000120206e90 b local_reg_n_refs -00000001202001e0 S local_vars_size -000000012005e850 T locate_and_pad_parm -00000001200d9aa0 t location_attribute -00000001200d78e0 t location_or_const_value_attribute -00000001201ffca0 S long_double_type_node -00000001201ffc88 S long_ftype_long -00000001201ffd50 S long_integer_type_node -00000001201ffe40 S long_long_integer_type_node -00000001201ffd18 S long_long_unsigned_type_node -00000001201ffe88 S long_unsigned_type_node -00000001200444f0 T lookup_attribute -000000012001a760 t lookup_field -00000001200cdce0 t lookup_filename -0000000120006ea0 T lookup_interface -0000000120016b90 T lookup_label -000000012000e4c0 T lookup_name -000000012000e500 T lookup_name_current_level -000000012000e560 T lookup_name_current_level_global -0000000120063370 T lookup_static_chain -00000001201ff470 s loop_continue -00000001201ff6a4 s loop_cost -00000001201ff538 s loop_depth -00000001201ff6a0 s loop_depth -00000001201ff770 s loop_depth -00000001201fef08 S loop_dump -0000000120200050 S loop_dump_file -0000000120200820 S loop_dump_stream -00000001201ff4f0 s loop_final_value -00000001201ff468 s loop_has_call -00000001201ff46c s loop_has_volatile -00000001201ff4e8 s loop_increment -00000001201ff4e0 s loop_initial_value -00000001201ff460 s loop_invalid -00000001201ff4d8 s loop_iteration_var -000000012010c720 T loop_iterations -0000000120200848 S loop_iv_list -0000000120200808 S loop_n_iterations -0000000120200840 S loop_number_exit_count -0000000120200810 S loop_number_exit_labels -00000001201ff458 s loop_number_loop_ends -00000001201ff450 s loop_number_loop_starts -00000001200fc370 T loop_optimize -0000000120200818 S loop_outer_loop -0000000120101da0 t loop_reg_used_before_p -00000001202002c0 S loop_stack -0000000120206608 b loop_store_mems -00000001201ff498 s loop_store_mems_idx -00000001201ffed0 S loop_time -00000001201ff4a8 s loops_enclosed -0000000120055f40 T lrotate_double -0000000120055db0 T lshift_double -000000012008cab0 t lshift_value -00000001202006c0 S lshr_optab -00000001202005a8 S ltdf2_libfunc -0000000120200548 S lthf2_libfunc -0000000120200518 S ltsf2_libfunc -0000000120200470 S lttf2_libfunc -0000000120200430 S ltxf2_libfunc -000000012001f0a0 T lvalue_or_else -000000012001eff0 T lvalue_p -00000001200c0300 t m16m -0000000120197de0 T m88k_begin_epilogue -0000000120197cd0 T m88k_begin_prologue -0000000120195430 T m88k_builtin_saveregs -0000000120200a08 S m88k_case_index -0000000120200a00 S m88k_compare_op0 -0000000120200a18 S m88k_compare_op1 -00000001202009e8 S m88k_compare_reg -00000001202009e0 S m88k_cpu -0000000120198220 T m88k_debugger_offset -0000000120197e80 T m88k_end_epilogue -0000000120197cf0 T m88k_end_prologue -0000000120198160 T m88k_expand_epilogue -0000000120194880 T m88k_expand_prologue -00000001201ffb4c S m88k_fp_offset -00000001201987f0 T m88k_function_arg -00000001201ffb48 S m88k_function_number -00000001201ffb40 S m88k_gp_threshold -0000000120194400 T m88k_layout_frame -00000001201fecd0 G m88k_pound_sign -00000001201ffb44 S m88k_prologue_done -0000000120200a10 S m88k_short_data -00000001201ffb50 S m88k_stack_size -00000001202009f0 S m88k_version -00000001202009f8 S m88k_volatile_code -00000001201eb4a8 d m_options -0000000120036b90 T main -0000000120200028 S main_input_filename -0000000120197800 T mak_mask_p -000000012011f8b0 t make_compound_operation -00000001200a1df0 T make_decl_rtl -000000012011ed90 t make_extraction -0000000120122800 t make_field_assignment -00000001200a1880 T make_function_rtl -00000001200b4bf0 T make_insn_raw -00000001200bb910 t make_nan -000000012003d170 T make_node -000000012000b790 T make_pointer_declarator -000000012015c790 t make_return_insns -00000001200b46f0 T make_safe_from -0000000120049170 T make_signed_type -0000000120091e70 T make_tree -000000012003e220 T make_tree_vec -00000001200492c0 T make_unsigned_type -00000001200a89c0 T make_var_volatile -000000012001f3c0 T mark_addressable -0000000120139ec0 T mark_elimination -000000012014b680 T mark_home_live -00000001200e3f10 t mark_jump_label -000000012010ecc0 t mark_label_ref -0000000120134950 t mark_life -0000000120100be0 t mark_loop_jump -00000001200e7250 t mark_modified_reg -0000000120152c40 t mark_not_eliminable -0000000120156280 t mark_referenced_resources -0000000120139030 t mark_reg_clobber -0000000120139220 t mark_reg_conflicts -0000000120139370 t mark_reg_death -00000001201394c0 t mark_reg_live_nc -00000001200b3d50 T mark_reg_pointer -0000000120138df0 t mark_reg_store -0000000120152e70 t mark_reload_reg_in_use -000000012014b750 t mark_scratch_live -000000012006a560 T mark_seen_cases -0000000120110e70 t mark_set_1 -0000000120110d50 t mark_set_regs -0000000120156860 t mark_set_resources -00000001200df8d0 T mark_stores -0000000120158370 t mark_target_live_regs -0000000120061e00 T mark_temp_addr_taken -0000000120111510 t mark_used_regs -000000012012a230 t mark_used_regs_combine -0000000120063640 T mark_varargs -000000012008c9c0 t mask_rtx -00000001201ff788 s max_allocno -00000001201ffb0c s max_block_depth -00000001201ff42c s max_elements_made -00000001201eb3f4 d max_from_align -00000001201ff320 s max_jump_chain -00000001200b3db0 T max_label_num -00000001201ff44c s max_loop_num -00000001201ff448 s max_luid -0000000120200930 S max_parallel -00000001201ff050 s max_parm_reg -00000001201ff2e8 s max_parm_reg -0000000120062d10 T max_parm_reg_num -00000001201ffab0 s max_priority -00000001201ff358 s max_qty -00000001201ff354 s max_reg -0000000120200830 S max_reg_before_loop -00000001200b3d90 T max_reg_num -00000001202008a4 S max_regno -0000000120200880 S max_scratch -0000000120200158 S max_stack_depth -00000001201ff408 s max_uid -00000001201ff978 s max_uid -00000001201ff5b8 s max_uid_cuid -00000001201ff4f8 s max_uid_for_flow -0000000120200868 S max_uid_for_loop -000000012020014c S maximum_field_alignment -00000001201fed24 s maxtoken -0000000120206c8c b may_move_cost -00000001201ff488 s may_not_optimize -00000001200aef80 T may_trap_p -0000000120016f60 T maybe_build_cleanup -0000000120006ef0 T maybe_building_objc_message_expr -0000000120106830 t maybe_eliminate_biv -00000001201069c0 t maybe_eliminate_biv_1 -0000000120006ec0 T maybe_objc_check_decl -0000000120006ed0 T maybe_objc_comptypes -0000000120006ee0 T maybe_objc_method_name -00000001202000c0 S maybepermanent_firstobj -000000012020bdf0 B maybepermanent_obstack -0000000120190250 t mem100_unit_blockage -000000012018c440 T mem100_unit_blockage_range -0000000120190b80 t mem100_unit_conflict_cost -000000012018c1d0 T mem100_unit_ready_cost -000000012018fca0 t mem110_unit_blockage -000000012018be80 T mem110_unit_blockage_range -000000012018bc10 T mem110_unit_ready_cost -00000001201ff5d0 s mem_last_set -0000000120200568 S memcmp_libfunc -0000000120200520 S memcpy_libfunc -0000000120207540 b memlocs -0000000120093c80 T memory_address -00000001200956f0 T memory_address_noforce -00000001201716e0 T memory_address_p -0000000120173730 T memory_operand -0000000120131600 t memref_referenced_p -0000000120160a20 t memrefs_conflict_p -0000000120200420 S memset_libfunc -00000001200e77c0 t mention_regs -00000001200f5390 t merge_equiv_classes -000000012012cba0 t merge_outer_ops -00000001201ff23c S merror -0000000120200a88 b message.0 -00000001201e740e d message.4 -000000012002d590 T min_precision -00000001201fee04 s missing_braces_mentioned -00000001200cee50 t mod_fund_type_attribute -00000001200cf2c0 t mod_u_d_type_attribute -00000001201e9488 D mode_class -0000000120173e40 T mode_dependent_address_p -0000000120049050 T mode_for_size -00000001201eb3d0 d mode_from_align -0000000120173e50 T mode_independent_operand -00000001201e93a0 D mode_name -00000001201e94fc D mode_size -000000012020bf38 B mode_to_const_map -000000012020bfac B mode_to_load_map -000000012020c094 B mode_to_store_map -00000001201e9570 D mode_unit_size -00000001201e95e4 D mode_wider_mode -000000012014ac70 t modes_equiv_for_class_p -00000001200ad550 T modified_between_p -00000001200ad830 T modified_in_p -00000001201ff340 s modified_mem -00000001201ff338 s modified_regs -00000001202000e0 S momentary_firstobj -00000001202000a8 S momentary_function_firstobj -000000012020bb28 B momentary_obstack -0000000120200118 S momentary_stack -00000001201928e0 T mostly_false_jump -0000000120156f70 t mostly_true_jump -0000000120200618 S mov_optab -0000000120082310 T move_block_from_reg -0000000120082240 T move_block_to_reg -0000000120082c80 t move_by_pieces -0000000120071640 t move_by_pieces_1 -0000000120071540 t move_by_pieces_ninsns -000000012006f470 T move_cleanups_up -0000000120206bc8 b move_cost -000000012012a4e0 t move_deaths -00000001200fef90 t move_movables -0000000120197240 T move_operand -00000001201ff490 s moved_once -000000012020c020 B movstr_optab -00000001202005e8 S movstrict_optab -00000001200bb870 t mtherr -00000001202039c8 b mul_cost -000000012004a0a0 T mul_double -0000000120203b24 b mul_highpart_cost -0000000120203ab0 b mul_widen_cost -00000001201ffbbc s n.3 -00000001202008b0 S n_basic_blocks -0000000120200958 S n_earlyclobbers -00000001201ff428 s n_elements_made -00000001201ff848 s n_memlocs -0000000120200900 S n_non_fixed_regs -00000001201ff668 s n_occurrences -0000000120145880 T n_occurrences -00000001202009a4 S n_regs_saved -00000001201ff830 s n_regs_set -0000000120200954 S n_reloads -00000001201ff844 s n_replacements -00000001201ff8a0 s n_spills -00000001201ff478 s n_times_set -00000001201ff480 s n_times_used -00000001201fed38 s name.2 -00000001201fedb0 s named_labels -00000001200a8700 T named_section -0000000120200388 S nedf2_libfunc -00000001201fefe8 s need_error_newline -0000000120055d70 T neg_double -00000001202005d0 S neg_optab -00000001201ff13c s negate_cost -0000000120093010 T negate_rtx -0000000120200690 S nehf2_libfunc -0000000120200680 S nesf2_libfunc -00000001202002b0 S nesting_depth -00000001202002a0 S nesting_stack -0000000120200350 S netf2_libfunc -00000001201ff8f8 s new_asm_operands_vec -00000001200f5100 t new_basic_block -00000001201feca8 g new_block -000000012016a0d0 t new_insn_dead_notes -000000012014ae20 t new_spill_reg -00000001201fed20 s newline_warning.1 -00000001201ff5ec s newpat_used_regs -00000001202004c8 S nexf2_libfunc -00000001200b4ab0 T next_active_insn -00000001202009a8 S next_block_index -00000001201ff254 s next_block_number -00000001201fec88 g next_block_number -00000001201ff004 s next_decl_uid -00000001200b4920 T next_insn -00000001200b4b90 T next_label -00000001200e6ed0 T next_nondeleted_insn -00000001200b49d0 T next_nonnote_insn -00000001201ff260 s next_pubname_number -00000001201ff35c s next_qty -00000001201ff6b0 s next_qty -00000001200b4a30 T next_real_insn -00000001201fec38 g next_type_uid -00000001201fec8c g next_unused_dienum -00000001201fec08 g nextchar -00000001201ff020 s nlab.0 -00000001201ffbb0 s nlab.0 -0000000120134bb0 t no_conflict_p -00000001201ff7f8 s no_global_alloc_regs -00000001200afdb0 T no_labels_between_p -00000001201ff21c s no_line_numbers -00000001200563a0 T non_lvalue -00000001201734b0 T nonimmediate_operand -00000001201ea570 d nonleaf.1 -00000001202001b0 S nonlocal_goto_handler_slot -0000000120200220 S nonlocal_goto_stack_level -0000000120062ae0 T nonlocal_label_rtx_list -0000000120200268 S nonlocal_labels -0000000120173540 T nonmemory_operand -0000000120123780 t nonzero_bits -00000001201ff638 s nonzero_bits_mode -00000001201ff648 s nonzero_sign_valid -00000001201078e0 t note_addr_stored -00000001201ff4b0 s note_insn -00000001201e9a70 D note_insn_name -00000001201ffa10 s note_list -00000001200f2a60 t note_mem_written -00000001200dfe50 t note_modified_parmregs -00000001200ae350 T note_stores -00000001201ffb80 s nregs -00000001200436a0 T nreverse -00000001201ffdc8 S null_pointer_node -0000000120197c50 T null_prologue -00000001201ffb30 s num_changes -000000012018d780 T num_delay_slots -00000001201ff8d0 s num_eliminable -0000000120209530 b num_filled_delays -0000000120209520 b num_insns_needing_delays -00000001201ff8e8 s num_labels -00000001201ff4a4 s num_mem_sets -00000001201ff4a0 s num_movables -00000001201ff8cc s num_not_at_initial_offset -00000001201ff330 s num_same_regs -00000001201ff510 s num_scratch -0000000120124310 t num_sign_bit_copies -0000000120173000 T num_validated_changes -00000001201ffb84 s nxregs -000000012003ca00 T oballoc -00000001201fef6c S obey_regdecls -0000000120042310 T obfree -00000001200423e0 T object_permanent_p -00000001202000d0 S obstack_stack -0000000120201200 b obstack_stack_obstack -0000000120197a60 T odd_relop -00000001201ff8e0 s offsets_at -00000001201ff8d8 s offsets_known_at -0000000120173b60 T offsettable_address_p -0000000120173a80 T offsettable_memref_p -0000000120173af0 T offsettable_nonstrict_memref_p -00000001201ff8f0 s old_asm_operands_vec -00000001201ffa28 s old_live_regs -0000000120200348 S one_cmpl_optab -0000000120206d50 b op_costs -000000012003b850 t open_dump_file -000000012004b950 T operand_equal_p -00000001200b1df0 T operand_subword -00000001200b41c0 T operand_subword_force -000000012013ce20 T operands_match_p -00000001201ec06c D optab_bit_and_expr -00000001201ec09c D optab_bit_ior_expr -00000001201ec544 D optab_bit_not_expr -00000001201ec0cc D optab_bit_xor_expr -00000001201ec41c D optab_eq_expr -00000001201ec2fc D optab_ge_expr -00000001201ec38c D optab_gt_expr -00000001201ec26c D optab_le_expr -00000001201ec0fc D optab_lshift_expr -00000001201ec1dc D optab_lt_expr -00000001201ebe9c D optab_minus_expr -00000001201ebf0c D optab_mult_expr -00000001201ec48c D optab_ne_expr -00000001201ec4fc D optab_negate_expr -00000001201ebe2c D optab_plus_expr -00000001201ec650 D optab_postdecrement_expr -00000001201ec6b8 D optab_postincrement_expr -00000001201ec580 D optab_predecrement_expr -00000001201ec5e8 D optab_preincrement_expr -00000001201ec02c D optab_rdiv_expr -00000001201ec14c D optab_rshift_expr -00000001201ebf8c D optab_trunc_div_expr -00000001201ebfdc D optab_trunc_mod_expr -00000001201ec19c D optab_truth_and_expr -00000001201ec568 D optab_truth_not_expr -00000001201ec1bc D optab_truth_or_expr -00000001201fec18 G optimize -000000012005c2c0 t optimize_bit_field -0000000120056ff0 t optimize_bit_field_compare -0000000120135250 t optimize_reg_copy_1 -0000000120135790 t optimize_reg_copy_2 -000000012015d5d0 t optimize_skip -000000012014d780 t order_regs_for_reload -00000001201ff2f0 s orig_asm_operands_vector -00000001201ff098 s out_arg_offset -00000001201eb388 d out_rcs_id -00000001202001b8 S outer_function_chain -00000001201ff1c0 s outfile -000000012017d430 t output_107 -000000012017d460 t output_108 -000000012017d1b0 t output_11 -000000012017d490 t output_114 -000000012017d4c0 t output_117 -000000012017d230 t output_12 -000000012017d4f0 t output_120 -000000012017d520 t output_121 -000000012017d550 t output_123 -000000012017d580 t output_126 -000000012017d5b0 t output_127 -000000012017d5e0 t output_129 -000000012017d610 t output_131 -000000012017d640 t output_132 -000000012017d670 t output_134 -000000012017d6a0 t output_147 -000000012017d6d0 t output_149 -000000012017d700 t output_151 -000000012017d730 t output_154 -000000012017d760 t output_156 -000000012017d790 t output_158 -000000012017d7c0 t output_169 -000000012017d7f0 t output_223 -000000012017d820 t output_225 -000000012017d960 t output_228 -000000012017d990 t output_230 -000000012017dad0 t output_233 -000000012017db00 t output_235 -000000012017dc40 t output_245 -000000012017dc70 t output_247 -000000012017dca0 t output_249 -000000012017dcd0 t output_252 -000000012017dd00 t output_254 -000000012017dd70 t output_256 -000000012017dde0 t output_257 -000000012017de50 t output_258 -000000012017dec0 t output_259 -000000012017dfb0 t output_261 -000000012017dfe0 t output_262 -000000012017e010 t output_264 -000000012017e040 t output_269 -000000012017e080 t output_271 -000000012017e0b0 t output_273 -000000012017e0e0 t output_281 -000000012017d2b0 t output_46 -000000012017d380 t output_58 -000000012017d3b0 t output_61 -000000012017d3e0 t output_94 -000000012016edc0 T output_addr_const -000000012016ed70 T output_address -00000001200a7340 t output_addressed_constants -0000000120196ed0 T output_and -00000001200cf650 t output_array_type_die -00000001201941b0 T output_ascii -000000012016e3b0 T output_asm_insn -000000012016ebc0 T output_asm_label -00000001200d6fa0 t output_block -0000000120198690 T output_block_profiler -00000001200d9460 t output_bound_representation -00000001201fef50 S output_bytecode -0000000120192610 T output_call -00000001200d3530 t output_compile_unit_die -00000001200a74b0 T output_constant -00000001200a5ff0 T output_constant_def -00000001200a6550 t output_constant_def_contents -00000001200a6ff0 T output_constant_pool -00000001200a79b0 t output_constructor -00000001200ca140 t output_decl -00000001200c9f60 t output_decls_for_scope -00000001200a94c0 T output_deferred_addressed_constants -0000000120164770 T output_dependence -00000001200d6db0 t output_die -00000001200d98c0 t output_enumeral_list -00000001200d0550 t output_enumeration_type_die -0000000120039010 T output_file_directive -0000000120192b90 T output_file_start -00000001200d0ad0 t output_formal_parameter_die -00000001201982d0 T output_function_block_profiler -0000000120195060 T output_function_profiler -00000001200d0f40 t output_global_subroutine_die -00000001200d1b20 t output_global_variable_die -0000000120026240 t output_init_element -00000001200df520 T output_inline_function -00000001200cfef0 t output_inlined_enumeration_type_die -00000001200d0110 t output_inlined_structure_type_die -00000001200d8fb0 t output_inlined_subroutine_die -00000001200d0330 t output_inlined_union_type_die -0000000120196f90 T output_ior -0000000120197be0 T output_label -00000001200d2050 t output_label_die -00000001200d8b40 t output_lexical_block_die -0000000120196c00 T output_load_const_dimode -0000000120196b00 T output_load_const_double -0000000120196a80 T output_load_const_float -0000000120196990 T output_load_const_int -00000001200d4cd0 t output_local_subroutine_die -00000001200d2540 t output_local_variable_die -00000001200c8e30 t output_mem_loc_descriptor -00000001200d2a60 t output_member_die -000000012016ecd0 t output_operand -000000012016f9b0 T output_operand_lossage -00000001200d6d60 t output_padded_null_die -0000000120023cd0 t output_pending_init_elements -00000001200d2fd0 t output_ptr_to_mbr_type_die -0000000120038f10 T output_quoted_string -00000001201ff86c s output_reloadnum -00000001200cfaa0 t output_set_type_die -000000012016e090 t output_source_line -00000001200d43b0 t output_string_type_die -00000001200d46e0 t output_structure_type_die -00000001200d58b0 t output_subroutine_type_die -00000001200c97e0 t output_type -00000001200d5e50 t output_typedef_die -00000001200d6370 t output_union_type_die -00000001200d6960 t output_unspecified_parameters_die -0000000120197020 T output_xor -000000012002cda0 T overflow_warning -00000001201febf8 g p.0 -000000012005ec10 t pad_below -000000012005eb40 t pad_to_arg_alignment -00000001201ff040 s parm_birth_insn -00000001201ff058 s parm_reg_stack_loc -00000001201ff2e0 s parmdecl_map -0000000120017070 T parmlist_tags_warning -000000012020006c S parse_time -000000012001bc20 T parser_build_binary_op -0000000120197960 T partial_ccmode_register_operand -00000001201eb678 d patterns.3 -0000000120197bc0 T pc_or_label_ref -0000000120200770 S pc_rtx -00000001201fef64 S pedantic -000000012001f1f0 t pedantic_lvalue_warning -0000000120200150 S pedantic_lvalues -0000000120056480 T pedantic_non_lvalue -0000000120031860 T pedwarn -0000000120021cf0 T pedwarn_init -0000000120031df0 T pedwarn_with_decl -0000000120032230 T pedwarn_with_file_and_line -00000001202156c8 B peep_operand -0000000120156270 T peephole -00000001201ffb10 s pending_blocks -00000001201ff110 s pending_chain -00000001201ff988 s pending_dead_regs -00000001201ffdd8 S pending_invalid_xref -00000001201ffdb8 S pending_invalid_xref_file -00000001201ffc60 S pending_invalid_xref_line -00000001201ffa78 s pending_lists_length -00000001201ffa58 s pending_read_insns -00000001201ffa60 s pending_read_mems -00000001201ff298 s pending_sibling_stack -00000001201ff2a0 s pending_siblings -00000001201ff2a4 s pending_siblings_allocated -00000001201ff018 s pending_sizes -00000001202002e0 S pending_stack_adjust -00000001201ff2b4 s pending_types -00000001201ff2b0 s pending_types_allocated -00000001201ff2a8 s pending_types_list -00000001201ffa68 s pending_write_insns -00000001201ffa70 s pending_write_mems -0000000120016e60 T pending_xref_error -000000012003cbe0 T perm_calloc -0000000120043860 T perm_tree_cons -000000012003caf0 T permalloc -000000012003c480 T permanent_allocation -000000012020bd98 B permanent_obstack -00000001200386e0 T pfatal_with_name -0000000120198a50 T pic_address_needs_scratch -0000000120200768 S pic_offset_table_rtx -0000000120039510 t pipe_closed -00000001201ff0f0 s placeholder_list.0 -00000001200c0440 t plain_type_1 -00000001200952f0 T plus_constant_for_output_wide -0000000120093810 T plus_constant_wide -000000012001e270 t pointer_diff -000000012001deb0 t pointer_int_sum -00000001201ff1a0 s pool_offset -0000000120017b10 T pop_c_function_context -0000000120038df0 T pop_float_handler -0000000120061c90 T pop_function_context -00000001200596f0 T pop_function_context_from -0000000120023580 T pop_init_level -000000012002f420 T pop_iterator_stack -000000012000d3d0 T pop_label_level -00000001200424e0 T pop_momentary -0000000120042570 T pop_momentary_nofree -0000000120042200 T pop_obstacks -0000000120062100 T pop_temp_slots -00000001200b63b0 T pop_topmost_sequence -000000012000cfb0 T poplevel -000000012000b9c0 T position_after_white_space -000000012014a6a0 t possible_group_p -0000000120134a40 t post_mark_life -0000000120161fb0 t potential_hazard -0000000120207ed0 b potential_reload_regs -0000000120109670 t precondition_loop_p -000000012007e2d0 t preexpand_calls -00000001201ff690 s prefclass -000000012019dce0 T preferred_typecode -00000001201fece8 s prefix_attributes -0000000120089940 T prepare_call_address -0000000120164c60 t prepare_unit -00000001201001f0 t prescan_loop -000000012003c6b0 T preserve_data -000000012003c790 T preserve_initializer -0000000120042420 T preserve_momentary -0000000120194ca0 t preserve_registers -0000000120061f10 T preserve_rtl_expr_result -000000012006f0c0 T preserve_subexpressions_p -000000012005a270 T preserve_temp_slots -00000001200b4b20 T prev_active_insn -00000001201fec94 g prev_file_entry_num.1 -00000001201ff3a0 s prev_insn -00000001200b4bc0 T prev_label -00000001201fecd8 g prev_lineno.1 -00000001200b4a00 T prev_nonnote_insn -00000001200b4a70 T prev_real_insn -00000001200b4970 T previous_insn -00000001201ff600 s previous_num_undos -00000001201ff280 s primary_filename -00000001201e7428 d print_char_table -00000001201fec28 G print_error_function -00000001200162f0 T print_lang_decl -0000000120016310 T print_lang_identifier -0000000120006e90 T print_lang_statistics -0000000120016300 T print_lang_type -00000001200458e0 T print_node -0000000120045560 T print_node_brief -000000012003cde0 T print_obstack_name -0000000120045470 T print_obstack_statistics -0000000120195a90 T print_operand -0000000120196430 T print_operand_address -00000001200ad020 T print_rtl -00000001200ac610 t print_rtx -0000000120038150 t print_switch_values -0000000120038570 T print_time -0000000120162160 t priority -00000001200240c0 T process_init_element -0000000120105c10 t product_cheap_p -00000001201fffec S profile_block_flag -00000001201fef60 S profile_flag -00000001202009b0 S profile_label_no -00000001201ffec0 S progname -00000001201ff0a0 s prologue -00000001201ffb98 s prologue_marked -0000000120095b10 T promote_mode -000000012010ff70 t propagate_block -0000000120070290 T protect_from_queue -00000001201377f0 t prune_preferences -00000001202006f0 S ptr_mode -00000001201ffcd0 S ptr_type_node -00000001201ffbd0 s ptrconsts -00000001201ffc58 S ptrdiff_type_node -00000001200434e0 T purpose_member -0000000120082740 T push_block -0000000120017a20 T push_c_function_context -0000000120038d60 T push_float_handler -0000000120061c70 T push_function_context -00000001200593c0 T push_function_context_to -0000000120022dd0 T push_init_level -000000012002ec40 T push_iterator_stack -0000000120016830 T push_label_level -000000012003d050 T push_momentary -000000012003c210 T push_obstacks -000000012003c360 T push_obstacks_nochange -00000001201736d0 T push_operand -0000000120016f70 T push_parm_decl -000000012013a430 t push_reload -0000000120145fe0 t push_secondary_reload -00000001200620e0 T push_temp_slots -00000001200b6220 T push_to_sequence -00000001200b62f0 T push_topmost_sequence -00000001200697b0 T pushcase -0000000120069ba0 T pushcase_range -000000012000d580 T pushdecl -00000001200169a0 T pushdecl_top_level -00000001200165f0 T pushlevel -00000001200168c0 T pushtag -0000000120048eb0 T put_pending_sizes -000000012005a830 t put_reg_into_stack -000000012005a5a0 T put_var_into_stack -00000001201ffba0 s pwd.0 -00000001201ff990 s q_ptr -00000001201ff994 s q_size -00000001201ff718 s qty_alternate_class -00000001201ff6f0 s qty_birth -00000001201ff728 s qty_changes_size -00000001201331b0 t qty_compare -0000000120135d80 t qty_compare_1 -00000001201ff388 s qty_comparison_code -00000001201ff390 s qty_comparison_const -00000001201ff398 s qty_comparison_qty -00000001201ff378 s qty_const -00000001201ff380 s qty_const_insn -00000001201ff6f8 s qty_death -00000001201ff360 s qty_first_reg -00000001201ff730 s qty_first_reg -00000001201ff368 s qty_last_reg -00000001201ff6e8 s qty_min_class -00000001201ff370 s qty_mode -00000001201ff708 s qty_mode -00000001201ff710 s qty_n_calls_crossed -00000001201ff6e0 s qty_n_refs -00000001201ff6c0 s qty_phys_copy_sugg -00000001201ff6d0 s qty_phys_num_copy_sugg -00000001201ff6d8 s qty_phys_num_sugg -00000001201ff6b8 s qty_phys_reg -00000001201ff6c8 s qty_phys_sugg -00000001201ff720 s qty_scratch_rtx -00000001201ff700 s qty_size -0000000120133350 t qty_sugg_compare -0000000120135b10 t qty_sugg_compare_1 -0000000120082bb0 t queued_subexp_p -00000001201fef70 S quiet_flag -0000000120058ff0 t range_test -00000001201690b0 t rank_for_schedule -0000000120205f6e b rbit -00000001201eb0d8 d rcs_id.0 -00000001201ff234 s re -0000000120164430 T read_dependence -00000001200ab100 T read_rtx -00000001200aaf00 T read_skip_spaces -000000012000bd20 t readescape -00000001200a8640 T readonly_data_section -000000012001f260 T readonly_warning -0000000120043160 T real_onep -00000001201978b0 T real_or_0_operand -0000000120197080 T real_power_of_2_operand -00000001200432e0 T real_twop -0000000120042870 T real_value_from_int_cst -0000000120056130 T real_value_truncate -0000000120043080 T real_zerop -0000000120043460 T really_constant_p -00000001200328e0 T really_sorry -00000001200229e0 T really_start_incremental_init -00000001201ff230 s rebit -000000012017a390 T recog -00000001201743e0 T recog_1 -0000000120174bf0 T recog_2 -0000000120175520 T recog_3 -0000000120175ca0 T recog_4 -0000000120176f90 T recog_5 -00000001201792d0 T recog_6 -0000000120215768 B recog_dup_loc -00000001202009d8 S recog_dup_num -00000001201260e0 t recog_for_combine -0000000120172e50 T recog_memoized -0000000120215718 B recog_operand -0000000120215778 B recog_operand_loc -0000000120006f00 T recognize_objc_keyword -000000012012f5f0 t record_address_regs -0000000120103860 t record_biv -0000000120138d10 t record_conflicts -00000001200aa180 t record_constant -00000001200a5640 t record_constant_1 -00000001200aa490 t record_constant_rtx -00000001201295b0 t record_dead_and_set_regs -000000012012cf60 t record_dead_and_set_regs_1 -00000001201ff670 s record_dead_insn -00000001200fdd00 T record_excess_regs -000000012002b190 T record_function_format -0000000120103a90 t record_giv -0000000120107a90 t record_initial -00000001200f1b10 t record_jump_cond -000000012013a2d0 t record_one_conflict -000000012012e7c0 t record_reg_classes -00000001201290e0 t record_value_for_reg -00000001201ff410 s recorded_label_ref -000000012000dfc0 t redeclaration_error_message -00000001200e4ec0 T redirect_exp -00000001200e7000 T redirect_jump -00000001200e5150 t redirect_tablejump -0000000120157570 t redundant_insn -0000000120143e80 T refers_to_mem_for_reload_p -00000001200e9f90 t refers_to_mem_p -00000001200e99e0 t refers_to_p -0000000120143900 T refers_to_regno_for_reload_p -00000001200adaa0 T refers_to_regno_p -00000001201ea138 D reg_alloc_order -00000001201ff790 s reg_allocno -0000000120130460 T reg_alternate_class -00000001202008b8 S reg_basic_block -000000012012ab60 t reg_bitfield_target_p -0000000120200870 S reg_biv_class -00000001202008d0 S reg_changes_size -0000000120213bb4 B reg_class_contents -00000001201ea6e8 d reg_class_names -00000001201ea7c8 d reg_class_names.0 -00000001201ea068 d reg_class_names.1 -0000000120213c2c B reg_class_size -00000001202137e8 B reg_class_subclasses -0000000120130720 T reg_class_subset_p -0000000120213af0 B reg_class_subunion -0000000120213c48 B reg_class_superclasses -00000001202138ac B reg_class_superunion -000000012012fde0 T reg_classes_intersect_p -000000012010d990 t reg_dead_after_loop -0000000120129fa0 t reg_dead_at_p -000000012012d120 t reg_dead_at_p_1 -00000001201ff67c s reg_dead_endregno -00000001201ff680 s reg_dead_flag -00000001201ff678 s reg_dead_regno -00000001201ea720 d reg_eliminate -0000000120200988 S reg_equiv_address -0000000120200990 S reg_equiv_constant -00000001201ff898 s reg_equiv_init -0000000120200970 S reg_equiv_mem -0000000120200968 S reg_equiv_memory_loc -0000000120173e80 T reg_fits_class_p -00000001201ff880 s reg_has_output_reload -00000001200fdf70 t reg_in_basic_block_p -00000001201ff3d0 s reg_in_table -0000000120133f10 t reg_is_born -00000001201ff888 s reg_is_output_reload -0000000120135f50 t reg_is_set -0000000120200828 S reg_iv_info -0000000120200838 S reg_iv_type -00000001201ffa48 s reg_known_equiv_p -00000001201ffa40 s reg_known_value -00000001201ffa50 s reg_known_value_size -00000001201ff5c0 s reg_last_death -00000001201ff878 s reg_last_reload_reg -00000001201ff5c8 s reg_last_set -00000001201ff620 s reg_last_set_invalid -00000001201ff610 s reg_last_set_label -00000001201ff650 s reg_last_set_mode -00000001201ff658 s reg_last_set_nonzero_bits -00000001201ff660 s reg_last_set_sign_bit_copies -00000001201ff618 s reg_last_set_table_tick -00000001201ff608 s reg_last_set_value -00000001201ff9b8 s reg_last_sets -00000001201ff9b0 s reg_last_uses -0000000120200888 S reg_live_length -00000001201ff2c8 s reg_map -00000001201ff890 s reg_max_ref_width -00000001201ff7b0 s reg_may_share -0000000120133d40 t reg_meets_class_p -00000001200ad0f0 T reg_mentioned_p -0000000120200898 S reg_n_calls_crossed -0000000120200890 S reg_n_deaths -00000001202008c0 S reg_n_refs -0000000120200918 S reg_n_sets -00000001201ea270 D reg_names -00000001201ff3b8 s reg_next_eqv -00000001201ff738 s reg_next_in_qty -00000001201ff518 s reg_next_use -00000001201ff630 s reg_nonzero_bits -00000001201e9ae0 D reg_note_name -00000001201ff748 s reg_offset -00000001201974e0 T reg_or_0_operand -0000000120197820 T reg_or_bbx_mask_operand -00000001201ff570 s reg_order -0000000120143cd0 T reg_overlap_mentioned_for_reload_p -00000001200ade60 T reg_overlap_mentioned_p -00000001201ff9c0 s reg_pending_sets -00000001201ff9c8 s reg_pending_sets_all -0000000120130430 T reg_preferred_class -00000001201ff3c0 s reg_prev_eqv -00000001201ff3b0 s reg_qty -00000001201ff740 s reg_qty -0000000120213970 B reg_raw_mode -00000001200aff00 T reg_referenced_between_p -00000001200ad320 T reg_referenced_p -00000001202076d0 b reg_reloaded_contents -00000001202077d0 b reg_reloaded_insn -0000000120200940 S reg_renumber -00000001202091b0 b reg_restore_code -00000001201fec48 G reg_rtx_no -0000000120208eb0 b reg_save_code -00000001201304c0 T reg_scan -000000012012f920 t reg_scan_mark_refs -00000001200afff0 T reg_set_between_p -00000001201ff1d0 s reg_set_flag -00000001200b0600 T reg_set_last -00000001200b0d20 t reg_set_last_1 -00000001201ff1e0 s reg_set_last_first_regno -00000001201ff1e4 s reg_set_last_last_regno -00000001201ff1d4 s reg_set_last_unknown -00000001201ff1d8 s reg_set_last_value -00000001200b0140 T reg_set_p -00000001200b0cc0 t reg_set_p_1 -00000001201ff1c8 s reg_set_reg -00000001201ff640 s reg_sign_bit_copies -00000001201ff3c8 s reg_tick -00000001200afdf0 T reg_used_between_p -00000001201ff568 s reg_where_born -00000001201ff560 s reg_where_dead -000000012012db20 T regclass -00000001201304a0 T regclass_init -00000001201731f0 T register_operand -0000000120112800 T regno_clobbered_at_setjmp -0000000120145180 T regno_clobbered_p -00000001202008f0 S regno_first_uid -00000001202008f8 S regno_last_note_uid -0000000120200908 S regno_last_uid -0000000120200738 S regno_pointer_flag -00000001202006f8 S regno_pointer_flag_length -0000000120200760 S regno_reg_rtx -00000001202088b0 b regno_save_mem -00000001202085b0 b regno_save_mode -0000000120112780 T regno_uninitialized -000000012016ac40 t regno_use_in -00000001201ff580 s regs_change_size -00000001202156d8 B regs_ever_live -0000000120207f50 b regs_explicitly_used -00000001201ff3e0 s regs_invalidated_by_call -00000001201ff578 s regs_live -00000001201ff750 s regs_live -00000001201ff758 s regs_live_at -00000001202008e0 S regs_live_at_setjmp -00000001202008a8 S regs_may_share -00000001201ff828 s regs_set -00000001201ff7f0 s regs_someone_prefers -00000001201ff800 s regs_used_so_far -00000001202008a0 S regset_bytes -00000001202008e8 S regset_size -00000001200e8e90 t rehash_using_reg -000000012000b8f0 T reinit_parse_for_function -000000012015ba10 t relax_delay_slots -0000000120147750 T reload -000000012014db60 t reload_as_needed -00000001202009d0 S reload_completed -0000000120214818 B reload_earlyclobbers -0000000120200960 S reload_first_uid -0000000120200980 S reload_firstobj -0000000120214200 B reload_in -0000000120215580 B reload_in_optab -00000001201ff870 S reload_in_progress -0000000120214e08 B reload_in_reg -0000000120214868 B reload_inc -00000001202153a0 B reload_inheritance_insn -0000000120214fe8 B reload_inherited -00000001202143e0 B reload_inmode -0000000120208290 b reload_mode -000000012020095c S reload_n_operands -00000001202147dc B reload_nocombine -0000000120208380 b reload_nregs -00000001202155f8 B reload_obstack -00000001202144d0 B reload_opnum -00000001202146b0 B reload_optional -0000000120215650 B reload_order -0000000120213e40 B reload_out -0000000120215024 B reload_out_optab -0000000120214020 B reload_outmode -00000001202151c0 B reload_override_in -0000000120214b38 B reload_reg_class -0000000120152d80 t reload_reg_class_lower -00000001201537f0 t reload_reg_free_before_p -00000001201531c0 t reload_reg_free_p -0000000120153c50 t reload_reg_reaches_end_p -0000000120214c28 B reload_reg_rtx -00000001201ff900 s reload_reg_used -00000001201ff928 s reload_reg_used_at_all -00000001201ff930 s reload_reg_used_for_inherit -0000000120208510 b reload_reg_used_in_input -0000000120208470 b reload_reg_used_in_input_addr -00000001201ff918 s reload_reg_used_in_insn -00000001201ff908 s reload_reg_used_in_op_addr -00000001201ff910 s reload_reg_used_in_op_addr_reload -00000001201ff920 s reload_reg_used_in_other_addr -0000000120208560 b reload_reg_used_in_output -00000001202084c0 b reload_reg_used_in_output_addr -0000000120214a48 B reload_secondary_in_icode -00000001202146ec B reload_secondary_in_reload -0000000120214958 B reload_secondary_out_icode -0000000120213d50 B reload_secondary_out_reload -0000000120214110 B reload_secondary_p -00000001202150d0 B reload_spill_index -00000001202145c0 B reload_when_needed -00000001201ea6a0 d reload_when_needed_name -000000012014e650 t reloads_conflict -00000001201979e0 T relop -0000000120197ac0 T relop_no_unsigned -000000012010cb90 t remap_split_bivs -000000012006f3d0 T remember_end_note -000000012000b820 T remember_protocol_qualifiers -000000012012be00 T remove_death -00000001200f5250 t remove_from_table -00000001200e8db0 t remove_invalid_refs -00000001200b0b00 T remove_note -000000012005f400 T reorder_blocks -00000001200b4cd0 T reorder_insns -00000001200b4d70 T reorder_insns_with_line_notes -00000001201ff97c s reorg_pass_number -00000001201581f0 t reorg_redirect_jump -00000001200af410 T replace_regs -00000001201ff840 s replace_reloads -00000001200b0b70 T replace_rtx -0000000120207090 b replacements -00000001200389c0 T report_error_function -00000001200617b0 T reposition_prologue_and_epilogue_notes -0000000120024f80 T require_complete_type -00000001201fee8c s require_constant_elements -00000001201fee88 s require_constant_value -0000000120134d50 t requires_inout -00000001200b27e0 T reset_used_flags -0000000120032ef0 T rest_of_compilation -0000000120032a40 T rest_of_decl_compilation -00000001200390c0 T rest_of_type_compilation -00000001200df230 t restore_constants -00000001200b4580 T restore_emit_status -0000000120082170 T restore_expr_status -0000000120200250 S restore_machine_status -0000000120155ac0 t restore_referenced_regs -00000001200b31a0 T restore_reg_data -00000001200b32b0 t restore_reg_data_1 -000000012006e3a0 T restore_stmt_status -00000001200495c0 T restore_storage_status -000000012003c060 T restore_tree_status -00000001200a9670 T restore_varasm_status -000000012018abe0 T result_ready_cost -00000001200425d0 T resume_momentary -0000000120042190 T resume_temporary_allocation -0000000120139db0 T retry_global_alloc -00000001202001a0 S return_label -00000001200b4280 T reverse_comparison -00000001200e3c20 T reverse_condition -00000001201ffb74 s reversep.1 -0000000120128fd0 t reversible_comparison_p -000000012020b920 B ridpointers -00000001201fec5c g rlast -00000001201ff22e s rmbit -00000001201ff22c s rmsk -00000001201fec58 G rndprc -00000001200cecf0 t root_type -0000000120200308 S rotl_optab -0000000120200600 S rotr_optab -0000000120095c80 T round_push -000000012005f1b0 t round_trampoline_addr -00000001200490d0 T round_up -0000000120056050 T rrotate_double -0000000120055ea0 T rshift_double -00000001201feef8 S rtl_dump -00000001201feefc S rtl_dump_and_exit -00000001201fffe0 S rtl_dump_file -0000000120200190 S rtl_expr_chain -00000001200422d0 T rtl_in_current_obstack -00000001200422f0 T rtl_in_saveable_obstack -00000001202000e8 S rtl_obstack -00000001200aa6a0 T rtvec_alloc -00000001200af9c0 T rtx_addr_can_trap_p -00000001200afad0 T rtx_addr_varies_p -00000001200ac4c0 T rtx_alloc -00000001201e99f8 D rtx_class -00000001200e7360 T rtx_cost -00000001200fe8c0 t rtx_equal_for_loop_p -00000001201604d0 t rtx_equal_for_memref_p -00000001200e6340 T rtx_equal_for_thread_p -00000001202006ec S rtx_equal_function_value_matters -00000001200ae090 T rtx_equal_p -00000001201e9658 D rtx_format -00000001200ac5a0 T rtx_free -0000000120213340 B rtx_length -00000001201e9000 D rtx_name -00000001200e5350 T rtx_renumbered_equal_p -00000001200960d0 T rtx_to_tree_code -00000001200af710 T rtx_unstable_p -00000001200af860 T rtx_varies_p -00000001201ff228 s rw -00000001201458d0 T safe_from_earlyclobber -0000000120074f60 t safe_from_p -00000001200e93d0 t safe_hash -00000001201ff328 s same_regs -00000001201fff58 S save_argc -00000001201fff50 S save_argv -0000000120155370 T save_call_clobbered_regs -00000001200db2e0 t save_constants -00000001200b44e0 T save_emit_status -0000000120043d00 T save_expr -0000000120200260 S save_expr_regs -00000001200820a0 T save_expr_status -00000001201feef0 s save_exprs -00000001200da5d0 T save_for_inline_copying -00000001200db060 T save_for_inline_nocopy -0000000120200278 S save_machine_status -0000000120083fb0 t save_noncopied_parts -0000000120209d78 b save_regs -000000012006e2e0 T save_stmt_status -00000001200495b0 T save_storage_status -000000012003bdd0 T save_tree_status -00000001200a9620 T save_varasm_status -00000001200421d0 T saveable_allocation -00000001202000f8 S saveable_obstack -0000000120043900 T saveable_tree_cons -000000012003ccf0 T savealloc -00000001201ff100 s saveregs_value -00000001201ff1b0 s sawclose -00000001201ffb60 s sb_high -00000001201ffb68 s sb_low -00000001201ffb58 s sb_name -00000001201ffad8 s sbb_head -00000001201ffae0 s sbb_label_num -00000001201fecc0 g sbb_tail -00000001201e7768 d scan_char_table -00000001200fc970 t scan_loop -000000012014d5a0 t scan_paradoxical_subregs -00000001201fef24 S sched2_dump -00000001201fff80 S sched2_dump_file -00000001201fff78 S sched2_time -00000001201689d0 t sched_analyze -0000000120165080 t sched_analyze_1 -0000000120162450 t sched_analyze_2 -000000012016a620 t sched_analyze_insn -00000001201ffaa0 s sched_before_next_call -00000001201fef18 S sched_dump -00000001201fff30 S sched_dump_file -0000000120168d80 t sched_note_set -00000001201ff9a8 s sched_reg_live_length -00000001201ff9a0 s sched_reg_n_calls_crossed -00000001201ff998 s sched_reg_n_deaths -00000001201fffa8 S sched_time -0000000120165a80 t schedule_block -0000000120169250 t schedule_insn -00000001201631a0 T schedule_insns -0000000120169560 t schedule_select -000000012016a480 t schedule_unit -0000000120200938 S scratch_block -00000001201ff760 s scratch_index -0000000120200948 S scratch_list -0000000120200950 S scratch_list_length -0000000120173270 T scratch_operand -00000001200a8380 T sdata_section -00000001201fec80 G sdb_begin_function_line -00000001202064f8 b sdb_dims -00000001201ff24c s sdb_n_dims -00000001201fec84 g sdb_type_size -00000001200c4ef0 T sdbout_begin_block -00000001200c5510 T sdbout_begin_function -00000001200c6170 t sdbout_block -00000001200c52e0 T sdbout_end_block -00000001200c5a10 T sdbout_end_epilogue -00000001200c5770 T sdbout_end_function -00000001200c6070 T sdbout_init -00000001200c5c90 T sdbout_label -00000001200c6150 T sdbout_mark_begin_function -00000001200c2ea0 t sdbout_one_type -00000001200c66d0 t sdbout_parms -00000001200c2e50 t sdbout_queue_anonymous_type -00000001200c7cb0 t sdbout_reg_parms -00000001200c0a30 T sdbout_symbol -00000001200c25d0 T sdbout_toplevel_data -00000001200c6250 t sdbout_type -00000001200c6080 T sdbout_types -00000001202006a0 S sdiv_optab -00000001201ff130 s sdiv_pow2_cheap -0000000120200610 S sdivmod_optab -00000001201ffbb4 s section -000000012019ced0 t seg_defsym -000000012019d0e0 t seg_refsym -0000000120019cb0 T self_promoting_args_p -0000000120019d90 t self_promoting_type_p -00000001201ff220 s sequence_element_free_list -0000000120205f28 b sequence_result -00000001201ff1f8 S sequence_rtl_expr -0000000120200728 S sequence_stack -00000001201ffb70 s sequencep.0 -00000001201ff010 S set_alignment -0000000120016810 T set_block -00000001200e0010 t set_block_abstract_flags -00000001200dfec0 t set_block_origin_self -00000001200df9e0 T set_decl_abstract_flags -00000001200dffa0 t set_decl_origin_self -0000000120038d10 T set_float_handler -0000000120042790 T set_identifier_size -0000000120025950 T set_init_index -0000000120025b30 T set_init_label -000000012014b7f0 t set_label_offsets -00000001200b4870 T set_last_insn -00000001200b4490 T set_new_first_and_last_insn -00000001200b44b0 T set_new_first_and_last_label_num -00000001200e9ba0 t set_nonvarying_address_components -000000012012bf70 t set_nonzero_bits_and_sign_copies -0000000120139550 t set_preference -0000000120156150 t set_reg_live -0000000120037fe0 T set_target_switch -000000012000bba0 T set_yydebug -0000000120213170 B setcc_gen_code -0000000120063180 T setjmp_args_warning -0000000120063220 T setjmp_protect -00000001200632e0 T setjmp_protect_args -00000001200e6eb0 T sets_cc0_p -00000001201143f0 t setup_incoming_promotions -0000000120154f30 T setup_save_areas -0000000120016d60 T shadow_label -0000000120016ed0 T shadow_tag -0000000120010760 T shadow_tag_warned -00000001201fedb8 s shadowed_labels -0000000120203848 b shift_cost -00000001202038c8 b shiftadd_cost -0000000120203948 b shiftsub_cost -00000001201ffd38 S short_integer_type_node -00000001201ffd70 S short_unsigned_type_node -00000001201fffd8 S shorten_branch_time -000000012016c150 T shorten_branches -000000012002b730 T shorten_compare -00000001200aedf0 T side_effects_p -00000001200a0bc0 T sign_expand_binop -00000001201ffdf0 S signed_char_type_node -00000001200e6b20 T signed_condition -000000012020ada0 b signed_mode_to_code_map -00000001200251f0 T signed_or_unsigned_type -00000001200250e0 T signed_type -00000001201ffcc0 S signed_wchar_type_node -00000001200bd3a0 T significand_size -0000000120040f40 T simple_cst_equal -0000000120044bb0 T simple_cst_list_equal -00000001200e6c70 T simplejump_p -0000000120123360 t simplify_and_const_int -00000001200eaff0 T simplify_binary_operation -0000000120126f90 t simplify_comparison -0000000120104be0 t simplify_giv_expr -000000012011b950 t simplify_if_then_else -000000012011d980 t simplify_logical -00000001200ecbf0 t simplify_plus_minus -00000001200ed5c0 T simplify_relational_operation -0000000120119230 t simplify_rtx -000000012011cb90 t simplify_set -0000000120124b80 t simplify_shift_const -00000001200a96c0 T simplify_subtraction -00000001200ee0b0 T simplify_ternary_operation -00000001200ea450 T simplify_unary_operation -00000001202004e0 S sin_optab -00000001200b0230 T single_set -00000001201fec40 g size.1 -00000001201fec44 g size.2 -00000001201fec14 g size.3 -00000001200562a0 T size_binop -00000001202006e0 S size_directive_output -0000000120043950 T size_in_bytes -000000012004b850 T size_int -0000000120200138 S size_one_node -00000001202031e0 b size_table.0 -0000000120200130 S size_zero_node -0000000120200140 S sizetype -00000001200fe130 t skip_consec_insns -000000012000bbc0 t skip_white_space -00000001201ff43c s skipped_writes_memory -0000000120200410 S smax_optab -0000000120200558 S smin_optab -00000001202004b0 S smod_optab -00000001201ff134 s smod_pow2_cheap -00000001202004a8 S smul_highpart_optab -0000000120200660 S smul_optab -0000000120200540 S smul_widen_optab -0000000120032770 T sorry -00000001201fef4c S sorrycount -00000001201fec7c g source_label_number -00000001201e9d60 D spaces -00000001201fee08 s spelling -00000001201fee10 s spelling_base -00000001201fee18 s spelling_size -000000012014ada0 t spill_failure -000000012014d130 t spill_hard_reg -00000001201ff8c8 s spill_indirect_levels -0000000120207dd0 b spill_reg_order -00000001202079d0 b spill_reg_rtx -0000000120207bd0 b spill_reg_store -0000000120207e50 b spill_regs -0000000120207f90 b spill_stack_slot -0000000120208190 b spill_stack_slot_width -000000012017ab80 T split_1 -000000012016f4e0 T split_double -0000000120169db0 t split_hard_reg_notes -000000012017bb60 T split_insns -0000000120056580 t split_tree -00000001201ff4c8 s splittable_regs -00000001201ff4d0 s splittable_regs_updates -0000000120205fd0 b sqrndbit -0000000120200550 S sqrt_optab -00000001200e31d0 T squeeze_notes -00000001200957d0 T stabilize -000000012003f560 T stabilize_reference -000000012003fa50 T stabilize_reference_1 -00000001202002f0 S stack_arg_under_construction -00000001202002b8 S stack_block_stack -00000001202001f4 S stack_depth -0000000120200748 S stack_pointer_rtx -00000001201fef34 S stack_reg_dump -00000001201fff00 S stack_reg_dump_file -00000001201ffedc S stack_reg_time -0000000120200238 S stack_slot_list -00000001201ff118 s stack_usage_map -00000001201e8968 D standard_tree_code_length -00000001201e8b60 D standard_tree_code_name -00000001201e8578 D standard_tree_code_type -0000000120010a80 T start_decl -00000001200177b0 T start_enum -0000000120014be0 T start_function -0000000120042770 T start_identifier_warnings -0000000120022750 T start_init -0000000120209508 b start_of_epilogue_needs -00000001200b60d0 T start_sequence -00000001200b6170 T start_sequence_for_rtl_expr -00000001200174a0 T start_struct -00000001201fed30 s state.0 -0000000120200710 S static_chain_incoming_rtx -0000000120200778 S static_chain_rtx -00000001201ffe28 S static_ctors -00000001201ffc68 S static_dtors -00000001201ff860 s static_reload_reg_p -0000000120043bf0 T staticp -000000012015feb0 t steal_delay_list_from_fallthrough -000000012015f680 t steal_delay_list_from_target -00000001201fecf0 s stmt_count -00000001201ff088 s stmt_expr_depth -000000012020bee0 B stmt_obstack -000000012008a440 T store_bit_field -0000000120082f80 t store_constructor -00000001200733f0 T store_expr -0000000120074000 t store_field -000000012008ab00 t store_fixed_bit_field -0000000120025700 T store_init_value -00000001200891e0 t store_one_arg -00000001200152a0 T store_parm_decls -000000012008afe0 t store_split_bit_field -0000000120101e80 t strength_reduce -000000012013c930 T strict_memory_address_p -0000000120084b90 t string_constant -00000001201ffe78 S string_ftype_ptr_ptr -00000001200d8790 t string_length_attribute -00000001201ffc28 S string_type_node -00000001201cf0c0 r strings_107.2 -00000001201cf110 r strings_108.3 -00000001201cf138 r strings_114.4 -00000001201cf158 r strings_117.5 -00000001201cf178 r strings_120.6 -00000001201cf188 r strings_121.7 -00000001201cf1c8 r strings_126.8 -00000001201cf1d8 r strings_127.9 -00000001201cf218 r strings_131.10 -00000001201cf228 r strings_132.11 -00000001201cf268 r strings_147.12 -00000001201cf280 r strings_149.13 -00000001201cf298 r strings_151.14 -00000001201cf2b0 r strings_154.15 -00000001201cf2d0 r strings_156.16 -00000001201cf2f0 r strings_158.17 -00000001201cf310 r strings_169.18 -00000001201cf320 r strings_228.19 -00000001201cf340 r strings_233.20 -00000001201cf358 r strings_245.21 -00000001201cf368 r strings_247.22 -00000001201cf378 r strings_249.23 -00000001201cf388 r strings_252.24 -00000001201cf398 r strings_261.25 -00000001201cf3a8 r strings_262.26 -00000001201cf3b8 r strings_264.27 -00000001201cf3c8 r strings_281.28 -00000001201cf080 r strings_58.0 -00000001201cf0a0 r strings_61.1 -0000000120058b80 t strip_compound_expr -0000000120038e50 T strip_off_ending -00000001202006a8 S strlen_optab -00000001202007a8 S struct_value_incoming_rtx -0000000120200790 S struct_value_rtx -0000000120113120 t stupid_find_reg -00000001201128c0 T stupid_life_analysis -0000000120113470 t stupid_mark_refs -0000000120113aa0 t stupid_reg_compare -0000000120200478 S sub_optab -00000001201ff238 s subflg -000000012020ba00 B sublevel_ixpansions -00000001200b4110 T subreg_lowpart_p -00000001200b3fc0 T subreg_realpart_p -00000001200d7a80 t subscript_data_attribute -00000001201188c0 t subst -00000001200de850 t subst_constants -0000000120142000 t subst_indexed_address -00000001201ff5d8 s subst_insn -00000001201ff5e8 s subst_low_cuid -00000001201ff5e0 s subst_prev_insn -0000000120141ec0 t subst_reg_equivs -00000001201ff868 s subst_reg_equivs_changed -0000000120143600 T subst_reloads -000000012003e4d0 T substitute_in_expr -000000012003e800 T substitute_in_type -00000001200425a0 T suspend_momentary -00000001200e69c0 T swap_condition -000000012019b560 T sym_lookup -0000000120197460 T symbolic_address_p -0000000120198ae0 T symbolic_operand -00000001201fff18 S symout_time -000000012008d240 t synth_mult -00000001201ff008 s table -0000000120206510 b table -00000001201e8fe0 d table.0 -0000000120067350 t tail_recursion_args -0000000120200200 S tail_recursion_label -0000000120200228 S tail_recursion_reentry -00000001202006e8 S target_flags -00000001201ff960 s target_hash_table -0000000120056170 T target_isinf -00000001200561d0 T target_isnan -0000000120056260 T target_negative -00000001201e8558 D target_options -00000001201e8388 D target_switches -00000001202002e8 S target_temp_slot_level -00000001200a8300 T tdesc_section -0000000120200128 S temp_decl_firstobj -00000001202011a8 b temp_decl_obstack -00000001202066a8 b temp_obstack -0000000120200174 S temp_slot_level -0000000120200180 S temp_slots -00000001200438b0 T temp_tree_cons -0000000120042110 T temporary_allocation -0000000120200120 S temporary_firstobj -000000012020be48 B temporary_obstack -00000001200e3e20 t tension_vector_labels -00000001200a84f0 T text_section -00000001201e79e8 d tfaff -00000001201ff604 s this_basic_block -00000001201ff078 s this_function_bytecode -00000001201ff080 s this_function_calldesc -00000001201ff070 s this_function_callinfo -00000001201ff068 s this_function_decl -00000001201ff3a8 s this_insn -00000001201ff768 s this_insn -00000001201ff850 s this_insn -00000001201ff858 s this_insn_is_asm -00000001201ff764 s this_insn_number -00000001201ffb00 s this_is_asm_operands -00000001200e58c0 T thread_jumps -00000001200613a0 T thread_prologue_and_epilogue_insns -00000001201eb3a5 d tm_rcs_id -00000001200be4f0 t toe113 -00000001200be8d0 t toe24 -00000001200b93d0 t toe53 -00000001200be680 t toe64 -00000001201ffbf8 S token_buffer -00000001202000b0 S toplev_inline_obstacks -00000001201ff5a0 s total_attempts -00000001201ff5a8 s total_extras -00000001201ff5a4 s total_merges -00000001201ff5ac s total_successes -0000000120200a20 S trampoline -000000012005ef80 T trampoline_address -00000001201ff038 s trampoline_list -0000000120145820 T transfer_replacements -0000000120200098 S tree_code_length -0000000120200100 S tree_code_name -00000001202000d8 S tree_code_type -000000012003e370 T tree_cons -0000000120040ed0 T tree_int_cst_equal -0000000120044ac0 T tree_int_cst_lt -0000000120044b70 T tree_int_cst_sgn -0000000120043670 T tree_last -000000012020bd58 B tree_node_counts -00000001201e8f50 D tree_node_kind_names -000000012020bea0 B tree_node_sizes -0000000120164460 T true_dependence -00000001200e7190 T true_regnum -0000000120200570 S truncdfsf2_libfunc -0000000120200450 S trunctfdf2_libfunc -0000000120200628 S trunctfsf2_libfunc -0000000120200640 S truncxfdf2_libfunc -0000000120200390 S truncxfsf2_libfunc -000000012002c1a0 T truthvalue_conversion -0000000120114730 t try_combine -00000001200de6e0 T try_constants -000000012015d8b0 t try_merge_delay_insns -00000001200b2940 T try_split -0000000120200300 S tst_optab -000000012004bce0 t twoval_comparison_p -00000001201fed34 s type.1 -00000001200c9400 t type_attribute -000000012002b270 T type_for_mode -000000012002d3e0 T type_for_size -0000000120044950 T type_hash_add -0000000120040880 T type_hash_canon -0000000120044780 T type_hash_list -00000001200447b0 T type_hash_lookup -000000012020bb80 B type_hash_table -00000001200cede0 t type_is_fundamental -0000000120044a00 T type_list_equal -0000000120019ab0 t type_lists_compatible_p -0000000120045220 T type_precision -00000001201ebdf8 D typecode_mode -0000000120200398 S ucmp_optab -0000000120200508 S udiv_optab -0000000120200620 S udivmod_optab -00000001201ff500 s uid_block_number -00000001201ff400 s uid_cuid -00000001201ff5b0 s uid_cuid -0000000120200850 S uid_loop_num -0000000120200860 S uid_luid -00000001201ff550 s uid_suid -00000001201ff970 s uid_to_ruid -00000001201ff508 s uid_volatile -0000000120200588 S umax_optab -0000000120200590 S umin_optab -00000001202005b8 S umod_optab -0000000120200578 S umul_highpart_optab -00000001202003c0 S umul_widen_optab -000000012001f100 t unary_complex_lvalue -00000001201fed18 s undeclared_variable_notice -0000000120117840 t undo_all -0000000120206700 b undobuf -00000001201ff950 s unfilled_firstobj -00000001202094b0 b unfilled_slots_obstack -0000000120062fe0 T uninitialized_vars_warning -0000000120209770 b unit_last_insn -00000001202097dc b unit_n_insns -00000001202097b8 b unit_tick -00000001201ff49c s unknown_address_altered -00000001201ff248 s unnamed_struct_number -000000012006f630 T unroll_block_trees -0000000120107ce0 T unroll_loop -00000001200b4660 T unshare_all_rtl -00000001201ffce0 S unsigned_char_type_node -00000001200e6a90 T unsigned_condition -000000012002cea0 T unsigned_conversion_warning -00000001201ffd00 S unsigned_intDI_type_node -00000001201ffe48 S unsigned_intHI_type_node -00000001201ffe68 S unsigned_intQI_type_node -00000001201ffcf0 S unsigned_intSI_type_node -000000012020ae18 b unsigned_mode_to_code_map -0000000120024fd0 T unsigned_type -00000001201ffd20 S unsigned_type_node -00000001201ffc70 S unsigned_wchar_type_node -00000001201ffa88 s unused_expr_list -00000001201ffa80 s unused_insn_list -0000000120158050 t update_block -00000001201317d0 t update_equiv_regs -0000000120167ad0 t update_flow_info -00000001201043c0 t update_giv_derive -0000000120159d50 t update_live_status -0000000120133de0 t update_qty_class -0000000120106f50 t update_reg_last_use -000000012012ce30 t update_table_tick -0000000120061cd0 T update_temp_slot_address -00000001201ff0d8 s use_cost_table -0000000120129d70 t use_crosses_set_p -00000001201fef40 S use_gnu_debug_info_extensions -00000001200824b0 T use_reg -0000000120082550 T use_regs -00000001200fc0a0 t use_related_value -0000000120062b70 T use_variable -0000000120062c40 T use_variable_after -000000012010eb40 t uses_reg_or_mem -0000000120039230 t v_message_with_decl -0000000120025ed0 t valid_compound_expr_initializer -0000000120103530 t valid_initial_value_p -00000001200442c0 T valid_machine_attribute -0000000120172eb0 T validate_change -00000001201351a0 t validate_equiv_mem_from_store -0000000120173020 T validate_replace_rtx -0000000120170180 t validate_replace_rtx_1 -0000000120095730 T validize_mem -00000001201fed40 s value.3 -00000001200434b0 T value_member -00000001202006e4 S var_labelno -00000001201ff090 s var_offset -00000001201fffd0 S varconst_time -00000001201ffb90 s variable_args_p -0000000120048ef0 T variable_size -00000001201fec30 G version_string -0000000120200740 S virtual_incoming_args_rtx -0000000120200758 S virtual_outgoing_args_rtx -00000001202007b0 S virtual_stack_dynamic_rtx -0000000120200720 S virtual_stack_vars_rtx -00000001201ff060 s virtuals_instantiated -00000001201ffd40 S void_ftype_ptr_int_int -00000001201ffc50 S void_ftype_ptr_ptr_int -00000001201ffd90 S void_type_node -00000001200aead0 T volatile_insn_p -00000001202009cc S volatile_ok -00000001200aec60 T volatile_refs_p -000000012016e310 t walk_alter_subreg -000000012005bec0 t walk_fixup_memory_subreg -00000001201fedc4 s warn_about_return_type -0000000120200044 S warn_aggregate_return -00000001201ffe24 S warn_bad_function_cast -0000000120200080 S warn_cast_align -00000001201ffd60 S warn_cast_qual -00000001201fed64 S warn_char_subscripts -00000001201ffd10 S warn_conversion -0000000120021280 t warn_for_assignment -00000001201ffe10 S warn_format -00000001201fffe8 S warn_id_clash -00000001200652c0 T warn_if_unused_value -00000001201ffc10 S warn_implicit -00000001201ffed4 S warn_inline -00000001201fff74 S warn_larger_than -00000001201ffc90 S warn_missing_braces -00000001201ffdec S warn_missing_declarations -00000001201ffde8 S warn_missing_prototypes -00000001201fed60 S warn_nested_externs -00000001201ffdfc S warn_parentheses -00000001201ffe30 S warn_pointer_arith -00000001201fed5c S warn_redundant_decls -0000000120200020 S warn_return_type -00000001201fff40 S warn_shadow -00000001201ffc84 S warn_strict_prototypes -00000001201fff70 S warn_switch -00000001201ffda8 S warn_traditional -00000001201fff64 S warn_uninitialized -00000001201ffee4 S warn_unused -00000001201ffc80 S warn_write_strings -0000000120031500 T warning -00000001200310d0 T warning_for_asm -0000000120025f70 t warning_init -00000001201fefd8 s warning_message.0 -0000000120030e20 T warning_with_decl -0000000120030ae0 T warning_with_file_and_line -00000001201fef48 S warningcount -00000001201fefc8 S warnings_are_errors -00000001201ffc20 S wchar_array_type_node -00000001201ffd28 S wchar_type_node -00000001201ff158 s weak_decls -00000001200a9be0 T weak_finish -00000001202009d4 S which_alternative -00000001201341f0 t wipe_dead_reg -00000001202007a0 S word_mode -00000001201e6a58 d wordlist -00000001200c8b80 t write_modifier_bytes -00000001201fef38 S write_symbols -0000000120205f80 b wstring -0000000120038bd0 T xmalloc -00000001202004d8 S xor_optab -0000000120038c30 T xrealloc -00000001200171f0 T xref_tag -00000001201ffbe8 S yychar -00000001201a35c0 r yycheck -00000001201ffbdc S yydebug -00000001201a18ac r yydefact -00000001201a1dd2 r yydefgoto -000000012000ba50 T yyerror -0000000120008e00 T yylex -00000001201ffbe0 S yylval -00000001201ffbd8 S yynerrs -00000001201a1ef2 r yypact -0000000120001ad0 T yyparse -00000001201a2418 r yypgoto -000000012019fc46 r yyprhs -000000012000b900 T yyprint -00000001201a12d0 r yyr1 -00000001201a15be r yyr2 -000000012019ff34 r yyrhs -00000001201a08b8 r yyrline -00000001201a2538 r yytable -00000001201a0ba8 r yytname -000000012019fb08 r yytranslate -00000001201ffbb8 s zero.2 -00000001201ff140 s zero_cost diff --git a/configs/boot/devtime.rcS b/configs/boot/devtime.rcS deleted file mode 100644 index 4d1ca94071..0000000000 --- a/configs/boot/devtime.rcS +++ /dev/null @@ -1,8 +0,0 @@ -insmod /modules/devtime.ko dataAddr=0x9000008 count=100 -rmmod devtime -insmod /modules/devtime.ko dataAddr=0x1a0000300 count=100 -rmmod devtime -insmod /modules/devtime.ko memTest=1 count=100 -rmmod devtime -m5 exit - diff --git a/configs/boot/equake.rcS b/configs/boot/equake.rcS deleted file mode 100644 index 6b799aaf3c..0000000000 --- a/configs/boot/equake.rcS +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -cd /benchmarks/spec/equake00/ - -/sbin/m5 checkpoint 0 0 -/sbin/m5 checkpoint 100000000 200000000 - -/sbin/m5 loadsymbol - -/sbin/m5 resetstats -/benchmarks/spec/equake00/equake < lgred.in -/sbin/m5 exit diff --git a/configs/boot/equake.symbol b/configs/boot/equake.symbol deleted file mode 100644 index 4b28299c10..0000000000 --- a/configs/boot/equake.symbol +++ /dev/null @@ -1,94 +0,0 @@ -000000012001a868 S ARCHcholeskylen -000000012001a878 S ARCHcoord -000000012001a930 S ARCHcorners -000000012001a938 S ARCHduration -000000012001a940 S ARCHelems -000000012001a8b0 S ARCHglobalelem -000000012001a8d0 S ARCHglobalelems -000000012001a8e8 S ARCHglobalnode -000000012001a8a8 S ARCHglobalnodes -000000012001a8d8 S ARCHmatrixcol -000000012001a898 S ARCHmatrixindex -000000012001a924 S ARCHmatrixlen -000000012001a8ac S ARCHmesh_dim -000000012001a8f8 S ARCHmine -000000012001a90c S ARCHnodes -000000012001a908 S ARCHpriv -000000012001a920 S ARCHsubdomains -000000012001a8b8 S ARCHvertex -000000012001a900 S C -000000012001a918 S C23 -000000012001a9a8 B Damp -000000012001a9c8 B Exc -000000012001a8a0 S K -000000012001a928 S M -000000012001a888 S M23 -000000012001a950 B Src -000000012001a890 S V23 -000000012001a388 D _DYNAMIC -000000012001a5f8 D _GLOBAL_OFFSET_TABLE_ -000000012001a848 G _IO_stdin_used -000000012001a550 T _PROCEDURE_LINKAGE_TABLE_ -000000012001a530 d __CTOR_END__ -000000012001a528 d __CTOR_LIST__ -000000012001a540 d __DTOR_END__ -000000012001a538 d __DTOR_LIST__ -000000012001a384 r __FRAME_END__ -000000012001a548 d __JCR_END__ -000000012001a548 d __JCR_LIST__ -000000012001a860 A __bss_start -000000012001a000 D __data_start -0000000120008c50 t __do_global_ctors_aux -00000001200008d0 t __do_global_dtors_aux -000000012001a850 G __dso_handle -000000012001a000 A __fini_array_end -000000012001a000 A __fini_array_start -000000012001a000 A __init_array_end -000000012001a000 A __init_array_start -0000000120008bb0 T __libc_csu_fini -0000000120008b00 T __libc_csu_init -0000000120000890 W __start -000000012001a860 A _edata -000000012001a9e0 A _end -0000000120008cb0 T _fini -0000000120000828 T _init -0000000120000890 T _start -00000001200049c4 T abe_matrix -00000001200056b8 T arch_bail -00000001200056e4 T arch_info -0000000120006584 T arch_init -00000001200057e0 T arch_parsecommandline -0000000120005bf4 T arch_readdouble -0000000120005ad0 T arch_readelemvector -00000001200059ac T arch_readnodevector -0000000120004530 T area_triangle -00000001200051e8 T centroid -000000012001a860 s completed.1 -000000012001a000 W data_start -000000012001a948 S disp -00000001200050bc T distance -0000000120003c70 T element_matrices -0000000120000970 t frame_dummy -00000001200036f8 T get_Enu -0000000120003820 T inv_J -00000001200009c0 T main -0000000120007a88 T mem_init -00000001200054b8 T mv12x12 -000000012001a8c0 S nodekind -000000012001a910 S nodekindf -000000012001a8f0 S options -000000012001a858 g p.0 -000000012001a8c8 S packfile -0000000120004bc4 T phi0 -0000000120004cc4 T phi1 -0000000120004d98 T phi2 -00000001200052e8 T point2fault -000000012001a870 S progname -0000000120005cd8 T readpackfile -000000012000360c T shape_ders -0000000120004e84 T slip -0000000120006604 T smvp -00000001200070f8 T smvp_opt -000000012001a880 S source_elms -000000012001a8e0 S vel -000000012000561c T vv12x12 diff --git a/configs/boot/gcc.rcS b/configs/boot/gcc.rcS deleted file mode 100644 index 6bcd7e03d4..0000000000 --- a/configs/boot/gcc.rcS +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -cd /benchmarks/spec/gcc00/ - -/sbin/m5 checkpoint 0 0 -/sbin/m5 checkpoint 100000000 200000000 - -/sbin/m5 loadsymbol - -/sbin/m5 resetstats -./cc1 mdred.rtlanal.i -/sbin/m5 exit diff --git a/configs/boot/gzip.rcS b/configs/boot/gzip.rcS deleted file mode 100644 index c7aca7e9b1..0000000000 --- a/configs/boot/gzip.rcS +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -cd /benchmarks/spec/gzip00/ - -/sbin/m5 checkpoint 0 0 -/sbin/m5 checkpoint 100000000 200000000 - -/sbin/m5 loadsymbol - -/sbin/m5 resetstats -./gzip lgred.log 1 -/sbin/m5 exit diff --git a/configs/boot/gzip.symbol b/configs/boot/gzip.symbol deleted file mode 100644 index d965c99a98..0000000000 --- a/configs/boot/gzip.symbol +++ /dev/null @@ -1,268 +0,0 @@ -0000000120022c08 D _DYNAMIC -0000000120022fd0 D _GLOBAL_OFFSET_TABLE_ -0000000120023498 G _IO_stdin_used -0000000120022dc0 T _PROCEDURE_LINKAGE_TABLE_ -0000000120022da0 d __CTOR_END__ -0000000120022d98 d __CTOR_LIST__ -0000000120022db0 d __DTOR_END__ -0000000120022da8 d __DTOR_LIST__ -0000000120022c04 r __FRAME_END__ -0000000120022db8 d __JCR_END__ -0000000120022db8 d __JCR_LIST__ -00000001200234f8 A __bss_start -0000000120021030 D __data_start -000000012000fbc0 t __do_global_ctors_aux -00000001200012a0 t __do_global_dtors_aux -00000001200234a0 G __dso_handle -0000000120021030 A __fini_array_end -0000000120021030 A __fini_array_start -0000000120021030 A __init_array_end -0000000120021030 A __init_array_start -000000012000fb20 T __libc_csu_fini -000000012000fa70 T __libc_csu_init -0000000120001260 W __start -00000001200234f8 A _edata -0000000120073b10 A _end -000000012000fc20 T _fini -00000001200011f8 T _init -0000000120001260 T _start -0000000120004cf0 T abort_gzip -000000012000de80 T add_envopt -0000000120023550 S args -0000000120023520 S ascii -000000012002551c b base_dist -00000001200254a8 b base_length -0000000120023698 S bb -00000001200234fc s bi_buf -0000000120001ad0 T bi_init -0000000120001b20 T bi_reverse -0000000120023500 s bi_valid -00000001200015d0 T bi_windup -00000001200235b8 s bitbuf -00000001200235e0 s bitbuf -00000001200235c0 s bitcount -0000000120023690 S bk -0000000120024654 b bl_count -0000000120021830 d bl_desc -0000000120021858 d bl_order -00000001200245b8 b bl_tree -00000001200234ec G block_mode -0000000120023610 S block_start -00000001200235b4 s blocksize -0000000120021540 d border -0000000120009620 t build_tree -0000000120023650 S bytes_in -0000000120023668 S bytes_out -0000000120004740 t check_ofname -000000012000d5c0 T check_zipfile -000000012000e540 T clear_bufs -00000001200234f8 s completed.1 -0000000120023518 s compr_level -00000001200092e0 t compress_block -00000001200235a0 s compressed_len -0000000120021030 d configuration_table -000000012000e280 T copy -00000001200017d0 T copy_block -0000000120004ae0 t copy_stat -0000000120021644 d cpdext -0000000120021608 d cpdist -000000012002158c d cplens -00000001200215ca d cplext -00000001200235f8 s crc -00000001200234f0 g crc.0 -0000000120021870 D crc_32_tab -0000000120002b90 t create_outfile -0000000120008450 T ct_init -0000000120008f60 T ct_tally -000000012002ea20 B d_buf -0000000120021808 d d_desc -0000000120021030 W data_start -00000001200234e8 G dbglvl -00000001200234e4 G dbits -0000000120008440 T debug_time -000000012000a5e0 t decode -000000012000ad50 t decode_c -000000012000ab90 t decode_start -0000000120023528 S decompress -00000001200236c0 S decrypt -0000000120002250 T deflate -0000000120002770 t deflate_fast -0000000120024f68 b depth -000000012000ee70 T display_ratio -00000001200252a5 b dist_code -0000000120004c60 t do_exit -0000000120003f00 t do_list -0000000120023540 S do_lzw -00000001200235c8 s done -0000000120023fcc b dyn_dtree -00000001200236d8 b dyn_ltree -0000000120023678 S env -000000012002350c s eofile -000000012000e1c0 T error -0000000120023548 S exit_code -00000001200235f4 S ext_header -0000000120021794 d extra_blbits -000000012002171c d extra_dbits -00000001200216a8 d extra_lbits -00000001200236b8 S file_method -000000012000f9c0 T file_read -00000001200236b0 S file_type -000000012000e580 T fill_inbuf -0000000120002030 t fill_window -00000001200234d8 g first_time.2 -000000012002358d s flag_bit -0000000120025594 b flag_buf -000000012002358c s flags -0000000120008ba0 T flush_block -000000012000e730 T flush_outbuf -000000012000e860 T flush_window -000000012002352c S force -0000000120023640 S foreground -0000000120001340 t frame_dummy -000000012000a1a0 t gen_bitlen -0000000120008a80 t gen_codes -0000000120002dd0 t get_istat -00000001200032c0 T get_method -0000000120004d50 t get_suffix -0000000120023618 S good_match -000000012000ebf0 T gzipbasename -00000001200236d0 S header_bytes -0000000120024674 b heap -0000000120023578 s heap_len -000000012002357c s heap_max -00000001200214b8 d help_msg.5 -0000000120004ee0 T huft_build -0000000120005670 T huft_free -00000001200236a0 S hufts -00000001200235b0 s i.0 -0000000120023688 S ifd -0000000120023658 S ifile_size -000000012005eea8 B ifname -000000012002356c s in_exit.4 -00000001200269e0 B inbuf -0000000120006e00 T inflate -0000000120006bf0 T inflate_block -00000001200056d0 T inflate_codes -00000001200062b0 T inflate_dynamic -00000001200060f0 T inflate_fixed -0000000120005e10 T inflate_stored -0000000120008960 t init_block -0000000120023684 S inptr -00000001200235a8 s input_len -0000000120023508 s ins_h -0000000120023644 S insize -000000012003ea20 B istat -00000001200235c4 s j -00000001200236c8 S key -00000001200213f8 d known_suffixes.0 -00000001200217e0 d l_desc -0000000120023584 s last_dist -0000000120023588 s last_flags -0000000120023580 s last_lit -000000012002364c S last_member -00000001200234e0 G lbits -0000000120026910 b leaves -00000001200251a5 b length_code -00000001200234c8 G level -0000000120021080 d license_msg -0000000120023534 S list -00000001200268a8 b lit_base -00000001200267a8 b literal -0000000120001b60 T lm_init -0000000120001d90 T longest_match -00000001200210f8 D longopts -0000000120023510 s lookahead -0000000120006ed0 T lzw -0000000120007a80 T main -0000000120003040 t make_ofname -000000012000ec40 T make_simple_name -000000012000c130 t make_table -0000000120021680 D mask_bits -0000000120023624 S match_start -000000012002361c S max_chain_length -0000000120023514 s max_lazy_match -00000001200235d8 s max_len -00000001200234c0 G maxbits -00000001200234c4 G method -0000000120021470 d methods.3 -0000000120023570 s msg_done -0000000120004310 t name_too_long -0000000120023608 S nice_match -00000001200234b8 G no_name -00000001200234bc G no_time -0000000120023630 S ofd -000000012003eaa8 B ofname -0000000120023590 s opt_len -00000001200235d0 s orig_len -000000012005f2a8 B outbuf -0000000120023648 S outcnt -00000001200234a8 g p.0 -0000000120026978 b parents -0000000120023680 S part_nb -00000001200235dc s peek_bits -00000001200235f0 S pkzip -000000012003eea8 B prev -000000012002360c S prev_length -0000000120023628 S progname -0000000120026594 b pt_len -00000001200265a8 b pt_table -000000012002353c S quiet -00000001200080c0 T ran -0000000120023600 S read_buf -000000012000b8c0 t read_c_len -000000012000ed50 T read_error -000000012000b130 t read_pt_len -000000012000d2a0 t read_tree -0000000120023530 S recursive -0000000120023568 S remove_ofname -0000000120023660 S save_orig_name -0000000120009d90 t scan_tree -00000001200236a8 S seedi -0000000120001390 T send_bits -0000000120009f40 t send_tree -0000000120009540 t set_file_type -0000000120004420 t shorten_name -0000000120007f90 T spec_compress -0000000120073ac8 B spec_fd -0000000120007800 T spec_getc -0000000120006f70 T spec_init -0000000120007f40 T spec_initbufs -0000000120007430 T spec_load -0000000120008350 T spec_putc -0000000120007090 T spec_random_load -0000000120007670 T spec_read -00000001200081b0 T spec_reset -0000000120008190 T spec_rewind -0000000120008010 T spec_uncompress -0000000120007930 T spec_ungetc -0000000120008210 T spec_write -0000000120024540 b static_dtree -0000000120023598 s static_len -00000001200240c0 b static_ltree -000000012000eb20 T strlwr -0000000120023620 S strstart -00000001200235bc s subbitbuf -0000000120021440 d suffixes.1 -0000000120023544 S test -0000000120023638 S time_stamp -0000000120023524 S to_stdout -0000000120023558 S total_in -0000000120023560 S total_out -000000012000a510 T unlzh -000000012000c5c0 T unlzw -000000012000cde0 T unpack -000000012000d7a0 T unzip -000000012000e4c0 T updcrc -00000001200235e8 s valid -0000000120023538 S verbose -000000012000ecd0 T warn -0000000120063aa8 B window -00000001200234b0 G window_size -00000001200234d0 G work -000000012000ea20 T write_buf -000000012000ee00 T write_error -000000012000e220 T xmalloc -0000000120023670 S z_len -0000000120073aa8 B z_suffix -0000000120023504 s zfile -000000012000ef80 T zip diff --git a/configs/boot/iscsi-client.rcS b/configs/boot/iscsi-client.rcS deleted file mode 100644 index cfa87652e0..0000000000 --- a/configs/boot/iscsi-client.rcS +++ /dev/null @@ -1,107 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig lo 127.0.0.1 -/sbin/ifconfig eth0 192.168.0.10 txqueuelen 1000 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -#echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "1" > /proc/sys/vm/dirty_writeback_centisecs -echo "done." - -cat > /etc/initiatorname.iscsi < /etc/iscsid.conf < /var/log/iscsi.log -chmod 0600 /var/log/iscsi.log -chmod 0666 -R /var/db/iscsi - -# Required for udev to activate/deactivate devices. -echo "/sbin/hotplug" > /proc/sys/kernel/hotplug - -/sbin/insmod /modules/scsi_transport_iscsi.ko -/sbin/insmod /modules/iscsi_tcp.ko - -echo "Starting iscsid..." -/iscsi/iscsid -f & - -sleep 1 - -echo "Waiting for server..." -netcat -c -l -p 8000 - -echo "Attaching target..." -/iscsi/iscsiadm -m discovery -t st -p 192.168.0.1 -/iscsi/iscsiadm -m node -r a0c049 --login -echo "done." - -sleep 5 - -#PARAMS="-n 8 -s 8 -r .666 -c 50" # lisa default -#PARAMS="-n 8 -s 5120 -r .666 -c 20" # very unstable -#PARAMS="-n 8 -s 8 -r 0 -c 20" # very unstable -#PARAMS="-n 8 -s 8 -r 1 -c 20" # stable 960 Mbps -#PARAMS="-n 8 -s 1024 -r 1 -c 20" # very unstable -#PARAMS="-n 16 -s 32 -r 1 -c 50" # stable ~1.5 Gbps -#PARAMS="-n 50 -s 32 -r 1 -c 50" # stable ~1.5 Gbps -PARAMS="-n 50 -s 8 -r .666 -c 50" -COMMAND="/benchmarks/aio-bench $PARAMS -i 1000000 -C 50000 /dev/sda" - -echo "Starting aio benchmark..." -echo $COMMAND -eval $COMMAND - -echo "starting bash shell..." -/bin/bash - -echo -n "halting machine" -m5 exit diff --git a/configs/boot/iscsi-server.rcS b/configs/boot/iscsi-server.rcS deleted file mode 100644 index 210f4eaef1..0000000000 --- a/configs/boot/iscsi-server.rcS +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig lo 127.0.0.1 -/sbin/ifconfig eth0 192.168.0.1 txqueuelen 1000 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "10" > /proc/sys/vm/dirty_writeback_centisecs -echo "done." - -# specific for iscsi-target -MEM_SIZE=1048576 -echo ${MEM_SIZE} > /proc/sys/net/core/wmem_max -echo ${MEM_SIZE} > /proc/sys/net/core/rmem_max -echo ${MEM_SIZE} > /proc/sys/net/core/wmem_default -echo ${MEM_SIZE} > /proc/sys/net/core/rmem_default -echo "${MEM_SIZE} ${MEM_SIZE} ${MEM_SIZE}" > /proc/sys/net/ipv4/tcp_mem -echo "${MEM_SIZE} ${MEM_SIZE} ${MEM_SIZE}" > /proc/sys/net/ipv4/tcp_rmem -echo "${MEM_SIZE} ${MEM_SIZE} ${MEM_SIZE}" > /proc/sys/net/ipv4/tcp_wmem - -mke2fs -F /dev/sda - -cat > /etc/ietd.conf < /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "1" > /proc/sys/net/ipv4/tcp_vegas_cong_avoid -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "waiting for natbox..." -netcat -c -l -p 8000 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="TCP_MAERTS" -SHORT_ARGS="-l -100k" -LONG_ARGS="-k16384,0 -K16384,0 -- -m 65536 -M 65536 -s 262144 -S 262144" - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" -LONG="$BINARY -H $SERVER -t $TEST $LONG_ARGS" - -echo "starting test..." -echo "netperf warmup" -echo $SHORT -eval $SHORT - -echo "netperf benchmark" -echo $LONG -/sbin/m5 resetstats -/sbin/m5 dumpresetstats 200000000 2000000000 -/sbin/m5 checkpoint 200000000 2000000000 -eval $LONG -/sbin/m5 exit diff --git a/configs/boot/nat-netperf-server.rcS b/configs/boot/nat-netperf-server.rcS deleted file mode 100644 index 23b99a13a0..0000000000 --- a/configs/boot/nat-netperf-server.rcS +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -SERVER=192.168.0.1 -CLIENT=10.0.0.2 -NATBOX=192.168.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $SERVER txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "1" > /proc/sys/net/ipv4/tcp_vegas_cong_avoid -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo "running netserver..." -/benchmarks/netperf-bin/netserver - -echo -n "signal natbox to begin..." -sleep 5 -echo "server ready" | netcat -c $NATBOX 8000 -echo "done." - -echo "starting bash..." -exec /bin/bash diff --git a/configs/boot/nat-netperf-stream-client.rcS b/configs/boot/nat-netperf-stream-client.rcS deleted file mode 100644 index f20e92c5c1..0000000000 --- a/configs/boot/nat-netperf-stream-client.rcS +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/sh -SERVER=192.168.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $CLIENT txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "1" > /proc/sys/net/ipv4/tcp_vegas_cong_avoid -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo "modifying route table" -route add default gw 10.0.0.1 - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="TCP_STREAM" -SHORT_ARGS="-l -100k" -LONG_ARGS="-k16384,0 -K16384,0 -- -m 65536 -M 65536 -s 262144 -S 262144" - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" -LONG="$BINARY -H $SERVER -t $TEST $LONG_ARGS" - -echo "starting test..." -echo "netperf warmup" -echo $SHORT -eval $SHORT - -echo "netperf benchmark" -echo $LONG -/sbin/m5 ivlb 1 -/sbin/m5 resetstats -/sbin/m5 dumpresetstats 200000000 2000000000 -/sbin/m5 checkpoint 200000000 2000000000 -eval $LONG -/sbin/m5 exit diff --git a/configs/boot/nat-spec-surge-client.rcS b/configs/boot/nat-spec-surge-client.rcS deleted file mode 100644 index d26e38378d..0000000000 --- a/configs/boot/nat-spec-surge-client.rcS +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# -CLIENT=10.0.0.2 -SERVER=192.168.0.1 - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 $CLIENT txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "1" > /proc/sys/net/ipv4/tcp_vegas_cong_avoid -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo "changing route table..." -route add default gw 10.0.0.1 - -echo "waiting for server..." -netcat -c -l -p 8000 - -echo -n "running surge client..." -/bin/bash -c "cd /benchmarks/surge && ./spec-m5 1 20 1 $SERVER 5 40000 1000000000 1000" -echo "done." - -echo -n "halting machine" -m5 exit - -echo -n "starting bash shell..." -/bin/bash diff --git a/configs/boot/nat-spec-surge-server.rcS b/configs/boot/nat-spec-surge-server.rcS deleted file mode 100755 index 0f462568cc..0000000000 --- a/configs/boot/nat-spec-surge-server.rcS +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# -NATBOX=192.168.0.7 - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 192.168.0.1 txqueuelen 1000 -/sbin/ifconfig eth0:1 192.168.0.2 txqueuelen 1000 -/sbin/ifconfig eth0:2 192.168.0.3 txqueuelen 1000 -/sbin/ifconfig eth0:3 192.168.0.4 txqueuelen 1000 -/sbin/ifconfig eth0:4 192.168.0.5 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "1" > /proc/sys/net/ipv4/tcp_vegas_cong_avoid -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "mounting file set..." -mkdir -p /z/htdocs -mount /dev/hdb1 /z/htdocs -echo "done." - -echo -n "starting httpd..." -/benchmarks/apache2/bin/apachectl start -sleep 2 -cat /benchmarks/apache2/logs/error_log -echo "done." - -echo "notifying natbox..." -sleep 5 -echo "server ready" | netcat -c $NATBOX 8000 -echo "done" - -echo -n "starting bash shell..." -/bin/bash diff --git a/configs/boot/natbox-netperf.rcS b/configs/boot/natbox-netperf.rcS deleted file mode 100644 index e6384757e5..0000000000 --- a/configs/boot/natbox-netperf.rcS +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -EXTIF=192.168.0.2 -INTIF=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $EXTIF txqueuelen 1000 -ifconfig eth1 $INTIF txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "1" > /proc/sys/net/ipv4/tcp_vegas_cong_avoid -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog -echo "1" > /proc/sys/net/ipv4/ip_forward - -echo "waiting for netserver..." -netcat -c -l -p 8000 - -echo "setting up iptables..." -IPTABLES=/sbin/iptables -EXTIF=eth0 -INTIF=eth1 - -$IPTABLES -P INPUT ACCEPT -$IPTABLES -F INPUT -$IPTABLES -P OUTPUT ACCEPT -$IPTABLES -F OUTPUT -$IPTABLES -P FORWARD DROP -$IPTABLES -F FORWARD -$IPTABLES -t nat -F - -$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT -$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT -$IPTABLES -A FORWARD -j LOG - -$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE - -echo "informing client..." -sleep 5 -echo "server ready" | netcat -c $CLIENT 8000 - -echo "starting bash..." -exec /bin/bash diff --git a/configs/boot/natbox-spec-surge.rcS b/configs/boot/natbox-spec-surge.rcS deleted file mode 100644 index 4346a62296..0000000000 --- a/configs/boot/natbox-spec-surge.rcS +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/sh -EXTIF=192.168.0.7 -INTIF=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $EXTIF txqueuelen 1000 -ifconfig eth1 $INTIF txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "1" > /proc/sys/net/ipv4/tcp_vegas_cong_avoid -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo "1" > /proc/sys/net/ipv4/ip_forward - -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max - -echo "waiting for netserver..." -netcat -c -l -p 8000 - -echo "setting up iptables..." -IPTABLES=/sbin/iptables -EXTIF=eth0 -INTIF=eth1 - -$IPTABLES -P INPUT ACCEPT -$IPTABLES -F INPUT -$IPTABLES -P OUTPUT ACCEPT -$IPTABLES -F OUTPUT -$IPTABLES -P FORWARD DROP -$IPTABLES -F FORWARD -$IPTABLES -t nat -F - -$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT -$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT -$IPTABLES -A FORWARD -j LOG - -$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE - -echo "informing client..." -sleep 5 -echo "server ready" | netcat -c $CLIENT 8000 - -echo "starting bash..." -exec /bin/bash diff --git a/configs/boot/netperf-maerts-client.rcS b/configs/boot/netperf-maerts-client.rcS deleted file mode 100644 index 7766713aa5..0000000000 --- a/configs/boot/netperf-maerts-client.rcS +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $CLIENT txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "waiting for server..." -/usr/bin/netcat -c -l -p 8000 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="TCP_MAERTS" -SHORT_ARGS="-l -100k" -LONG_ARGS="-k16384,0 -K16384,0 -- -m 65536 -M 65536 -s 262144 -S 262144" - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" -LONG="$BINARY -H $SERVER -t $TEST $LONG_ARGS" - -echo "starting test..." -echo "netperf warmup" -echo $SHORT -eval $SHORT -NUMCLNTS=`/sbin/m5 initparam` -[ "$NUMCLNTS" -eq "0" ] && NUMCLNTS=1 - -echo "netperf benchmark... starting $NUMCLNTS..." -lcv=0 - -while [ "$lcv" -lt "$NUMCLNTS" ] -do - echo $LONG - eval $LONG & - ((lcv += 1)) -done - -ckpt=200000000 -((ckpt = ckpt * 12/3 + 600000000)) - -echo "configuring checkpointing at $ckpt..." -/sbin/m5 checkpoint $ckpt 2000000000 -echo "done configuring checkpointing..." -sleep 100000 - diff --git a/configs/boot/netperf-rr.rcS b/configs/boot/netperf-rr.rcS deleted file mode 100644 index 1467c1f67a..0000000000 --- a/configs/boot/netperf-rr.rcS +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $CLIENT txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="TCP_RR" -SHORT_ARGS="-l -1k" -LONG_ARGS="-k10000,0 -K10000,0" - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" -LONG="$BINARY -H $SERVER -t $TEST $LONG_ARGS" - -echo "starting test..." -echo "netperf warmup" -echo $SHORT -eval $SHORT - -echo "netperf benchmark" -echo $LONG -/sbin/m5 ivlb 1 -/sbin/m5 resetstats -/sbin/m5 dumpresetstats 200000000 2000000000 -/sbin/m5 checkpoint 200000000 2000000000 -eval $LONG -/sbin/m5 exit diff --git a/configs/boot/netperf-server.rcS b/configs/boot/netperf-server.rcS deleted file mode 100644 index 95a4ac4cf5..0000000000 --- a/configs/boot/netperf-server.rcS +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $SERVER txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo "running netserver..." -/benchmarks/netperf-bin/netserver - -echo -n "signal client to begin..." -sleep 1 -echo "server ready" | netcat -c $CLIENT 8000 -echo "done." - -echo "starting bash..." -exec /bin/bash diff --git a/configs/boot/netperf-stream-client.rcS b/configs/boot/netperf-stream-client.rcS deleted file mode 100644 index 9a2cc0ec1f..0000000000 --- a/configs/boot/netperf-stream-client.rcS +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $CLIENT txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="TCP_STREAM" -SHORT_ARGS="-l -100k" -LONG_ARGS="-k16384,0 -K16384,0 -- -m 65536 -M 65536 -s 262144 -S 262144" - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" -LONG="$BINARY -H $SERVER -t $TEST $LONG_ARGS" - -echo "starting test..." -echo "netperf warmup" -echo $SHORT -eval $SHORT - -echo "netperf benchmark" -echo $LONG -/sbin/m5 ivlb 1 -/sbin/m5 resetstats -/sbin/m5 dumpresetstats 200000000 2000000000 -/sbin/m5 checkpoint 200000000 2000000000 -eval $LONG -/sbin/m5 exit diff --git a/configs/boot/netperf-stream-nt-client.rcS b/configs/boot/netperf-stream-nt-client.rcS deleted file mode 100644 index 5681155250..0000000000 --- a/configs/boot/netperf-stream-nt-client.rcS +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $CLIENT txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="TCP_STREAM" -SHORT_ARGS="-l -100k" -LONG_ARGS="-- -m 65536 -M 65536 -s 262144 -S 262144" - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" -LONG="$BINARY -H $SERVER -t $TEST $LONG_ARGS" - -echo "starting test..." -echo "netperf warmup" -echo $SHORT -eval $SHORT - -echo "netperf benchmark" -echo $LONG -/sbin/m5 ivlb 1 -/sbin/m5 resetstats -/sbin/m5 dumpresetstats 200000000 2000000000 -/sbin/m5 checkpoint 200000000 2000000000 -eval $LONG -/sbin/m5 exit diff --git a/configs/boot/netperf-stream-udp-client.rcS b/configs/boot/netperf-stream-udp-client.rcS deleted file mode 100644 index 4acb4243af..0000000000 --- a/configs/boot/netperf-stream-udp-client.rcS +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $CLIENT txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="UDP_STREAM" -SHORT_ARGS="-l 2 -- -m 16384 -M 16384 -s 262144 -S 262144" -#LONG_ARGS="-k16384,0 -K16384,0 -- -m 65536 -M 65536 -s 262144 -S 262144" - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" -LONG="$BINARY -H $SERVER -t $TEST $LONG_ARGS" - -echo "starting test..." -echo "netperf warmup" -echo $SHORT -eval $SHORT - -#echo "netperf benchmark" -#echo $LONG -#/sbin/m5 ivlb 1 -#/sbin/m5 resetstats -#/sbin/m5 dumpresetstats 200000000 2000000000 -#/sbin/m5 checkpoint 200000000 2000000000 -#eval $LONG -/sbin/m5 exit diff --git a/configs/boot/netperf-stream-udp-local.rcS b/configs/boot/netperf-stream-udp-local.rcS deleted file mode 100644 index ccd7654e26..0000000000 --- a/configs/boot/netperf-stream-udp-local.rcS +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -SERVER=127.0.0.1 -CLIENT=127.0.0.1 - -echo "setting up network..." -ifconfig lo 127.0.0.1 - -BINARY=/benchmarks/netperf-bin/netperf -TEST="UDP_STREAM" -SHORT_ARGS="-l 2 -- -m 4096" - -echo "running netserver..." -/benchmarks/netperf-bin/netserver - - -SHORT="$BINARY -H $SERVER -t $TEST $SHORT_ARGS" - -echo "starting test..." -echo $SHORT -eval $SHORT - -/sbin/m5 exit diff --git a/configs/boot/nfs-client-dbench.rcS b/configs/boot/nfs-client-dbench.rcS deleted file mode 100644 index 29b5043bfc..0000000000 --- a/configs/boot/nfs-client-dbench.rcS +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.2 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "10" > /proc/sys/vm/dirty_writeback_centisecs -echo "done." - -echo -n "starting nfs client..." -/sbin/portmap & -/sbin/lockd & -echo "done." - -echo -n "waiting for server..." -/usr/bin/netcat -c -l -p 8000 - -echo -n "mounting remote share..." -mkdir /nfs -mount 10.0.0.1:/nfs /nfs -echo "done." - -cd /nfs - -initparam=`m5 initparam` - -if test X$initparam == X0; then - /sbin/m5 checkpoint 100000000 2000000000 - dd if=/dev/zero of=foo bs=1024k count=512 -else - /sbin/m5 checkpoint 1000000000 2000000000 - /benchmarks/dbench/dbench $initparam -fi - -/sbin/m5 exit diff --git a/configs/boot/nfs-client-nhfsstone.rcS b/configs/boot/nfs-client-nhfsstone.rcS deleted file mode 100755 index c59655a474..0000000000 --- a/configs/boot/nfs-client-nhfsstone.rcS +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.2 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "starting nfs client..." -/sbin/portmap & -/sbin/lockd & -echo "done." - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -echo -n "mounting remote share..." -mkdir /nfs -mount 10.0.0.1:/nfs /nfs -echo "done." - -/sbin/m5 checkpoint 8000000000 2000000000 -/sbin/nhfsstone /nfs - -/sbin/m5 exit diff --git a/configs/boot/nfs-client-smallb.rcS b/configs/boot/nfs-client-smallb.rcS deleted file mode 100755 index 375da1f591..0000000000 --- a/configs/boot/nfs-client-smallb.rcS +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.2 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "starting nfs client..." -/sbin/portmap & -/sbin/lockd & -echo "done." - -echo -n "waiting for server..." -/usr/bin/netcat -c -l -p 8000 - -echo -n "mounting remote share..." -mkdir /nfs -mount -o rsize=1460,wsize=1460 10.0.0.1:/nfs /nfs -echo "done." - -/bin/bonnie++ -u 99 -s 700 -r 0 -n 0 -f -F -d /nfs - -/sbin/m5 exit diff --git a/configs/boot/nfs-client-tcp-smallb.rcS b/configs/boot/nfs-client-tcp-smallb.rcS deleted file mode 100755 index b71ca0bf18..0000000000 --- a/configs/boot/nfs-client-tcp-smallb.rcS +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.2 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "starting nfs client..." -/sbin/portmap & -/sbin/lockd & -echo "done." - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -echo -n "mounting remote share..." -mkdir /nfs -mount -o rsize=1460,wsize=1460,tcp 10.0.0.1:/nfs /nfs -echo "done." - -/usr/bin/bonnie++ -u 99 -s 700 -r 0 -n 0 -f -F -d /nfs - -/sbin/m5 exit diff --git a/configs/boot/nfs-client-tcp.rcS b/configs/boot/nfs-client-tcp.rcS deleted file mode 100755 index e707ef2578..0000000000 --- a/configs/boot/nfs-client-tcp.rcS +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.2 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "starting nfs client..." -/sbin/portmap & -/sbin/lockd & -echo "done." - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -echo -n "mounting remote share..." -mkdir /nfs -mount -o tcp 10.0.0.1:/nfs /nfs -echo "done." - -/usr/bin/bonnie++ -u 99 -s 700 -r 0 -n 0 -f -F -d /nfs - -/sbin/m5 exit diff --git a/configs/boot/nfs-client.rcS b/configs/boot/nfs-client.rcS deleted file mode 100755 index f3fbe04677..0000000000 --- a/configs/boot/nfs-client.rcS +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.2 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "starting nfs client..." -/sbin/portmap & -/sbin/lockd & -echo "done." - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -echo -n "mounting remote share..." -mkdir /nfs -mount 10.0.0.1:/nfs /nfs -echo "done." - -/usr/bin/bonnie++ -u 99 -s 700 -r 0 -n 0 -f -F -d /nfs - -/sbin/m5 exit diff --git a/configs/boot/nfs-server-nhfsstone.rcS b/configs/boot/nfs-server-nhfsstone.rcS deleted file mode 100755 index 7fa44a5f29..0000000000 --- a/configs/boot/nfs-server-nhfsstone.rcS +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.1 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -#if [ ! -x /dev/sda ] -#then -# mknod /dev/sda b 8 0 -# mknod /dev/sda1 b 8 1 -#fi - -/sbin/insmod /modules/scsi_debug.ko dev_size_mb=80 - -echo -n "creating partition and formatting..." -/sbin/mke2fs -F /dev/sda -mkdir /nfs -/bin/mount /dev/sda /nfs -chmod a+rwx /nfs -echo "done." - -echo "/nfs 10.0.0.0/255.0.0.0(rw,sync,no_root_squash)" > /etc/exports -echo -n "starting nfs kernel server..." -/sbin/portmap -/sbin/lockd -/sbin/statd -/sbin/nfsd 8 -/sbin/mountd -echo "done." - -echo "Exporting shares..." -/sbin/exportfs -r -v - -echo -n "signal client to mount..." -sleep 5 -echo "server ready" | netcat -c 10.0.0.2 8000 -echo "done." - -echo -n "starting bash shell..." -/bin/bash diff --git a/configs/boot/nfs-server.rcS b/configs/boot/nfs-server.rcS deleted file mode 100755 index 7314d06c30..0000000000 --- a/configs/boot/nfs-server.rcS +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 10.0.0.1 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -#if [ ! -x /dev/sda ] -#then -# mknod /dev/sda b 8 0 -# mknod /dev/sda1 b 8 1 -#fi - -/sbin/insmod /modules/scsi_debug.ko dev_size_mb=768 - -echo -n "creating partition and formatting..." -#echo "1,767,L" > /tmp/sfdisk.run -#/usr/sbin/sfdisk -uM --force /dev/sda < /tmp/sfdisk.run -/sbin/mke2fs -F /dev/sda -mkdir /nfs -/bin/mount /dev/sda /nfs -chmod a+rwx /nfs -#/usr/sbin/sfdisk -uM -l /dev/sda -echo "done." - -echo "/nfs 10.0.0.0/255.0.0.0(rw,sync,no_root_squash)" > /etc/exports -echo -n "starting nfs kernel server..." -/sbin/portmap -/sbin/lockd -/sbin/statd -/sbin/nfsd 15 -/sbin/mountd -echo "done." - -echo "Exporting shares..." -/sbin/exportfs -r -v - -echo -n "signal client to mount..." -echo "server ready" | netcat -c 10.0.0.2 8000 -echo "done." - -echo -n "starting bash shell..." -/bin/bash diff --git a/configs/boot/null.rcS b/configs/boot/null.rcS deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/configs/boot/ping-client.rcS b/configs/boot/ping-client.rcS deleted file mode 100644 index a147fb2458..0000000000 --- a/configs/boot/ping-client.rcS +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $CLIENT txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "waiting for server..." -netcat -c -l -p 8000 - -ping -c 5 $SERVER -/sbin/m5 exit diff --git a/configs/boot/ping-server.rcS b/configs/boot/ping-server.rcS deleted file mode 100644 index 311c80212b..0000000000 --- a/configs/boot/ping-server.rcS +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -SERVER=10.0.0.1 -CLIENT=10.0.0.2 - -echo "setting up network..." -ifconfig lo 127.0.0.1 -ifconfig eth0 $SERVER txqueuelen 1000 - -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_rmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_wmem -echo "5000000 5000000 5000000" > /proc/sys/net/ipv4/tcp_mem -echo "262143" > /proc/sys/net/core/rmem_max -echo "262143" > /proc/sys/net/core/wmem_max -echo "262143" > /proc/sys/net/core/rmem_default -echo "262143" > /proc/sys/net/core/wmem_default -echo "262143" > /proc/sys/net/core/optmem_max -echo "100000" > /proc/sys/net/core/netdev_max_backlog - -echo -n "signal client to begin..." -echo "server ready" | netcat -c $CLIENT 8000 -echo "done." - -echo "starting bash..." -exec /bin/bash diff --git a/configs/boot/setup b/configs/boot/setup deleted file mode 100644 index 842e50a4ab..0000000000 --- a/configs/boot/setup +++ /dev/null @@ -1,37 +0,0 @@ -ifconfig eth1 mtu 9000 txqueuelen 1000 up - -### IPV4 specific settings -# turns TCP timestamp support off, default 1, reduces CPU use -echo "0" > /proc/sys/net/ipv4/tcp_timestamps - -# turn SACK support off, default on -echo "0" > /proc/sys/net/ipv4/tcp_sack - -# sets min/default/max TCP read buffer, default 4096 87380 174760 -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem - -# sets min/pressure/max TCP write buffer, default 4096 16384 131072 -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem - -# sets min/pressure/max TCP buffer space, default 31744 32256 32768 -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem - -### CORE settings (mostly for socket and UDP effect) -# maximum receive socket buffer size, default 131071 -echo "524287" > /proc/sys/net/core/rmem_max - -# maximum send socket buffer size, default 131071 -echo "524287" > /proc/sys/net/core/wmem_max - -# default receive socket buffer size, default 65535 -echo "524287" > /proc/sys/net/core/rmem_default - -# default send socket buffer size, default 65535 -echo "524287" > /proc/sys/net/core/wmem_default - -# maximum amount of option memory buffers, default 10240 -echo "524287" > /proc/sys/net/core/optmem_max - -# number of unprocessed input packets before kernel starts dropping them, -# default 300 -echo "300000" > /proc/sys/net/core/netdev_max_backlog diff --git a/configs/boot/spec-surge-client.rcS b/configs/boot/spec-surge-client.rcS deleted file mode 100644 index 0dd2ba7dbb..0000000000 --- a/configs/boot/spec-surge-client.rcS +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 192.168.0.10 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo "waiting for server..." -netcat -c -l -p 8000 - -echo -n "running surge client..." -/bin/bash -c "cd /benchmarks/surge && ./spec-m5 1 20 1 192.168.0.1 5 40000 1000000000 1000" -echo "done." - -echo -n "halting machine" -m5 exit - -echo -n "starting bash shell..." -/bin/bash diff --git a/configs/boot/spec-surge-server.rcS b/configs/boot/spec-surge-server.rcS deleted file mode 100755 index 89a3fb4f5f..0000000000 --- a/configs/boot/spec-surge-server.rcS +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 192.168.0.1 txqueuelen 1000 -/sbin/ifconfig eth0:1 192.168.0.2 txqueuelen 1000 -/sbin/ifconfig eth0:2 192.168.0.3 txqueuelen 1000 -/sbin/ifconfig eth0:3 192.168.0.4 txqueuelen 1000 -/sbin/ifconfig eth0:4 192.168.0.5 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "mounting file set..." -mkdir -p /z/htdocs -mount /dev/hdb1 /z/htdocs -echo "done." - -echo -n "starting httpd..." -/usr/sbin/apache2 -f /etc/apache2/httpd.conf -k start -sleep 2 -cat /usr/share/apache2/logs/error_log -echo "done." - -echo "notifying client..." -echo "server ready" | netcat -c 192.168.0.10 8000 -echo "done" - -echo -n "starting bash shell..." -/bin/bash diff --git a/configs/boot/surge-client.rcS b/configs/boot/surge-client.rcS deleted file mode 100755 index ba7d87f66d..0000000000 --- a/configs/boot/surge-client.rcS +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 192.168.0.10 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo "waiting for server..." -netcat -c -l -p 8000 - -echo -n "running surge client..." -/bin/bash -c "cd /benchmarks/specsurge && ./Surge 2 100 1 192.168.0.1 5" -echo "done." - -echo -n "halting machine" -m5 exit - -echo -n "starting bash shell..." -/bin/bash diff --git a/configs/boot/surge-server.rcS b/configs/boot/surge-server.rcS deleted file mode 100755 index 140c02fb31..0000000000 --- a/configs/boot/surge-server.rcS +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -# -# /etc/init.d/rcS -# - - -echo -n "mounting swap..." -/sbin/swapon /dev/hdc -echo "done." - -echo -n "setting up network..." -/sbin/ifconfig eth0 192.168.0.1 txqueuelen 1000 -/sbin/ifconfig eth0:1 192.168.0.2 txqueuelen 1000 -/sbin/ifconfig eth0:2 192.168.0.3 txqueuelen 1000 -/sbin/ifconfig eth0:3 192.168.0.4 txqueuelen 1000 -/sbin/ifconfig eth0:4 192.168.0.5 txqueuelen 1000 -/sbin/ifconfig lo 127.0.0.1 - -echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle -echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse -echo "1" > /proc/sys/net/ipv4/tcp_window_scaling -echo "0" > /proc/sys/net/ipv4/tcp_timestamps -echo "0" > /proc/sys/net/ipv4/tcp_sack -echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout -echo "16384" > /proc/sys/net/ipv4/tcp_max_syn_backlog -echo "262144" > /proc/sys/net/ipv4/ip_conntrack_max -echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_rmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_wmem -echo "10000000 10000000 10000000" > /proc/sys/net/ipv4/tcp_mem -echo "524287" > /proc/sys/net/core/rmem_max -echo "524287" > /proc/sys/net/core/wmem_max -echo "524287" > /proc/sys/net/core/optmem_max -echo "300000" > /proc/sys/net/core/netdev_max_backlog -echo "131072" > /proc/sys/fs/file-max -echo "done." - -echo -n "mounting file set..." -mkdir -p /z/htdocs -mount /dev/hdb1 /z/htdocs -echo "done." - -echo -n "starting httpd..." -/usr/sbin/apache2 -f /etc/apache2/httpd.conf -k start -sleep 2 -cat /usr/share/apache2/logs/error_log -echo "done." - -echo "server ready" | netcat -c 192.168.10 8000 - -echo -n "starting bash shell..." -/bin/bash From 97d45c5dc70ab50e6273fbc3b812144de6a9dfff Mon Sep 17 00:00:00 2001 From: Nils Asmussen Date: Fri, 21 Feb 2020 13:58:04 +0100 Subject: [PATCH 06/56] base,sim: allow m5writeFile with stdout/stderr. If m5writeFile opens stdout/stderr, no file is registered in OutputDirectory and thus we don't want to search for it on close. In order to write multiple times to stdout/stderr in a reasonable way, we also want to prevent seeking. Thus, don't seek if the offset is 0, in which case this would be a noop anyway (we just opened the file without append). Finally, it is helpful for debugging if the stream is flushed on every write. Change-Id: I102f82dcd2c63420b6f3fe55d67f03c62349e69d Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28727 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/base/output.cc | 6 ++++++ src/sim/pseudo_inst.cc | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/base/output.cc b/src/base/output.cc index ec94a13749..47b8aa7f4d 100644 --- a/src/base/output.cc +++ b/src/base/output.cc @@ -1,5 +1,6 @@ /* * Copyright (c) 2015 ARM Limited + * Copyright (c) 2020 Barkhausen Institut * All rights reserved * * The license below extends only to copyright in the software and shall @@ -142,6 +143,11 @@ OutputDirectory::checkForStdio(const string &name) void OutputDirectory::close(OutputStream *file) { + if (file == &stdout || file == &stderr) { + file->stream()->flush(); + return; + } + auto i = files.find(file->name()); if (i == files.end()) fatal("Attempted to close an unregistred file stream"); diff --git a/src/sim/pseudo_inst.cc b/src/sim/pseudo_inst.cc index c65fdc0162..b11a5a4436 100644 --- a/src/sim/pseudo_inst.cc +++ b/src/sim/pseudo_inst.cc @@ -1,5 +1,6 @@ /* * Copyright (c) 2010-2012, 2015, 2017 ARM Limited + * Copyright (c) 2020 Barkhausen Institut * All rights reserved * * The license below extends only to copyright in the software and shall @@ -425,8 +426,10 @@ writefile(ThreadContext *tc, Addr vaddr, uint64_t len, uint64_t offset, if (!os) panic("could not open file %s\n", filename); - // seek to offset - os->seekp(offset); + if (offset != 0) { + // seek to offset + os->seekp(offset); + } // copy out data and write to file char *buf = new char[len]; From 264a6392bee7fa8bf5f05b771825dcc6c1930d92 Mon Sep 17 00:00:00 2001 From: Timothy Hayes Date: Thu, 7 May 2020 11:07:05 +0100 Subject: [PATCH 07/56] mem-ruby: MOESI_CMP_directory sync fix The recent commit dd6cd33 modified the behaviour of the the Ruby sequencer to handle load linked requests as loads rather than stores. This caused the regression test realview-simple-timing-dual-ruby-ARM-x86_64-opt to become stuck when booting Linux. This patch fixes the issue by adding a missing forward_eviction_to_cpu action to the state transition(OM, Fwd_GETX, IM). Change-Id: I8f253c5709488b07ddc5143a15eda406e31f3cc6 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28787 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/mem/ruby/protocol/MOESI_CMP_directory-L1cache.sm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mem/ruby/protocol/MOESI_CMP_directory-L1cache.sm b/src/mem/ruby/protocol/MOESI_CMP_directory-L1cache.sm index b8d8ab4a0f..5a31d281fd 100644 --- a/src/mem/ruby/protocol/MOESI_CMP_directory-L1cache.sm +++ b/src/mem/ruby/protocol/MOESI_CMP_directory-L1cache.sm @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 ARM Limited + * Copyright (c) 2019-2020 ARM Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -1189,6 +1189,7 @@ machine(MachineType:L1Cache, "L1 cache protocol") // transition(OM, Fwd_GETX, OMF) { transition(OM, Fwd_GETX, IM) { ee_sendDataExclusive; + forward_eviction_to_cpu; l_popForwardQueue; } From 97daaf1f2e57e067d8630445de12d508dd83a31f Mon Sep 17 00:00:00 2001 From: Timothy Hayes Date: Thu, 7 May 2020 12:03:03 +0100 Subject: [PATCH 08/56] mem-ruby: MESI_Two_Level missing function compilation fix The recent commit dd6cd33 removed the Ruby Sequencer function invalidateSC in favour of doing this implicitely via evictionCallback. The protocol MESI_Two_Level still contains one explicit call to this function, however, this is now superflous as forward_eviction_to_cpu is called in the same transition. This patch removes the remaining calls to invalidateSC. JIRA: https://gem5.atlassian.net/browse/GEM5-499 Change-Id: If51d8bebf6aa39d20789639aab0d262d5173ca59 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28747 Reviewed-by: Jason Lowe-Power Reviewed-by: Ayaz Akram Maintainer: Jason Lowe-Power Tested-by: kokoro --- .../ruby/protocol/MESI_Two_Level-L1cache.sm | 18 ++++++++++++------ src/mem/ruby/protocol/RubySlicc_Types.sm | 1 - 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/mem/ruby/protocol/MESI_Two_Level-L1cache.sm b/src/mem/ruby/protocol/MESI_Two_Level-L1cache.sm index 3e3580f704..3e07e03024 100644 --- a/src/mem/ruby/protocol/MESI_Two_Level-L1cache.sm +++ b/src/mem/ruby/protocol/MESI_Two_Level-L1cache.sm @@ -1,4 +1,16 @@ /* + * Copyright (c) 2020 ARM Limited + * All rights reserved + * + * The license below extends only to copyright in the software and shall + * not be construed as granting a license to any other intellectual + * property including but not limited to intellectual property relating + * to a hardware implementation of the functionality of the software + * licensed hereunder. You may use the software subject to the license + * terms below provided that you ensure that this notice is replicated + * unmodified and in its entirety in all distributions of the software, + * modified or unmodified, in source code or in binary form. + * * Copyright (c) 1999-2013 Mark D. Hill and David A. Wood * All rights reserved. * @@ -816,11 +828,6 @@ machine(MachineType:L1Cache, "MESI Directory L1 Cache CMP") } } - action(dg_invalidate_sc, "dg", - desc="Invalidate store conditional as the cache lost permissions") { - sequencer.invalidateSC(address); - } - action(h_load_hit, "hd", desc="Notify sequencer the load completed.") { @@ -1394,7 +1401,6 @@ machine(MachineType:L1Cache, "MESI Directory L1 Cache CMP") transition(SM, Inv, IM) { forward_eviction_to_cpu; fi_sendInvAck; - dg_invalidate_sc; l_popRequestQueue; } diff --git a/src/mem/ruby/protocol/RubySlicc_Types.sm b/src/mem/ruby/protocol/RubySlicc_Types.sm index 6ab0f3f768..e3a136f247 100644 --- a/src/mem/ruby/protocol/RubySlicc_Types.sm +++ b/src/mem/ruby/protocol/RubySlicc_Types.sm @@ -132,7 +132,6 @@ structure (Sequencer, external = "yes") { void evictionCallback(Addr); void recordRequestType(SequencerRequestType); bool checkResourceAvailable(CacheResourceType, Addr); - void invalidateSC(Addr); } structure (GPUCoalescer, external = "yes") { From 552e85250ded79937da52b88a76ea57d519c4f9d Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Tue, 5 May 2020 17:40:30 -0700 Subject: [PATCH 09/56] misc: Updated version to 20.0.0.0 Change-Id: I5ba4a6e728b2daccea898685d3c27b0f7c7a02cd Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28707 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/base/version.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/base/version.cc b/src/base/version.cc index 7182b55076..c5fbca03bb 100644 --- a/src/base/version.cc +++ b/src/base/version.cc @@ -26,4 +26,4 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -const char *gem5Version = "[develop]"; +const char *gem5Version = "20.0.0.0"; From 2877d0fa636e4f16469bb8efa71a0dbe0b9c48d6 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Tue, 5 May 2020 17:44:34 -0700 Subject: [PATCH 10/56] misc: Updated resources bucket url to version 20 This will fix this v20.0.0.0 of gem5 to the v20 gem5 resources bucket subdirectory. Change-Id: I0c1f1a2c28c18e684bcb009d1650f9e9d2950a93 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28708 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- ext/testlib/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/testlib/config.py b/ext/testlib/config.py index 348d0a84c8..189f7c1d52 100644 --- a/ext/testlib/config.py +++ b/ext/testlib/config.py @@ -220,7 +220,7 @@ def define_defaults(defaults): os.pardir)) defaults.result_path = os.path.join(os.getcwd(), '.testing-results') defaults.list_only_failed = False - defaults.resource_url = 'http://dist.gem5.org/dist/develop' + defaults.resource_url = 'http://dist.gem5.org/dist/v20' def define_constants(constants): ''' From 49390bb8f743e416413ba7832ade31d9bec96f06 Mon Sep 17 00:00:00 2001 From: Matthew Poremba Date: Fri, 8 May 2020 17:18:43 -0500 Subject: [PATCH 11/56] mem: Defer deletion of respQueue.front() in DRAMCtrl The front() of respQueue was being deleted before the last usuage of dram_pkt (which points to the same object) causing random crashes. Change-Id: I89862d10599dc0d1a50717dac8ed9298b4d74a3d Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28808 Reviewed-by: Nikos Nikoleris Maintainer: Nikos Nikoleris Tested-by: kokoro --- src/mem/dram_ctrl.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mem/dram_ctrl.cc b/src/mem/dram_ctrl.cc index 0a8479eb89..5f0fcc77a2 100644 --- a/src/mem/dram_ctrl.cc +++ b/src/mem/dram_ctrl.cc @@ -716,7 +716,7 @@ DRAMCtrl::processRespondEvent() accessAndRespond(dram_pkt->pkt, frontendLatency + backendLatency); } - delete respQueue.front(); + assert(respQueue.front() == dram_pkt); respQueue.pop_front(); if (!respQueue.empty()) { @@ -738,6 +738,8 @@ DRAMCtrl::processRespondEvent() } } + delete dram_pkt; + // We have made a location in the queue available at this point, // so if there is a read that was forced to wait, retry now if (retryRdReq) { From 384705a3869726ceafc835b736c901fc394e7f07 Mon Sep 17 00:00:00 2001 From: Ayaz Akram Date: Mon, 11 May 2020 12:43:24 -0700 Subject: [PATCH 12/56] arch-riscv,tests: small update to make gem5.fast compile This small change is meant to enable gem5.fast compilation for riscv. Also, the riscv tests based on gem5.fast work now and are removed from .testignore. Change-Id: Id9c96d8e4682a74ec1d77a66eae53d6f9b64d302 Issue-On: https://gem5.atlassian.net/browse/GEM5-526 Issue-On: https://gem5.atlassian.net/browse/GEM5-527 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28893 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/arch/riscv/pagetable_walker.cc | 5 ++--- tests/gem5/.testignore | 5 ----- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/arch/riscv/pagetable_walker.cc b/src/arch/riscv/pagetable_walker.cc index 6ec118d569..786cb8193e 100644 --- a/src/arch/riscv/pagetable_walker.cc +++ b/src/arch/riscv/pagetable_walker.cc @@ -386,10 +386,9 @@ Walker::WalkerState::stepWalk(PacketPtr &write) if (!functional) walker->tlb->insert(entry.vaddr, entry); else { - Addr offset = entry.vaddr & mask(entry.logBytes); - Addr paddr = entry.paddr << PageShift | offset; DPRINTF(PageTableWalker, "Translated %#x -> %#x\n", - entry.vaddr, paddr); + entry.vaddr, entry.paddr << PageShift | + (entry.vaddr & mask(entry.logBytes))); } } endWalk(); diff --git a/tests/gem5/.testignore b/tests/gem5/.testignore index cc61aa6133..b8cfc7f508 100644 --- a/tests/gem5/.testignore +++ b/tests/gem5/.testignore @@ -20,12 +20,7 @@ test-insttest-rv64i-linux-TimingSimpleCPU-RISCV-x86_64-debug test-insttest-rv64i-linux-DerivO3CPU-RISCV-x86_64-debug test-insttest-linux-AtomicSimpleCPU-SPARC-x86_64-debug test-insttest-linux-TimingSimpleCPU-SPARC-x86_64-debug -test-insttest-rv64a-linux-MinorCPU-RISCV-x86_64-fast -test-insttest-rv64c-linux-MinorCPU-RISCV-x86_64-fast -test-insttest-rv64d-linux-MinorCPU-RISCV-x86_64-fast -test-insttest-rv64f-linux-MinorCPU-RISCV-x86_64-fast test-insttest-rv64i-linux-MinorCPU-RISCV-x86_64-fast -test-insttest-rv64m-linux-MinorCPU-RISCV-x86_64-fast test-insttest-rv64i-linux-AtomicSimpleCPU-RISCV-x86_64-fast test-insttest-rv64i-linux-TimingSimpleCPU-RISCV-x86_64-fast test-insttest-rv64i-linux-DerivO3CPU-RISCV-x86_64-fast From 2d6cd436f795b9159da753aae799acfbcc73560a Mon Sep 17 00:00:00 2001 From: Giacomo Travaglini Date: Mon, 11 May 2020 10:01:46 +0100 Subject: [PATCH 13/56] scons: Add readCommandWithReturn helper In this way it will be possible to reliably catch any error in the command execution which is not raising an exception to Popen. Change-Id: I4dc15648423f9bb8e8a470d97291dbd065c48eba Signed-off-by: Giacomo Travaglini Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28847 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/python/m5/util/__init__.py | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/src/python/m5/util/__init__.py b/src/python/m5/util/__init__.py index 98a7a08dd2..c59f40a811 100644 --- a/src/python/m5/util/__init__.py +++ b/src/python/m5/util/__init__.py @@ -1,4 +1,4 @@ -# Copyright (c) 2016 ARM Limited +# Copyright (c) 2016, 2020 ARM Limited # All rights reserved. # # The license below extends only to copyright in the software and shall @@ -177,9 +177,16 @@ def printList(items, indent=4): line += item print(line) -def readCommand(cmd, **kwargs): - """run the command cmd, read the results and return them - this is sorta like `cmd` in shell""" +def readCommandWithReturn(cmd, **kwargs): + """ + run the command cmd, read the results and return them + this is sorta like `cmd` in shell + + :param cmd: command to run with Popen + :type cmd: string, list + :returns: pair consisting on Popen retcode and the command stdout + :rtype: (int, string) + """ from subprocess import Popen, PIPE, STDOUT if isinstance(cmd, str): @@ -196,10 +203,23 @@ def readCommand(cmd, **kwargs): subp = Popen(cmd, **kwargs) except Exception as e: if no_exception: - return exception + return -1, exception raise - return subp.communicate()[0].decode('utf-8') + output = subp.communicate()[0].decode('utf-8') + return subp.returncode, output + +def readCommand(cmd, **kwargs): + """ + run the command cmd, read the results and return them + this is sorta like `cmd` in shell + + :param cmd: command to run with Popen + :type cmd: string, list + :returns: command stdout + :rtype: string + """ + return readCommandWithReturn(cmd, **kwargs)[1] def makeDir(path): """Make a directory if it doesn't exist. If the path does exist, From 0bc5d77ed27e0765953d93c2376a4b4aea675a01 Mon Sep 17 00:00:00 2001 From: Jason Lowe-Power Date: Wed, 6 May 2020 17:38:41 -0700 Subject: [PATCH 14/56] scons: Update python-config flags for python3.8 Starting in python 3.8 the python3-config utility requires the --embed flag to output -lpython3.8. Without this flag, gem5 won't link to the python library. More details: https://bugs.python.org/issue36721 https://github.com/python/cpython/pull/13500 Change-Id: Id9c63577dcd2defa7ae62cc32e042c4a245e7082 Signed-off-by: Jason Lowe-Power Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28687 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- SConstruct | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/SConstruct b/SConstruct index ba4affaf7a..b7608a8b2a 100755 --- a/SConstruct +++ b/SConstruct @@ -97,7 +97,7 @@ import SCons import SCons.Node import SCons.Node.FS -from m5.util import compareVersions, readCommand +from m5.util import compareVersions, readCommand, readCommandWithReturn help_texts = { "options" : "", @@ -683,8 +683,21 @@ if main['USE_PYTHON']: # Read the linker flags and split them into libraries and other link # flags. The libraries are added later through the call the CheckLib. - py_ld_flags = readCommand([python_config, '--ldflags'], - exception='').split() + # Note: starting in Python 3.8 the --embed flag is required to get the + # -lpython3.8 linker flag + retcode, cmd_stdout = readCommandWithReturn( + [python_config, '--ldflags', '--embed'], exception='') + if retcode != 0: + # If --embed isn't detected then we're running python <3.8 + retcode, cmd_stdout = readCommandWithReturn( + [python_config, '--ldflags'], exception='') + + # Checking retcode again + if retcode != 0: + error("Failing on python-config --ldflags command") + + py_ld_flags = cmd_stdout.split() + py_libs = [] for lib in py_ld_flags: if not lib.startswith('-l'): From 69e78667859ed7058cee34501c2a0befec6dfdf6 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Fri, 8 May 2020 14:42:46 -0700 Subject: [PATCH 15/56] misc: Added Dockerfile for Ubuntu 20.04 This Dockerfile creates an image which simulates an Ubuntu 20.04 environment. Unlike the Ubuntu 18.04 Dockerfile, this does not use Python2. It uses exclusively Python3. Ubuntu 20.04 has Python3 installed by default. The image this Dockerfile creates can be obtained from "gcr.io/gem5-test/ubuntu-20.04_all-dependencies". To pull: docker pull gcr.io/gem5-test/ubuntu-20.04_all-dependencies Change-Id: I73b51028e0d6a3198aa6e7b1906d20ed6eb6c815 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28889 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- .../ubuntu-20.04_all-dependencies/Dockerfile | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 util/dockerfiles/ubuntu-20.04_all-dependencies/Dockerfile diff --git a/util/dockerfiles/ubuntu-20.04_all-dependencies/Dockerfile b/util/dockerfiles/ubuntu-20.04_all-dependencies/Dockerfile new file mode 100644 index 0000000000..814ef75d6f --- /dev/null +++ b/util/dockerfiles/ubuntu-20.04_all-dependencies/Dockerfile @@ -0,0 +1,35 @@ +# Copyright (c) 2020 The Regents of the University of California +# All Rights Reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +FROM ubuntu:20.04 + +ENV DEBIAN_FRONTEND=noninteractive +RUN apt -y update +RUN apt -y upgrade +RUN apt -y install build-essential git m4 scons zlib1g zlib1g-dev \ + libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev \ + python3-dev python3-six python-is-python3 doxygen libboost-all-dev \ + libhdf5-serial-dev python3-pydot libpng-dev From 30c58a20cc22bd34a89ac7f9a35acb16268ee202 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Fri, 8 May 2020 14:54:40 -0700 Subject: [PATCH 16/56] misc: Removed python3 Dockerfile This was previously used to test gem5 being compiled and run in a Python3 environment. This is redundant with the introduction of "util/dockerfiles/ubuntu-20.04_all-dependencies", which uses python3 exclusively. Change-Id: Ie837da338c3985ba92aff84144948a23fd6ece3f Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28890 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- util/dockerfiles/python3/Dockerfile | 37 ----------------------------- 1 file changed, 37 deletions(-) delete mode 100644 util/dockerfiles/python3/Dockerfile diff --git a/util/dockerfiles/python3/Dockerfile b/util/dockerfiles/python3/Dockerfile deleted file mode 100644 index 2529f364cf..0000000000 --- a/util/dockerfiles/python3/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright (c) 2020 The Regents of the University of California -# All Rights Reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer; -# redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution; -# neither the name of the copyright holders nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -FROM ubuntu:18.04 - -RUN apt -y update -RUN apt -y upgrade -RUN apt -y install build-essential git m4 scons zlib1g zlib1g-dev \ - libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev \ - python-dev python python3-dev python3.6 python-six python3-venv - -ENV VIRTUAL_ENV "/venv" -RUN python3 -m venv $VIRTUAL_ENV -ENV PATH "$VIRTUAL_ENV/bin:$PATH" From 66c5aa5fbf80db98a52af72c50d4870443eaeec2 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 11 May 2020 10:46:12 -0700 Subject: [PATCH 17/56] misc: Added python-six as a dependency in 18.04 docker Previously the docker utilized Python-Pip. This is an intermediate dependency we don't need. We can install the Python-six module directly via the APT framework. Change-Id: I30e3e1cdca802ca19422140f39af7dc9dc166ed7 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28891 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- util/dockerfiles/ubuntu-18.04_all-dependencies/Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/util/dockerfiles/ubuntu-18.04_all-dependencies/Dockerfile b/util/dockerfiles/ubuntu-18.04_all-dependencies/Dockerfile index 95923f5d9a..a0064b6aa9 100644 --- a/util/dockerfiles/ubuntu-18.04_all-dependencies/Dockerfile +++ b/util/dockerfiles/ubuntu-18.04_all-dependencies/Dockerfile @@ -30,5 +30,4 @@ RUN apt -y update RUN apt -y upgrade RUN apt -y install build-essential git m4 scons zlib1g zlib1g-dev \ libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev \ - python-dev python python-pip doxygen -RUN pip install six + python-dev python python-six doxygen From fcca5f3030ad7d25a552ac742b9e82838dec3863 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 11 May 2020 11:08:01 -0700 Subject: [PATCH 18/56] misc: Added missing optional dependencies to 18.04 Docker Change-Id: Ibc43664f99ce9fbd28d14352243fb17b7754289b Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28892 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- util/dockerfiles/ubuntu-18.04_all-dependencies/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/util/dockerfiles/ubuntu-18.04_all-dependencies/Dockerfile b/util/dockerfiles/ubuntu-18.04_all-dependencies/Dockerfile index a0064b6aa9..95511a8a83 100644 --- a/util/dockerfiles/ubuntu-18.04_all-dependencies/Dockerfile +++ b/util/dockerfiles/ubuntu-18.04_all-dependencies/Dockerfile @@ -30,4 +30,5 @@ RUN apt -y update RUN apt -y upgrade RUN apt -y install build-essential git m4 scons zlib1g zlib1g-dev \ libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev \ - python-dev python python-six doxygen + python-dev python python-six doxygen libboost-all-dev libhdf5-serial-dev \ + python-pydot libpng-dev From 9957d71bf4b5f7893923d4dbe389db9a1317104c Mon Sep 17 00:00:00 2001 From: Mark Hildebrand Date: Tue, 12 May 2020 10:06:01 -0700 Subject: [PATCH 19/56] misc: Get gem5 to build with Clang 8 Added missing overrides: - src/mem/token_port.hh - src/sim/power/mathexpr_powermodel.hh Remove Unused static constants: - src/arch/x86/process.cc Related Issue: https://gem5.atlassian.net/projects/GEM5/issues/GEM5-534 Change-Id: Icc725e2522dcee919e299f4ea7a9f1773f5dfa4d Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28947 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/arch/x86/process.cc | 26 -------------------------- src/mem/token_port.hh | 2 +- src/sim/power/mathexpr_powermodel.hh | 4 ++-- 3 files changed, 3 insertions(+), 29 deletions(-) diff --git a/src/arch/x86/process.cc b/src/arch/x86/process.cc index f377e2a2b6..1b7fd3e8b5 100644 --- a/src/arch/x86/process.cc +++ b/src/arch/x86/process.cc @@ -67,32 +67,6 @@ using namespace std; using namespace X86ISA; -static const int ArgumentReg[] = { - INTREG_RDI, - INTREG_RSI, - INTREG_RDX, - // This argument register is r10 for syscalls and rcx for C. - INTREG_R10W, - // INTREG_RCX, - INTREG_R8W, - INTREG_R9W -}; - -static const int NumArgumentRegs M5_VAR_USED = - sizeof(ArgumentReg) / sizeof(const int); - -static const int ArgumentReg32[] = { - INTREG_EBX, - INTREG_ECX, - INTREG_EDX, - INTREG_ESI, - INTREG_EDI, - INTREG_EBP -}; - -static const int NumArgumentRegs32 M5_VAR_USED = - sizeof(ArgumentReg) / sizeof(const int); - template class MultiLevelPageTable, LongModePTE<38, 30>, LongModePTE<29, 21>, diff --git a/src/mem/token_port.hh b/src/mem/token_port.hh index 3d74315b02..7112a41e7f 100644 --- a/src/mem/token_port.hh +++ b/src/mem/token_port.hh @@ -94,7 +94,7 @@ class TokenSlavePort : public SlavePort std::deque respQueue; - void recvRespRetry(); + void recvRespRetry() override; public: TokenSlavePort(const std::string& name, ClockedObject *owner, diff --git a/src/sim/power/mathexpr_powermodel.hh b/src/sim/power/mathexpr_powermodel.hh index 1edb800ef6..37ea1901de 100644 --- a/src/sim/power/mathexpr_powermodel.hh +++ b/src/sim/power/mathexpr_powermodel.hh @@ -64,14 +64,14 @@ class MathExprPowerModel : public PowerModelState * * @return Power (Watts) consumed by this object (dynamic component) */ - double getDynamicPower() const { return eval(dyn_expr); } + double getDynamicPower() const override { return eval(dyn_expr); } /** * Get the static power consumption. * * @return Power (Watts) consumed by this object (static component) */ - double getStaticPower() const { return eval(st_expr); } + double getStaticPower() const override { return eval(st_expr); } /** * Get the value for a variable (maps to a stat) From fae00cb1755a80252f61f43551ef74f080dca7ec Mon Sep 17 00:00:00 2001 From: Matthew Poremba Date: Tue, 12 May 2020 09:56:07 -0500 Subject: [PATCH 20/56] sim: Fixes for mremap Remapping memory was trying to map old pages to the same new page and calling MemState mapRegion unnecessarily. Properly increment the new page address and remove the redundant mapRegion as remapRegion covers its functionality. JIRA: https://gem5.atlassian.net/browse/GEM5-475 Change-Id: Ie360755cfe488b09cbd87cd0ce525b11ac446b51 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28948 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/sim/mem_state.cc | 1 + src/sim/syscall_emul.hh | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sim/mem_state.cc b/src/sim/mem_state.cc index 42d37819fa..f998fffe9a 100644 --- a/src/sim/mem_state.cc +++ b/src/sim/mem_state.cc @@ -369,6 +369,7 @@ MemState::remapRegion(Addr start_addr, Addr new_start_addr, Addr length) new_start_addr); start_addr += _pageBytes; + new_start_addr += _pageBytes; /** * The regions need to always be page-aligned otherwise the while diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh index 5bd9f54f3c..290c48e599 100644 --- a/src/sim/syscall_emul.hh +++ b/src/sim/syscall_emul.hh @@ -1177,7 +1177,6 @@ mremapFunc(SyscallDesc *desc, ThreadContext *tc, warn("returning %08p as start\n", new_start); p->memState->remapRegion(start, new_start, old_length); - p->memState->mapRegion(new_start, new_length, "remapped"); return new_start; } } From 4ce9da7a8665e481801fa2ef89c80ba8161ffcd2 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Tue, 12 May 2020 15:02:00 -0700 Subject: [PATCH 21/56] x86: Set a physical address for local accesses. This avoids problems when other parts of the simulator blindly try to retrieve the physical address. Change-Id: Ia13a2b85b9f919e1e81a6a0f67d10858e98244e5 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28987 Reviewed-by: Gabe Black Maintainer: Gabe Black Maintainer: Bobby R. Bruce Tested-by: kokoro --- src/arch/x86/tlb.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/arch/x86/tlb.cc b/src/arch/x86/tlb.cc index ceccba892f..71ab563445 100644 --- a/src/arch/x86/tlb.cc +++ b/src/arch/x86/tlb.cc @@ -206,6 +206,7 @@ TLB::translateInt(bool read, RequestPtr req, ThreadContext *tc) if (!msrAddrToIndex(regNum, vaddr)) return std::make_shared(0); + req->setPaddr(req->getVaddr()); req->setLocalAccessor( [read,regNum](ThreadContext *tc, PacketPtr pkt) { @@ -223,6 +224,7 @@ TLB::translateInt(bool read, RequestPtr req, ThreadContext *tc) // space. assert(!(IOPort & ~0xFFFF)); if (IOPort == 0xCF8 && req->getSize() == 4) { + req->setPaddr(req->getVaddr()); req->setLocalAccessor( [read](ThreadContext *tc, PacketPtr pkt) { @@ -262,6 +264,7 @@ TLB::finalizePhysical(const RequestPtr &req, req->setFlags(Request::STRICT_ORDER); uint8_t func; PseudoInst::decodeAddrOffset(paddr - m5opRange.start(), func); + req->setPaddr(req->getVaddr()); req->setLocalAccessor( [func, mode](ThreadContext *tc, PacketPtr pkt) -> Cycles { From 82c24005dd71701d071e881f3e90321a4b1a0c92 Mon Sep 17 00:00:00 2001 From: Giacomo Travaglini Date: Tue, 12 May 2020 09:42:15 +0100 Subject: [PATCH 22/56] misc: Add Arm contributions to gem5-20 RELEASE-NOTES.md * Arm architectural extensions * Arm TFA support * DRAM changes Change-Id: I434c501ee8413c8cd64af25c2c18eabf45e3ee77 Signed-off-by: Giacomo Travaglini Reviewed-by: Nikos Nikoleris Reviewed-by: Wendy Elsasser Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28908 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- RELEASE-NOTES.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 6f80906b21..0e52e5dbad 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -9,3 +9,11 @@ * Robust support for marshalling data from a function call inside the simulation to a function within gem5 using a predefined set of rules. * Workload configuration pulled out into its own object, simplifying the System object and making workload configuration more modular and flexible. * Sv39 paging has been added to the RISC-V ISA, bringing gem5 close to running Linux on RISC-V. +* Implemented ARMv8.3-CompNum, SIMD complex number extension. +* Support for Arm Trusted Firmware + u-boot with the new VExpress_GEM5_Foundation platform. +* Changes in the DRAM Controller: + 1) Added support for verifying available command bandwidth. + 2) Added support for multi-cycle commands. + 3) Added new timing parameters. + 4) Added ability to interleave bursts. + 5) Added LPDDR5 configurations. From ea91211f273ee87da9094b945a758439d91f3ff6 Mon Sep 17 00:00:00 2001 From: Jason Lowe-Power Date: Wed, 13 May 2020 17:32:58 -0700 Subject: [PATCH 23/56] util: Update style file->open for python3 Change-Id: Ibcce194b1905f0e7f29aa91fd0ff881ba879ad51 Signed-off-by: Jason Lowe-Power Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29068 Maintainer: Bobby R. Bruce Tested-by: kokoro Reviewed-by: Giacomo Travaglini --- util/style/file_types.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/util/style/file_types.py b/util/style/file_types.py index 2577492fd9..40d0c6f28d 100644 --- a/util/style/file_types.py +++ b/util/style/file_types.py @@ -104,7 +104,7 @@ def lang_type(filename, firstline=None, openok=True): # if a first line was not provided but the file is ok to open, # grab the first line of the file. if firstline is None and openok: - handle = file(filename, 'r') + handle = open(filename, 'r') firstline = handle.readline() handle.close() @@ -173,7 +173,7 @@ def update_file(dst, src, language, mutator): mode = 'r+' else: mode = 'r' - src = file(src, mode) + src = open(src, mode) orig_lines = [] @@ -196,7 +196,7 @@ def update_file(dst, src, language, mutator): elif isinstance(dst, str): # if we're not updating in place and a destination file name # was provided, create a file object - dst = file(dst, 'w') + dst = open(dst, 'w') for line in new_lines: dst.write(line) From de944f8a832ebdd55b03b42f72a329abb53ef98e Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Tue, 5 May 2020 17:13:51 -0700 Subject: [PATCH 24/56] scons: Added 'python3-config' to the config list Previously scons looked for 'python-config' and 'python2-config'. This caused an error in Python3-exclusive environments. With only python3 installed, 'python3-config' is now an option. With this setup, 'python2-config' is used by default, unless overridden by the user via the scons command line. Change-Id: I11186328b0eb0825cc53c3889b31a5345a7f40d1 Issue-on: https://gem5.atlassian.net/browse/GEM5-275 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28648 Reviewed-by: Giacomo Travaglini Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- SConstruct | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index b7608a8b2a..0a18c3d001 100755 --- a/SConstruct +++ b/SConstruct @@ -277,7 +277,7 @@ global_vars.AddVariables( ('CCFLAGS_EXTRA', 'Extra C and C++ compiler flags', ''), ('LDFLAGS_EXTRA', 'Extra linker flags', ''), ('PYTHON_CONFIG', 'Python config binary to use', - [ 'python2.7-config', 'python-config' ]), + [ 'python2.7-config', 'python-config', 'python3-config' ]), ('PROTOC', 'protoc tool', environ.get('PROTOC', 'protoc')), ('BATCH', 'Use batch pool for build and tests', False), ('BATCH_CMD', 'Batch pool submission command name', 'qdo'), From 4c7e6ce894d5979a7c0a21f7fe7ad752546fefcb Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Fri, 15 May 2020 16:29:20 -0700 Subject: [PATCH 25/56] x86: Stop setting the physical address in finalizePhysical. The physical address has already been set (it's read earlier in the function), and so doesn't need to be set again. Reading the virtual address can cause an assert if the virtual address had never been set in the first place, for example when an access comes from KVM which might give you an access to complete which is based on a physical address only. Change-Id: Ic46a40b1a94235538b5bd53065e5019273b3d3f3 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29172 Maintainer: Jason Lowe-Power Reviewed-by: Pouya Fotouhi Tested-by: kokoro --- src/arch/x86/tlb.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/arch/x86/tlb.cc b/src/arch/x86/tlb.cc index 71ab563445..80684230b7 100644 --- a/src/arch/x86/tlb.cc +++ b/src/arch/x86/tlb.cc @@ -264,7 +264,6 @@ TLB::finalizePhysical(const RequestPtr &req, req->setFlags(Request::STRICT_ORDER); uint8_t func; PseudoInst::decodeAddrOffset(paddr - m5opRange.start(), func); - req->setPaddr(req->getVaddr()); req->setLocalAccessor( [func, mode](ThreadContext *tc, PacketPtr pkt) -> Cycles { From 23515fa723226c6c19706152e0e6f4e84ec1b681 Mon Sep 17 00:00:00 2001 From: Jason Lowe-Power Date: Thu, 14 May 2020 20:45:44 -0700 Subject: [PATCH 26/56] misc: Update Garnet_standalone build opts Previously, this used the ALPHA ISA which has been removed. According to the documentation on the website (https://www.gem5.org/documentation/general_docs/ruby/ garnet_synthetic_traffic/), using null ISA with no CPUs should be safe. Change-Id: I7fc55df7217887d21f4832f33b8cbb2de3498253 Signed-off-by: Jason Lowe-Power Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29087 Maintainer: Jason Lowe-Power Reviewed-by: Bobby R. Bruce Tested-by: kokoro --- build_opts/Garnet_standalone | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build_opts/Garnet_standalone b/build_opts/Garnet_standalone index df97b5b313..f749d54ca2 100644 --- a/build_opts/Garnet_standalone +++ b/build_opts/Garnet_standalone @@ -1,3 +1,3 @@ -TARGET_ISA = 'alpha' -CPU_MODELS = 'AtomicSimpleCPU,TimingSimpleCPU,O3CPU,MinorCPU' +TARGET_ISA = 'null' +CPU_MODELS = '' PROTOCOL = 'Garnet_standalone' From e2a510acefac357d83754369e6abd3e79db5d904 Mon Sep 17 00:00:00 2001 From: Jason Lowe-Power Date: Wed, 13 May 2020 17:04:29 -0700 Subject: [PATCH 27/56] configs: Updates for python3 Change-Id: Iab2f83716ea2cb19f06282f037314f2db843327a Signed-off-by: Jason Lowe-Power Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29047 Maintainer: Bobby R. Bruce Tested-by: kokoro Reviewed-by: Giacomo Travaglini --- configs/common/FSConfig.py | 7 ++++++- configs/common/FileSystemConfig.py | 2 +- configs/common/HMC.py | 4 ++-- configs/common/ObjectList.py | 6 +++--- configs/common/Options.py | 2 +- configs/common/Simulation.py | 4 ++++ configs/common/SysPaths.py | 4 ++-- configs/dram/lat_mem_rd.py | 4 ++++ configs/dram/sweep.py | 2 +- configs/example/arm/baremetal.py | 2 +- configs/example/arm/devices.py | 5 +++++ configs/example/arm/fs_bigLITTLE.py | 2 +- configs/example/arm/starter_fs.py | 2 +- configs/example/arm/starter_se.py | 2 +- configs/example/read_config.py | 24 ++++++++++++------------ configs/ruby/AMD_Base_Constructor.py | 2 +- configs/ruby/GPU_RfO.py | 8 ++++++-- configs/ruby/GPU_VIPER.py | 16 ++++++++++------ configs/ruby/GPU_VIPER_Baseline.py | 8 ++++++-- configs/ruby/GPU_VIPER_Region.py | 6 +++++- configs/ruby/Garnet_standalone.py | 2 +- configs/ruby/MESI_Three_Level.py | 12 ++++++------ configs/ruby/MESI_Two_Level.py | 4 ++-- configs/ruby/MI_example.py | 6 +++--- configs/ruby/MOESI_AMD_Base.py | 12 ++++++------ configs/ruby/MOESI_CMP_directory.py | 4 ++-- configs/ruby/MOESI_CMP_token.py | 4 ++-- configs/ruby/MOESI_hammer.py | 6 +++--- configs/topologies/MeshDirCorners_XY.py | 2 +- configs/topologies/Mesh_XY.py | 2 +- 30 files changed, 100 insertions(+), 66 deletions(-) diff --git a/configs/common/FSConfig.py b/configs/common/FSConfig.py index d49ad78e75..e15459370c 100644 --- a/configs/common/FSConfig.py +++ b/configs/common/FSConfig.py @@ -41,12 +41,17 @@ from __future__ import print_function from __future__ import absolute_import +import six + import m5 from m5.objects import * from m5.util import * from common.Benchmarks import * from common import ObjectList +if six.PY3: + long = int + # Populate to reflect supported os types per target ISA os_types = { 'mips' : [ 'linux' ], 'riscv' : [ 'linux' ], # TODO that's a lie @@ -574,7 +579,7 @@ def makeLinuxX86System(mem_mode, numCPUs=1, mdesc=None, Ruby=False, # We assume below that there's at least 1MB of memory. We'll require 2 # just to avoid corner cases. - phys_mem_size = sum(map(lambda r: r.size(), self.mem_ranges)) + phys_mem_size = sum([r.size() for r in self.mem_ranges]) assert(phys_mem_size >= 0x200000) assert(len(self.mem_ranges) <= 2) diff --git a/configs/common/FileSystemConfig.py b/configs/common/FileSystemConfig.py index 97279f1bc8..ec27656e05 100644 --- a/configs/common/FileSystemConfig.py +++ b/configs/common/FileSystemConfig.py @@ -132,7 +132,7 @@ def config_filesystem(system, options = None): file_append((procdir, 'cpuinfo'), one_cpu) file_append((procdir, 'stat'), 'cpu 0 0 0 0 0 0 0\n') - for i in xrange(len(cpus)): + for i in range(len(cpus)): file_append((procdir, 'stat'), 'cpu%d 0 0 0 0 0 0 0\n' % i) # Set up /sys diff --git a/configs/common/HMC.py b/configs/common/HMC.py index c65b201b7f..c4c0acc9e3 100644 --- a/configs/common/HMC.py +++ b/configs/common/HMC.py @@ -432,7 +432,7 @@ def config_hmc_dev(opt, system, hmc_host): for i in range(numx*(opt.mem_chunk-1))] # Buffer iterator - it = iter(range(len(system.hmc_dev.buffers))) + it = iter(list(range(len(system.hmc_dev.buffers)))) # necesarry to add system_port to one of the xbar system.system_port = system.hmc_dev.xbar[3].slave @@ -443,7 +443,7 @@ def config_hmc_dev(opt, system, hmc_host): # connect xbar to all other xbars except itself if i != j: # get the next index of buffer - index = it.next() + index = next(it) # Change the default values for ranges of bridge system.hmc_dev.buffers[index].ranges = system.mem_ranges[ diff --git a/configs/common/ObjectList.py b/configs/common/ObjectList.py index 8bffa5fe08..c91ea0c653 100644 --- a/configs/common/ObjectList.py +++ b/configs/common/ObjectList.py @@ -75,7 +75,7 @@ class ObjectList(object): print("Available {} classes:".format(self.base_cls)) doc_wrapper = TextWrapper(initial_indent="\t\t", subsequent_indent="\t\t") - for name, cls in self._sub_classes.items(): + for name, cls in list(self._sub_classes.items()): print("\t{}".format(name)) # Try to extract the class documentation from the class help @@ -87,7 +87,7 @@ class ObjectList(object): if self._aliases: print("\Aliases:") - for alias, target in self._aliases.items(): + for alias, target in list(self._aliases.items()): print("\t{} => {}".format(alias, target)) def get_names(self): @@ -156,7 +156,7 @@ class EnumList(ObjectList): def _add_objects(self): """ Add all enum values to the ObjectList """ self._sub_classes = {} - for (key, value) in self.base_cls.__members__.items(): + for (key, value) in list(self.base_cls.__members__.items()): # All Enums have a value Num_NAME at the end which we # do not want to include if not key.startswith("Num_"): diff --git a/configs/common/Options.py b/configs/common/Options.py index 6d0c6c295b..3eff04bf9a 100644 --- a/configs/common/Options.py +++ b/configs/common/Options.py @@ -110,7 +110,7 @@ def addNoISAOptions(parser): help="Specify the physical memory size (single memory)") parser.add_option("--enable-dram-powerdown", action="store_true", help="Enable low-power states in DRAMCtrl") - parser.add_option("--mem-channels-intlv", type="int", + parser.add_option("--mem-channels-intlv", type="int", default=0, help="Memory channels interleave") diff --git a/configs/common/Simulation.py b/configs/common/Simulation.py index 73a0ff5413..e53c755c6c 100644 --- a/configs/common/Simulation.py +++ b/configs/common/Simulation.py @@ -40,6 +40,7 @@ from __future__ import print_function from __future__ import absolute_import +import six import sys from os import getcwd from os.path import join as joinpath @@ -52,6 +53,9 @@ from m5.defines import buildEnv from m5.objects import * from m5.util import * +if six.PY3: + long = int + addToPath('../common') def getCPUClass(cpu_type): diff --git a/configs/common/SysPaths.py b/configs/common/SysPaths.py index f37039e1ef..440b0cfea0 100644 --- a/configs/common/SysPaths.py +++ b/configs/common/SysPaths.py @@ -55,10 +55,10 @@ class PathSearchFunc(object): paths = [ '/dist/m5/system', '/n/poolfs/z/dist/m5/system' ] # expand '~' and '~user' in paths - paths = map(os.path.expanduser, paths) + paths = list(map(os.path.expanduser, paths)) # filter out non-existent directories - paths = filter(os.path.isdir, paths) + paths = list(filter(os.path.isdir, paths)) if not paths: raise IOError( diff --git a/configs/dram/lat_mem_rd.py b/configs/dram/lat_mem_rd.py index 07f9afcbb9..9b04e4bd26 100644 --- a/configs/dram/lat_mem_rd.py +++ b/configs/dram/lat_mem_rd.py @@ -37,6 +37,7 @@ from __future__ import print_function from __future__ import absolute_import import gzip +import six import optparse import os @@ -52,6 +53,9 @@ from common import MemConfig addToPath('../../util') import protolib +if six.PY3: + long = int + # this script is helpful to observe the memory latency for various # levels in a cache hierarchy, and various cache and memory # configurations, in essence replicating the lmbench lat_mem_rd thrash diff --git a/configs/dram/sweep.py b/configs/dram/sweep.py index d3c86c3344..a340b46a58 100644 --- a/configs/dram/sweep.py +++ b/configs/dram/sweep.py @@ -73,7 +73,7 @@ parser.add_option("--rd_perc", type="int", default=100, help = "Percentage of read commands") parser.add_option("--mode", type="choice", default="DRAM", - choices=dram_generators.keys(), + choices=list(dram_generators.keys()), help = "DRAM: Random traffic; \ DRAM_ROTATE: Traffic rotating across banks and ranks") diff --git a/configs/example/arm/baremetal.py b/configs/example/arm/baremetal.py index 412625d576..04f60a19b3 100644 --- a/configs/example/arm/baremetal.py +++ b/configs/example/arm/baremetal.py @@ -203,7 +203,7 @@ def main(): help="Disk to instantiate") parser.add_argument("--readfile", type=str, default="", help = "File to return with the m5 readfile command") - parser.add_argument("--cpu", type=str, choices=cpu_types.keys(), + parser.add_argument("--cpu", type=str, choices=list(cpu_types.keys()), default="atomic", help="CPU model to use") parser.add_argument("--cpu-freq", type=str, default="4GHz") diff --git a/configs/example/arm/devices.py b/configs/example/arm/devices.py index a45188b9c8..cc8ac5ead3 100644 --- a/configs/example/arm/devices.py +++ b/configs/example/arm/devices.py @@ -38,12 +38,17 @@ from __future__ import print_function from __future__ import absolute_import +import six + import m5 from m5.objects import * m5.util.addToPath('../../') from common.Caches import * from common import ObjectList +if six.PY3: + long = int + have_kvm = "ArmV8KvmCPU" in ObjectList.cpu_list.get_names() have_fastmodel = "FastModelCortexA76" in ObjectList.cpu_list.get_names() diff --git a/configs/example/arm/fs_bigLITTLE.py b/configs/example/arm/fs_bigLITTLE.py index b7e794d58c..228d11c7f1 100644 --- a/configs/example/arm/fs_bigLITTLE.py +++ b/configs/example/arm/fs_bigLITTLE.py @@ -177,7 +177,7 @@ def addOptions(parser): help="Disks to instantiate") parser.add_argument("--bootscript", type=str, default=default_rcs, help="Linux bootscript") - parser.add_argument("--cpu-type", type=str, choices=cpu_types.keys(), + parser.add_argument("--cpu-type", type=str, choices=list(cpu_types.keys()), default="timing", help="CPU simulation mode. Default: %(default)s") parser.add_argument("--kernel-init", type=str, default="/sbin/init", diff --git a/configs/example/arm/starter_fs.py b/configs/example/arm/starter_fs.py index 7a202807e7..3033890f04 100644 --- a/configs/example/arm/starter_fs.py +++ b/configs/example/arm/starter_fs.py @@ -208,7 +208,7 @@ def main(): help="Disk to instantiate") parser.add_argument("--script", type=str, default="", help = "Linux bootscript") - parser.add_argument("--cpu", type=str, choices=cpu_types.keys(), + parser.add_argument("--cpu", type=str, choices=list(cpu_types.keys()), default="atomic", help="CPU model to use") parser.add_argument("--cpu-freq", type=str, default="4GHz") diff --git a/configs/example/arm/starter_se.py b/configs/example/arm/starter_se.py index 0f20ecc645..0003ce994d 100644 --- a/configs/example/arm/starter_se.py +++ b/configs/example/arm/starter_se.py @@ -183,7 +183,7 @@ def main(): parser.add_argument("commands_to_run", metavar="command(s)", nargs='*', help="Command(s) to run") - parser.add_argument("--cpu", type=str, choices=cpu_types.keys(), + parser.add_argument("--cpu", type=str, choices=list(cpu_types.keys()), default="atomic", help="CPU model to use") parser.add_argument("--cpu-freq", type=str, default="4GHz") diff --git a/configs/example/read_config.py b/configs/example/read_config.py index 167815c702..52a53ba576 100644 --- a/configs/example/read_config.py +++ b/configs/example/read_config.py @@ -49,7 +49,7 @@ from __future__ import print_function from __future__ import absolute_import import argparse -import ConfigParser +from six.moves import configparser import inspect import json import re @@ -63,7 +63,7 @@ if six.PY3: long = int sim_object_classes_by_name = { - cls.__name__: cls for cls in m5.objects.__dict__.values() + cls.__name__: cls for cls in list(m5.objects.__dict__.values()) if inspect.isclass(cls) and issubclass(cls, m5.objects.SimObject) } # Add some parsing functions to Param classes to handle reading in .ini @@ -129,7 +129,7 @@ param_parsers = { 'EthernetAddr': simple_parser() } -for name, parser in param_parsers.items(): +for name, parser in list(param_parsers.items()): setattr(m5.params.__dict__[name], 'parse_ini', classmethod(parser)) class PortConnection(object): @@ -193,7 +193,7 @@ class ConfigManager(object): parsed_params = {} - for param_name, param in object_class._params.items(): + for param_name, param in list(object_class._params.items()): if issubclass(param.ptype, m5.params.ParamValue): if isinstance(param, m5.params.VectorParamDesc): param_values = self.config.get_param_vector(object_name, @@ -221,7 +221,7 @@ class ConfigManager(object): if object_name == 'Null': return NULL - for param_name, param in obj.__class__._params.items(): + for param_name, param in list(obj.__class__._params.items()): if issubclass(param.ptype, m5.objects.SimObject): if isinstance(param, m5.params.VectorParamDesc): param_values = self.config.get_param_vector(object_name, @@ -286,11 +286,11 @@ class ConfigManager(object): return NULL parsed_ports = [] - for port_name, port in obj.__class__._ports.items(): + for port_name, port in list(obj.__class__._ports.items()): # Assume that unnamed ports are unconnected peers = self.config.get_port_peers(object_name, port_name) - for index, peer in zip(range(0, len(peers)), peers): + for index, peer in zip(list(range(0, len(peers))), peers): parsed_ports.append(( PortConnection(object_name, port.name, index), PortConnection.from_string(peer))) @@ -368,12 +368,12 @@ class ConfigManager(object): # Now fill in SimObject-valued parameters in the knowledge that # this won't be interpreted as becoming the parent of objects # which are already in the root hierarchy - for name, obj in self.objects_by_name.items(): + for name, obj in list(self.objects_by_name.items()): self.fill_in_simobj_parameters(name, obj) # Gather a list of all port-to-port connections connections = [] - for name, obj in self.objects_by_name.items(): + for name, obj in list(self.objects_by_name.items()): connections += self.gather_port_connections(name, obj) # Find an acceptable order to bind those port connections and @@ -415,7 +415,7 @@ class ConfigFile(object): class ConfigIniFile(ConfigFile): def __init__(self): - self.parser = ConfigParser.ConfigParser() + self.parser = configparser.ConfigParser() def load(self, config_file): self.parser.read(config_file) @@ -466,7 +466,7 @@ class ConfigJsonFile(ConfigFile): for elem in node: self.find_all_objects(elem) elif isinstance(node, dict): - for elem in node.values(): + for elem in list(node.values()): self.find_all_objects(elem) def load(self, config_file): @@ -505,7 +505,7 @@ class ConfigJsonFile(ConfigFile): obj = self.object_dicts[object_name] children = [] - for name, node in obj.items(): + for name, node in list(obj.items()): if self.is_sim_object(node): children.append((name, node['path'])) elif isinstance(node, list) and node != [] and all([ diff --git a/configs/ruby/AMD_Base_Constructor.py b/configs/ruby/AMD_Base_Constructor.py index cd51bcac60..a347f43739 100644 --- a/configs/ruby/AMD_Base_Constructor.py +++ b/configs/ruby/AMD_Base_Constructor.py @@ -34,7 +34,7 @@ import m5 from m5.objects import * from m5.defines import buildEnv from m5.util import addToPath, convert -from CntrlBase import * +from .CntrlBase import * addToPath('../') diff --git a/configs/ruby/GPU_RfO.py b/configs/ruby/GPU_RfO.py index 26bea0c8fd..58711ea0d0 100644 --- a/configs/ruby/GPU_RfO.py +++ b/configs/ruby/GPU_RfO.py @@ -29,19 +29,23 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. +import six import math import m5 from m5.objects import * from m5.defines import buildEnv from m5.util import addToPath -from Ruby import create_topology -from Ruby import send_evicts +from .Ruby import create_topology +from .Ruby import send_evicts addToPath('../') from topologies.Cluster import Cluster from topologies.Crossbar import Crossbar +if six.PY3: + long = int + class CntrlBase: _seqs = 0 @classmethod diff --git a/configs/ruby/GPU_VIPER.py b/configs/ruby/GPU_VIPER.py index f4ecc414df..58572ae193 100644 --- a/configs/ruby/GPU_VIPER.py +++ b/configs/ruby/GPU_VIPER.py @@ -29,19 +29,23 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. +import six import math import m5 from m5.objects import * from m5.defines import buildEnv from m5.util import addToPath -from Ruby import create_topology -from Ruby import send_evicts +from .Ruby import create_topology +from .Ruby import send_evicts addToPath('../') from topologies.Cluster import Cluster from topologies.Crossbar import Crossbar +if six.PY3: + long = int + class CntrlBase: _seqs = 0 @classmethod @@ -516,16 +520,16 @@ def create_system(options, full_system, system, dma_devices, bootmem, # Register CPUs and caches for each CorePair and directory (SE mode only) if not full_system: - for i in xrange((options.num_cpus + 1) // 2): + for i in range((options.num_cpus + 1) // 2): FileSystemConfig.register_cpu(physical_package_id = 0, core_siblings = \ - xrange(options.num_cpus), + range(options.num_cpus), core_id = i*2, thread_siblings = []) FileSystemConfig.register_cpu(physical_package_id = 0, core_siblings = \ - xrange(options.num_cpus), + range(options.num_cpus), core_id = i*2+1, thread_siblings = []) @@ -564,7 +568,7 @@ def create_system(options, full_system, system, dma_devices, bootmem, line_size = options.cacheline_size, assoc = options.l3_assoc, cpus = [n for n in - xrange(options.num_cpus)]) + range(options.num_cpus)]) gpuCluster = None if hasattr(options, 'bw_scalor') and options.bw_scalor > 0: diff --git a/configs/ruby/GPU_VIPER_Baseline.py b/configs/ruby/GPU_VIPER_Baseline.py index 46fdec9a3b..5388a4ef6b 100644 --- a/configs/ruby/GPU_VIPER_Baseline.py +++ b/configs/ruby/GPU_VIPER_Baseline.py @@ -29,19 +29,23 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. +import six import math import m5 from m5.objects import * from m5.defines import buildEnv from m5.util import addToPath -from Ruby import create_topology -from Ruby import send_evicts +from .Ruby import create_topology +from .Ruby import send_evicts addToPath('../') from topologies.Cluster import Cluster from topologies.Crossbar import Crossbar +if six.PY3: + long = int + class CntrlBase: _seqs = 0 @classmethod diff --git a/configs/ruby/GPU_VIPER_Region.py b/configs/ruby/GPU_VIPER_Region.py index 7b15403140..a8b39aeae3 100644 --- a/configs/ruby/GPU_VIPER_Region.py +++ b/configs/ruby/GPU_VIPER_Region.py @@ -29,17 +29,21 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. +import six import math import m5 from m5.objects import * from m5.defines import buildEnv from m5.util import addToPath -from Ruby import send_evicts +from .Ruby import send_evicts addToPath('../') from topologies.Cluster import Cluster +if six.PY3: + long = int + class CntrlBase: _seqs = 0 @classmethod diff --git a/configs/ruby/Garnet_standalone.py b/configs/ruby/Garnet_standalone.py index 4aee7a46d2..4b7ca8d122 100644 --- a/configs/ruby/Garnet_standalone.py +++ b/configs/ruby/Garnet_standalone.py @@ -29,7 +29,7 @@ import m5 from m5.objects import * from m5.defines import buildEnv from m5.util import addToPath -from Ruby import create_topology, create_directories +from .Ruby import create_topology, create_directories # # Declare caches used by the protocol diff --git a/configs/ruby/MESI_Three_Level.py b/configs/ruby/MESI_Three_Level.py index 0bd893e380..7cfb83242f 100644 --- a/configs/ruby/MESI_Three_Level.py +++ b/configs/ruby/MESI_Three_Level.py @@ -31,8 +31,8 @@ import math import m5 from m5.objects import * from m5.defines import buildEnv -from Ruby import create_topology, create_directories -from Ruby import send_evicts +from .Ruby import create_topology, create_directories +from .Ruby import send_evicts from common import FileSystemConfig # @@ -294,10 +294,10 @@ def create_system(options, full_system, system, dma_ports, bootmem, all_cntrls = all_cntrls + [io_controller] # Register configuration with filesystem else: - for i in xrange(options.num_clusters): - for j in xrange(num_cpus_per_cluster): + for i in range(options.num_clusters): + for j in range(num_cpus_per_cluster): FileSystemConfig.register_cpu(physical_package_id = 0, - core_siblings = xrange(options.num_cpus), + core_siblings = range(options.num_cpus), core_id = i*num_cpus_per_cluster+j, thread_siblings = []) @@ -329,7 +329,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, num_l2caches_per_cluster)+'B', line_size = options.cacheline_size, assoc = options.l2_assoc, - cpus = [n for n in xrange(i*num_cpus_per_cluster, \ + cpus = [n for n in range(i*num_cpus_per_cluster, \ (i+1)*num_cpus_per_cluster)]) ruby_system.network.number_of_virtual_networks = 3 diff --git a/configs/ruby/MESI_Two_Level.py b/configs/ruby/MESI_Two_Level.py index 3ddf8eff71..77fef767fe 100644 --- a/configs/ruby/MESI_Two_Level.py +++ b/configs/ruby/MESI_Two_Level.py @@ -29,8 +29,8 @@ import math import m5 from m5.objects import * from m5.defines import buildEnv -from Ruby import create_topology, create_directories -from Ruby import send_evicts +from .Ruby import create_topology, create_directories +from .Ruby import send_evicts # # Declare caches used by the protocol diff --git a/configs/ruby/MI_example.py b/configs/ruby/MI_example.py index 2ea6699d8a..264f709ecc 100644 --- a/configs/ruby/MI_example.py +++ b/configs/ruby/MI_example.py @@ -29,8 +29,8 @@ import math import m5 from m5.objects import * from m5.defines import buildEnv -from Ruby import create_topology, create_directories -from Ruby import send_evicts +from .Ruby import create_topology, create_directories +from .Ruby import send_evicts # # Declare caches used by the protocol @@ -113,7 +113,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, l1_cntrl.responseToCache = MessageBuffer(ordered = True) l1_cntrl.responseToCache.slave = ruby_system.network.master - phys_mem_size = sum(map(lambda r: r.size(), system.mem_ranges)) + phys_mem_size = sum([r.size() for r in system.mem_ranges]) assert(phys_mem_size % options.num_dirs == 0) mem_module_size = phys_mem_size / options.num_dirs diff --git a/configs/ruby/MOESI_AMD_Base.py b/configs/ruby/MOESI_AMD_Base.py index aa9dd50490..91ff4d232a 100644 --- a/configs/ruby/MOESI_AMD_Base.py +++ b/configs/ruby/MOESI_AMD_Base.py @@ -34,8 +34,8 @@ import m5 from m5.objects import * from m5.defines import buildEnv from m5.util import addToPath -from Ruby import create_topology -from Ruby import send_evicts +from .Ruby import create_topology +from .Ruby import send_evicts from common import FileSystemConfig addToPath('../') @@ -328,16 +328,16 @@ def create_system(options, full_system, system, dma_devices, bootmem, # Register CPUs and caches for each CorePair and directory (SE mode only) if not full_system: - for i in xrange((options.num_cpus + 1) // 2): + for i in range((options.num_cpus + 1) // 2): FileSystemConfig.register_cpu(physical_package_id = 0, core_siblings = - xrange(options.num_cpus), + range(options.num_cpus), core_id = i*2, thread_siblings = []) FileSystemConfig.register_cpu(physical_package_id = 0, core_siblings = - xrange(options.num_cpus), + range(options.num_cpus), core_id = i*2+1, thread_siblings = []) @@ -376,7 +376,7 @@ def create_system(options, full_system, system, dma_devices, bootmem, line_size = options.cacheline_size, assoc = options.l3_assoc, cpus = [n for n in - xrange(options.num_cpus)]) + range(options.num_cpus)]) # Assuming no DMA devices assert(len(dma_devices) == 0) diff --git a/configs/ruby/MOESI_CMP_directory.py b/configs/ruby/MOESI_CMP_directory.py index 2b7770a948..8778b61dcb 100644 --- a/configs/ruby/MOESI_CMP_directory.py +++ b/configs/ruby/MOESI_CMP_directory.py @@ -41,8 +41,8 @@ import math import m5 from m5.objects import * from m5.defines import buildEnv -from Ruby import create_topology, create_directories -from Ruby import send_evicts +from .Ruby import create_topology, create_directories +from .Ruby import send_evicts # # Declare caches used by the protocol diff --git a/configs/ruby/MOESI_CMP_token.py b/configs/ruby/MOESI_CMP_token.py index a2c41c08a0..80944f5660 100644 --- a/configs/ruby/MOESI_CMP_token.py +++ b/configs/ruby/MOESI_CMP_token.py @@ -29,8 +29,8 @@ import math import m5 from m5.objects import * from m5.defines import buildEnv -from Ruby import create_topology, create_directories -from Ruby import send_evicts +from .Ruby import create_topology, create_directories +from .Ruby import send_evicts # # Declare caches used by the protocol diff --git a/configs/ruby/MOESI_hammer.py b/configs/ruby/MOESI_hammer.py index 5aac38b3e9..c83bb72dcd 100644 --- a/configs/ruby/MOESI_hammer.py +++ b/configs/ruby/MOESI_hammer.py @@ -29,8 +29,8 @@ import math import m5 from m5.objects import * from m5.defines import buildEnv -from Ruby import create_topology, create_directories -from Ruby import send_evicts +from .Ruby import create_topology, create_directories +from .Ruby import send_evicts from common import FileSystemConfig # @@ -257,7 +257,7 @@ def create_system(options, full_system, system, dma_ports, bootmem, all_cntrls = all_cntrls + [io_controller] # Register configuration with filesystem else: - for i in xrange(options.num_cpus): + for i in range(options.num_cpus): FileSystemConfig.register_cpu(physical_package_id = 0, core_siblings = [], core_id = i, diff --git a/configs/topologies/MeshDirCorners_XY.py b/configs/topologies/MeshDirCorners_XY.py index 6d97f8228d..7d065de5b9 100644 --- a/configs/topologies/MeshDirCorners_XY.py +++ b/configs/topologies/MeshDirCorners_XY.py @@ -101,7 +101,7 @@ class MeshDirCorners_XY(SimpleTopology): # NUMA Node for each quadrant # With odd columns or rows, the nodes will be unequal numa_nodes = [ [], [], [], []] - for i in xrange(num_routers): + for i in range(num_routers): if i % num_columns < num_columns / 2 and \ i < num_routers / 2: numa_nodes[0].append(i) diff --git a/configs/topologies/Mesh_XY.py b/configs/topologies/Mesh_XY.py index 3ae34857ad..64a8506160 100644 --- a/configs/topologies/Mesh_XY.py +++ b/configs/topologies/Mesh_XY.py @@ -176,6 +176,6 @@ class Mesh_XY(SimpleTopology): # Register nodes with filesystem def registerTopology(self, options): - for i in xrange(options.num_cpus): + for i in range(options.num_cpus): FileSystemConfig.register_node([i], MemorySize(options.mem_size) / options.num_cpus, i) From eaacf1b6b1ecdb36370daba34981966fc1753a0b Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 18 May 2020 14:11:55 -0700 Subject: [PATCH 28/56] misc,sim: Fixed std::array bracket compiler error For versions of Clang before 6.0, Clang returns an error if and std::array initialization is not encompassed in two sets of encompassing braces. This is a known compiler bug: https://bugs.llvm.org/show_bug.cgi?id=21629. As we support Clang 3.9 onwards, we are required to include these redundant braces to ensure compilation. They do not produce any ill-effects when using later clang compilers or with any GCC compiler gem5 presently supports. Change-Id: Ia512a9b9f583b1cfa28f9fc4c24f6e202e46b4cb Issue-on: https://gem5.atlassian.net/browse/GEM5-563 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29294 Reviewed-by: Pouya Fotouhi Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/arch/arm/semihosting.cc | 8 ++++---- src/sim/pseudo_inst.cc | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/arch/arm/semihosting.cc b/src/arch/arm/semihosting.cc index 7711a86c0a..a7a4d2ab91 100644 --- a/src/arch/arm/semihosting.cc +++ b/src/arch/arm/semihosting.cc @@ -581,10 +581,10 @@ ArmSemihosting::callHeapInfo32(ThreadContext *tc, Addr block_addr) uint64_t heap_base, heap_limit, stack_base, stack_limit; gatherHeapInfo(tc, false, heap_base, heap_limit, stack_base, stack_limit); - std::array block = { + std::array block = {{ (uint32_t)heap_base, (uint32_t)heap_limit, (uint32_t)stack_base, (uint32_t)stack_limit - }; + }}; portProxy(tc).write(block_addr, block, ArmISA::byteOrder(tc)); return retOK(0); @@ -596,9 +596,9 @@ ArmSemihosting::callHeapInfo64(ThreadContext *tc, Addr block_addr) uint64_t heap_base, heap_limit, stack_base, stack_limit; gatherHeapInfo(tc, true, heap_base, heap_limit, stack_base, stack_limit); - std::array block = { + std::array block = {{ heap_base, heap_limit, stack_base, stack_limit - }; + }}; portProxy(tc).write(block_addr, block, ArmISA::byteOrder(tc)); return retOK(0); diff --git a/src/sim/pseudo_inst.cc b/src/sim/pseudo_inst.cc index b11a5a4436..203afc0878 100644 --- a/src/sim/pseudo_inst.cc +++ b/src/sim/pseudo_inst.cc @@ -285,7 +285,7 @@ initParam(ThreadContext *tc, uint64_t key_str1, uint64_t key_str2) char key[len]; memset(key, '\0', len); - std::array key_regs = { key_str1, key_str2 }; + std::array key_regs = {{ key_str1, key_str2 }}; key_regs = letoh(key_regs); memcpy(key, key_regs.data(), sizeof(key_regs)); From 6a54bb7242fec370e33fcc344810d93f5328dc12 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 18 May 2020 10:09:52 -0700 Subject: [PATCH 29/56] scons: Revert LTO and partial linking for gcc >=8.1 This reverts commit f41abbdb5cf5c67233f3d730885d43517969afda, "scons: Enable LTO and partial linking with gcc >= 8.1." LTO and partial linking does not work on GCC 9.3 on Ubuntu 20.04 when compiling gem5.fast. This error was exposed via the following command: ``` docker run -u $UID:$GID --volume $(pwd):/gem5 -w /gem5 --rm \ gcr.io/gem5-test/ubuntu-20.04_all-dependencies:latest scons \ build/MIPS/gem5.fast ``` The following error was received: ``` usr/bin/ld: cannot find lib.fo.partial.lto.o: No such file or directory /usr/bin/ld: error: could not unlink output file collect2: error: ld returned 1 exit status scons: *** [build/MIPS/mem/ruby/system/lib.fo.partial] Error 1 ``` Issue-on: https://gem5.atlassian.net/browse/GEM5-555 https://gem5.atlassian.net/browse/GEM5-557 Change-Id: Id9e7fc81aec9f94524acc92c05aabdf96bd284cd Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29272 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- SConstruct | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/SConstruct b/SConstruct index 0a18c3d001..82fad3b957 100755 --- a/SConstruct +++ b/SConstruct @@ -404,22 +404,27 @@ if main['GCC']: main['GCC_VERSION'] = gcc_version - if compareVersions(gcc_version, '4.9') >= 0 and \ - compareVersions(gcc_version, '8.1') < 0: + if compareVersions(gcc_version, '4.9') >= 0: # Incremental linking with LTO is currently broken in gcc versions - # 4.9 to 8.1. + # 4.9 and above. A version where everything works completely hasn't + # yet been identified. # # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67548 - # + main['BROKEN_INCREMENTAL_LTO'] = True + if compareVersions(gcc_version, '6.0') >= 0: # gcc versions 6.0 and greater accept an -flinker-output flag which # selects what type of output the linker should generate. This is # necessary for incremental lto to work, but is also broken in - # versions of gcc up to 8.1. + # current versions of gcc. It may not be necessary in future + # versions. We add it here since it might be, and as a reminder that + # it exists. It's excluded if lto is being forced. # # https://gcc.gnu.org/gcc-6/changes.html # https://gcc.gnu.org/ml/gcc-patches/2015-11/msg03161.html # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69866 - main['BROKEN_INCREMENTAL_LTO'] = True + if not GetOption('force_lto'): + main.Append(PSHLINKFLAGS='-flinker-output=rel') + main.Append(PLINKFLAGS='-flinker-output=rel') disable_lto = GetOption('no_lto') if not disable_lto and main.get('BROKEN_INCREMENTAL_LTO', False) and \ From 2a7c1decf17169b2b5aeaf1d528fb27737cf2f44 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 20 Apr 2020 16:58:34 -0700 Subject: [PATCH 30/56] misc: Tagged API methods in sim/drain.hh Change-Id: Id584d0be027048064d5f650ae0f2ea5a7f075a47 Issue-on: https://gem5.atlassian.net/browse/GEM5-172 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/27988 Reviewed-by: Bobby R. Bruce Maintainer: Bobby R. Bruce Tested-by: kokoro --- src/doxygen/group_definitions.hh | 5 +++++ src/sim/drain.hh | 36 +++++++++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 src/doxygen/group_definitions.hh diff --git a/src/doxygen/group_definitions.hh b/src/doxygen/group_definitions.hh new file mode 100644 index 0000000000..8b3e14cd59 --- /dev/null +++ b/src/doxygen/group_definitions.hh @@ -0,0 +1,5 @@ +/** + * @defgroup api_drain The Drain API. + * + * These methods relate to the "Drainable" interface. + */ diff --git a/src/sim/drain.hh b/src/sim/drain.hh index a775c068e8..0d74923713 100644 --- a/src/sim/drain.hh +++ b/src/sim/drain.hh @@ -65,6 +65,8 @@ class Drainable; * the world through Drainable::getState()) could be used to determine * if all objects have entered the Drained state, the protocol is * actually a bit more elaborate. See Drainable::drain() for details. + * + * @ingroup api_drain */ enum class DrainState { Running, /** Running normally */ @@ -113,11 +115,15 @@ class DrainManager * * @return true if all objects were drained successfully, false if * more simulation is needed. + * + * @ingroup api_drain */ bool tryDrain(); /** * Resume normal simulation in a Drained system. + * + * @ingroup api_drain */ void resume(); @@ -131,18 +137,30 @@ class DrainManager * state since the state isn't stored in checkpoints. This method * performs state fixups on all Drainable objects and the * DrainManager itself. + * + * @ingroup api_drain */ void preCheckpointRestore(); - /** Check if the system is drained */ + /** + * Check if the system is drained + * + * @ingroup api_drain + */ bool isDrained() const { return _state == DrainState::Drained; } - /** Get the simulators global drain state */ + /** + * Get the simulators global drain state + * + * @ingroup api_drain + */ DrainState state() const { return _state; } /** * Notify the DrainManager that a Drainable object has finished * draining. + * + * @ingroup api_drain */ void signalDrainDone(); @@ -246,11 +264,15 @@ class Drainable * @return DrainState::Drained if the object is drained at this * point in time, DrainState::Draining if it needs further * simulation. + * + * @ingroup api_drain */ virtual DrainState drain() = 0; /** * Resume execution after a successful drain. + * + * @ingroup api_drain */ virtual void drainResume() {}; @@ -261,6 +283,8 @@ class Drainable * into a state where it is ready to be drained. The method is * safe to call multiple times and there is no need to check that * draining has been requested before calling this method. + * + * @ingroup api_drain */ void signalDrainDone() const { switch (_drainState) { @@ -276,7 +300,11 @@ class Drainable } public: - /** Return the current drain state of an object. */ + /** + * Return the current drain state of an object. + * + * @ingroup api_drain + */ DrainState drainState() const { return _drainState; } /** @@ -290,6 +318,8 @@ class Drainable * * This method is only called in the child of the fork. The call * takes place in a drained system. + * + * @ingroup api_drain */ virtual void notifyFork() {}; From a257eef1d25f753dd87265acc4c0f1c935172443 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 20 Apr 2020 16:59:46 -0700 Subject: [PATCH 31/56] misc,sim: Tagged API methods in sim/serialize.hh Within this some light refactoring has been carried out to avoid accessing member variable directly and removing some unused/unneeded ones from the codebase. Change-Id: I458494f6466628b213816c81f6a8ce42fb91dc3f Issue-on: https://gem5.atlassian.net/browse/GEM5-172 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/27989 Reviewed-by: Bobby R. Bruce Maintainer: Bobby R. Bruce Tested-by: kokoro --- src/dev/storage/disk_image.cc | 2 +- src/doxygen/group_definitions.hh | 6 + src/mem/physical.cc | 2 +- src/mem/ruby/system/RubySystem.cc | 2 +- src/sim/serialize.cc | 10 +- src/sim/serialize.hh | 238 +++++++++++++++++++++++++++--- 6 files changed, 232 insertions(+), 28 deletions(-) diff --git a/src/dev/storage/disk_image.cc b/src/dev/storage/disk_image.cc index 1578ea30f8..319bccf138 100644 --- a/src/dev/storage/disk_image.cc +++ b/src/dev/storage/disk_image.cc @@ -444,7 +444,7 @@ CowDiskImage::unserialize(CheckpointIn &cp) { string cowFilename; UNSERIALIZE_SCALAR(cowFilename); - cowFilename = cp.cptDir + "/" + cowFilename; + cowFilename = cp.getCptDir() + "/" + cowFilename; open(cowFilename); } diff --git a/src/doxygen/group_definitions.hh b/src/doxygen/group_definitions.hh index 8b3e14cd59..e8a1cd9031 100644 --- a/src/doxygen/group_definitions.hh +++ b/src/doxygen/group_definitions.hh @@ -3,3 +3,9 @@ * * These methods relate to the "Drainable" interface. */ + +/** + * @defgroup api_serialize The Serialize API. + * + * These methods related to the "Serialize" interface. + */ diff --git a/src/mem/physical.cc b/src/mem/physical.cc index b4246a3024..4bd812c212 100644 --- a/src/mem/physical.cc +++ b/src/mem/physical.cc @@ -401,7 +401,7 @@ PhysicalMemory::unserializeStore(CheckpointIn &cp) string filename; UNSERIALIZE_SCALAR(filename); - string filepath = cp.cptDir + "/" + filename; + string filepath = cp.getCptDir() + "/" + filename; // mmap memoryfile gzFile compressed_mem = gzopen(filepath.c_str(), "rb"); diff --git a/src/mem/ruby/system/RubySystem.cc b/src/mem/ruby/system/RubySystem.cc index 57d49667e7..c28f8801df 100644 --- a/src/mem/ruby/system/RubySystem.cc +++ b/src/mem/ruby/system/RubySystem.cc @@ -331,7 +331,7 @@ RubySystem::unserialize(CheckpointIn &cp) UNSERIALIZE_SCALAR(cache_trace_file); UNSERIALIZE_SCALAR(cache_trace_size); - cache_trace_file = cp.cptDir + "/" + cache_trace_file; + cache_trace_file = cp.getCptDir() + "/" + cache_trace_file; readCompressedTrace(cache_trace_file, uncompressed_trace, cache_trace_size); diff --git a/src/sim/serialize.cc b/src/sim/serialize.cc index 6a71dd2d41..4bb2ab5ff2 100644 --- a/src/sim/serialize.cc +++ b/src/sim/serialize.cc @@ -66,9 +66,9 @@ using namespace std; -int Serializable::ckptMaxCount = 0; -int Serializable::ckptCount = 0; -int Serializable::ckptPrevCount = -1; +int ckptMaxCount = 0; +int ckptCount = 0; +int ckptPrevCount = -1; std::stack Serializable::path; ///////////////////////////// @@ -266,9 +266,9 @@ CheckpointIn::dir() } CheckpointIn::CheckpointIn(const string &cpt_dir, SimObjectResolver &resolver) - : db(new IniFile), objNameResolver(resolver), cptDir(setDir(cpt_dir)) + : db(new IniFile), objNameResolver(resolver), _cptDir(setDir(cpt_dir)) { - string filename = cptDir + "/" + CheckpointIn::baseFilename; + string filename = getCptDir() + "/" + CheckpointIn::baseFilename; if (!db->load(filename)) { fatal("Can't load checkpoint file '%s'\n", filename); } diff --git a/src/sim/serialize.hh b/src/sim/serialize.hh index 92b14a9fff..1f31dd2033 100644 --- a/src/sim/serialize.hh +++ b/src/sim/serialize.hh @@ -72,11 +72,17 @@ class CheckpointIn SimObjectResolver &objNameResolver; + const std::string _cptDir; + public: CheckpointIn(const std::string &cpt_dir, SimObjectResolver &resolver); ~CheckpointIn(); - const std::string cptDir; + /** + * @ingroup api_serialize + * @{ + */ + const std::string getCptDir() { return _cptDir; } bool find(const std::string §ion, const std::string &entry, std::string &value); @@ -84,9 +90,9 @@ class CheckpointIn bool findObj(const std::string §ion, const std::string &entry, SimObject *&value); - bool entryExists(const std::string §ion, const std::string &entry); bool sectionExists(const std::string §ion); + /** @}*/ //end of api_checkout group // The following static functions have to do with checkpoint // creation rather than restoration. This class makes a handy @@ -99,16 +105,28 @@ class CheckpointIn // current directory we're serializing into. static std::string currentDirectory; + public: - // Set the current directory. This function takes care of - // inserting curTick() if there's a '%d' in the argument, and - // appends a '/' if necessary. The final name is returned. + /** + * Set the current directory + * + * This function takes care of inserting curTick() if there's a '%d' in the + * argument, and appends a '/' if necessary. The final name is returned. + * + * @ingroup api_serialize + */ static std::string setDir(const std::string &base_name); - // Export current checkpoint directory name so other objects can - // derive filenames from it (e.g., memory). The return value is - // guaranteed to end in '/' so filenames can be directly appended. - // This function is only valid while a checkpoint is being created. + /** + * Get the current checkout directory name + * + * This function exports the current checkout point directory name so other + * objects can derive filenames from it (e.g., memory). The return value is + * guaranteed to end in '/' so filenames can be directly appended. This + * function is only valid while a checkpoint is being created. + * + * @ingroup api_serialize + */ static std::string dir(); // Filename for base checkpoint file within directory. @@ -167,6 +185,10 @@ class Serializable */ class ScopedCheckpointSection { public: + /** + * @ingroup api_serialize + * @{ + */ template ScopedCheckpointSection(CP &cp, const char *name) { pushName(name); @@ -178,6 +200,7 @@ class Serializable pushName(name.c_str()); nameOut(cp); } + /** @}*/ //end of api_serialize group ~ScopedCheckpointSection(); @@ -195,6 +218,9 @@ class Serializable }; public: + /** + * @ingroup api_serialize + */ Serializable(); virtual ~Serializable(); @@ -204,6 +230,8 @@ class Serializable * Output an object's state into the current checkpoint section. * * @param cp Checkpoint state + * + * @ingroup api_serialize */ virtual void serialize(CheckpointOut &cp) const = 0; @@ -213,6 +241,8 @@ class Serializable * Read an object's state from the current checkpoint section. * * @param cp Checkpoint state + * + * @ingroup api_serialize */ virtual void unserialize(CheckpointIn &cp) = 0; @@ -226,9 +256,14 @@ class Serializable * * @param cp Checkpoint state * @param name Name to append to the active path + * + * @ingroup api_serialize */ void serializeSection(CheckpointOut &cp, const char *name) const; + /** + * @ingroup api_serialize + */ void serializeSection(CheckpointOut &cp, const std::string &name) const { serializeSection(cp, name.c_str()); } @@ -242,37 +277,54 @@ class Serializable * * @param cp Checkpoint state * @param name Name to append to the active path + * + * @ingroup api_serialize */ void unserializeSection(CheckpointIn &cp, const char *name); + /** + * @ingroup api_serialize + */ void unserializeSection(CheckpointIn &cp, const std::string &name) { unserializeSection(cp, name.c_str()); } - /** Get the fully-qualified name of the active section */ + /** + * Gets the fully-qualified name of the active section + * + * @ingroup api_serialize + */ static const std::string ¤tSection(); - static int ckptCount; - static int ckptMaxCount; - static int ckptPrevCount; + /** + * @ingroup api_serialize + */ static void serializeAll(const std::string &cpt_dir); + + /** + * @ingroup api_serialize + */ static void unserializeGlobals(CheckpointIn &cp); private: static std::stack path; }; -// -// The base implementations use to_number for parsing and '<<' for -// displaying, suitable for integer types. -// +/** + * @ingroup api_serialize + */ template bool parseParam(const std::string &s, T &value) { + // The base implementations use to_number for parsing and '<<' for + // displaying, suitable for integer types. return to_number(s, value); } +/** + * @ingroup api_serialize + */ template void showParam(CheckpointOut &os, const T &value) @@ -280,6 +332,9 @@ showParam(CheckpointOut &os, const T &value) os << value; } +/** + * @ingroup api_serialize + */ template bool parseParam(const std::string &s, BitUnionType &value) @@ -291,6 +346,9 @@ parseParam(const std::string &s, BitUnionType &value) return res; } +/** + * @ingroup api_serialize + */ template void showParam(CheckpointOut &os, const BitUnionType &value) @@ -304,14 +362,20 @@ showParam(CheckpointOut &os, const BitUnionType &value) static_cast(storage) : storage); } -// Treat 8-bit ints (chars) as ints on output, not as chars +/** + * @ingroup api_serialize + */ template <> inline void showParam(CheckpointOut &os, const char &value) { + // Treat 8-bit ints (chars) as ints on output, not as chars os << (int)value; } +/** + * @ingroup api_serialize + */ template <> inline void showParam(CheckpointOut &os, const signed char &value) @@ -319,6 +383,9 @@ showParam(CheckpointOut &os, const signed char &value) os << (int)value; } +/** + * @ingroup api_serialize + */ template <> inline void showParam(CheckpointOut &os, const unsigned char &value) @@ -326,6 +393,9 @@ showParam(CheckpointOut &os, const unsigned char &value) os << (unsigned int)value; } +/** + * @ingroup api_serialize + */ template <> inline bool parseParam(const std::string &s, float &value) @@ -333,6 +403,9 @@ parseParam(const std::string &s, float &value) return to_number(s, value); } +/** + * @ingroup api_serialize + */ template <> inline bool parseParam(const std::string &s, double &value) @@ -340,6 +413,9 @@ parseParam(const std::string &s, double &value) return to_number(s, value); } +/** + * @ingroup api_serialize + */ template <> inline bool parseParam(const std::string &s, bool &value) @@ -347,23 +423,32 @@ parseParam(const std::string &s, bool &value) return to_bool(s, value); } -// Display bools as strings +/** + * @ingroup api_serialize + */ template <> inline void showParam(CheckpointOut &os, const bool &value) { + // Display bools as strings os << (value ? "true" : "false"); } -// String requires no processing to speak of +/** + * @ingroup api_serialize + */ template <> inline bool parseParam(const std::string &s, std::string &value) { + // String requires no processing to speak of value = s; return true; } +/** + * @ingroup api_serialize + */ template void paramOut(CheckpointOut &os, const std::string &name, const T ¶m) @@ -373,6 +458,9 @@ paramOut(CheckpointOut &os, const std::string &name, const T ¶m) os << "\n"; } +/** + * @ingroup api_serialize + */ template void paramIn(CheckpointIn &cp, const std::string &name, T ¶m) @@ -384,6 +472,9 @@ paramIn(CheckpointIn &cp, const std::string &name, T ¶m) } } +/** + * @ingroup api_serialize + */ template bool optParamIn(CheckpointIn &cp, const std::string &name, @@ -400,6 +491,9 @@ optParamIn(CheckpointIn &cp, const std::string &name, } } +/** + * @ingroup api_serialize + */ template void arrayParamOut(CheckpointOut &os, const std::string &name, @@ -416,6 +510,9 @@ arrayParamOut(CheckpointOut &os, const std::string &name, os << "\n"; } +/** + * @ingroup api_serialize + */ template void arrayParamOut(CheckpointOut &os, const std::string &name, @@ -435,6 +532,9 @@ arrayParamOut(CheckpointOut &os, const std::string &name, os << "\n"; } +/** + * @ingroup api_serialize + */ template void arrayParamOut(CheckpointOut &os, const std::string &name, @@ -454,6 +554,9 @@ arrayParamOut(CheckpointOut &os, const std::string &name, os << "\n"; } +/** + * @ingroup api_serialize + */ template void arrayParamOut(CheckpointOut &os, const std::string &name, @@ -477,6 +580,8 @@ arrayParamOut(CheckpointOut &os, const std::string &name, * @param name Name of the container. * @param param The array container. * @param size The expected number of entries to be extracted. + * + * @ingroup api_serialize */ template void @@ -523,6 +628,9 @@ arrayParamIn(CheckpointIn &cp, const std::string &name, } } +/** + * @ingroup api_serialize + */ template void arrayParamIn(CheckpointIn &cp, const std::string &name, std::vector ¶m) @@ -565,6 +673,9 @@ arrayParamIn(CheckpointIn &cp, const std::string &name, std::vector ¶m) } } +/** + * @ingroup api_serialize + */ template void arrayParamIn(CheckpointIn &cp, const std::string &name, std::list ¶m) @@ -595,6 +706,9 @@ arrayParamIn(CheckpointIn &cp, const std::string &name, std::list ¶m) } } +/** + * @ingroup api_serialize + */ template void arrayParamIn(CheckpointIn &cp, const std::string &name, std::set ¶m) @@ -628,6 +742,10 @@ arrayParamIn(CheckpointIn &cp, const std::string &name, std::set ¶m) void debug_serialize(const std::string &cpt_dir); + +/** + * @ingroup api_serialize + */ void objParamIn(CheckpointIn &cp, const std::string &name, SimObject * ¶m); @@ -635,14 +753,43 @@ objParamIn(CheckpointIn &cp, const std::string &name, SimObject * ¶m); // These macros are streamlined to use in serialize/unserialize // functions. It's assumed that serialize() has a parameter 'os' for // the ostream, and unserialize() has parameters 'cp' and 'section'. + + +/** + * \def SERIALIZE_SCALER(scaler) + * + * @ingroup api_serialize + */ #define SERIALIZE_SCALAR(scalar) paramOut(cp, #scalar, scalar) +/** + * \def UNSERIALIZE_SCALER(scalar) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_SCALAR(scalar) paramIn(cp, #scalar, scalar) + +/** + * \def UNSERIALIZE_OPT_SCALAR(scalar) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_OPT_SCALAR(scalar) optParamIn(cp, #scalar, scalar) // ENUMs are like SCALARs, but we cast them to ints on the way out + +/** + * \def SERIALIZE_ENUM(scalar) + * + * @ingroup api_serialize + */ #define SERIALIZE_ENUM(scalar) paramOut(cp, #scalar, (int)scalar) +/** + * \def UNSERIALIZE_ENUM(scaler) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_ENUM(scalar) \ do { \ int tmp; \ @@ -650,31 +797,82 @@ objParamIn(CheckpointIn &cp, const std::string &name, SimObject * ¶m); scalar = static_cast(tmp); \ } while (0) +/** + * \def SERIALIZE_ARRAY(member, size) + * + * @ingroup api_serialize + */ #define SERIALIZE_ARRAY(member, size) \ arrayParamOut(cp, #member, member, size) +/** + * \def UNSERIALIZE_ARRAY(member, size) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_ARRAY(member, size) \ arrayParamIn(cp, #member, member, size) +/** + * \def SERIALIZE_CONTAINER(member) + * + * @ingroup api_serialize + */ #define SERIALIZE_CONTAINER(member) \ arrayParamOut(cp, #member, member) +/** + * \def UNSERIALIZE_CONTAINER(member) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_CONTAINER(member) \ arrayParamIn(cp, #member, member) +/** + * \def SERIALIZE_EVENT(event) + * + * @ingroup api_serialize + */ #define SERIALIZE_EVENT(event) event.serializeSection(cp, #event); +/** + * \def UNSERIALIZE_EVENT(event) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_EVENT(event) \ do { \ event.unserializeSection(cp, #event); \ eventQueue()->checkpointReschedule(&event); \ } while (0) +/** + * \def SERIALIZE_OBJ(obj) + * + * @ingroup api_serialize + */ #define SERIALIZE_OBJ(obj) obj.serializeSection(cp, #obj) + +/** + * \def UNSERIALIZE_OBJ(obj) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_OBJ(obj) obj.unserializeSection(cp, #obj) +/** + * \def SERIALIZE_OBJPTR(objptr) + * + * @ingroup api_serialize + */ #define SERIALIZE_OBJPTR(objptr) paramOut(cp, #objptr, (objptr)->name()) +/** + * \def UNSERIALIZE_OBJPTR(objptr) + * + * @ingroup api_serialize + */ #define UNSERIALIZE_OBJPTR(objptr) \ do { \ SimObject *sptr; \ From 41e4bf5db7580db8895fbbf5488bda51a3c04f5b Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Thu, 30 Apr 2020 02:35:46 -0700 Subject: [PATCH 32/56] misc,sim: Tagged API methods and variables in eventq.hh Change-Id: I76018d4aa08f9bd42a152ec7e0222a0385d3b895 Issue-on: https://gem5.atlassian.net/browse/GEM5-172 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28388 Tested-by: kokoro Reviewed-by: Bobby R. Bruce Maintainer: Bobby R. Bruce --- src/doxygen/group_definitions.hh | 6 + src/sim/eventq.hh | 320 ++++++++++++++++++++++++++----- 2 files changed, 276 insertions(+), 50 deletions(-) diff --git a/src/doxygen/group_definitions.hh b/src/doxygen/group_definitions.hh index e8a1cd9031..c0599bb453 100644 --- a/src/doxygen/group_definitions.hh +++ b/src/doxygen/group_definitions.hh @@ -9,3 +9,9 @@ * * These methods related to the "Serialize" interface. */ + +/** + * @defgroup api_eventq The Event Queue API. + * + * These methods relate to the event queue interface. + */ diff --git a/src/sim/eventq.hh b/src/sim/eventq.hh index 2976e11cb5..522b394f7e 100644 --- a/src/sim/eventq.hh +++ b/src/sim/eventq.hh @@ -111,6 +111,9 @@ class EventBase static const FlagsType InitMask = 0xffc0; // mask for init bits public: + /** + * @ingroup api_eventq + */ typedef int8_t Priority; /// Event priorities, to provide tie-breakers for events scheduled @@ -118,61 +121,117 @@ class EventBase /// priority; these values are used to control events that need to /// be ordered within a cycle. - /// Minimum priority + /** + * Minimum priority + * + * @ingroup api_eventq + */ static const Priority Minimum_Pri = SCHAR_MIN; - /// If we enable tracing on a particular cycle, do that as the - /// very first thing so we don't miss any of the events on - /// that cycle (even if we enter the debugger). + /** + * If we enable tracing on a particular cycle, do that as the + * very first thing so we don't miss any of the events on + * that cycle (even if we enter the debugger). + * + * @ingroup api_eventq + */ static const Priority Debug_Enable_Pri = -101; - /// Breakpoints should happen before anything else (except - /// enabling trace output), so we don't miss any action when - /// debugging. + /** + * Breakpoints should happen before anything else (except + * enabling trace output), so we don't miss any action when + * debugging. + * + * @ingroup api_eventq + */ static const Priority Debug_Break_Pri = -100; - /// CPU switches schedule the new CPU's tick event for the - /// same cycle (after unscheduling the old CPU's tick event). - /// The switch needs to come before any tick events to make - /// sure we don't tick both CPUs in the same cycle. + /** + * CPU switches schedule the new CPU's tick event for the + * same cycle (after unscheduling the old CPU's tick event). + * The switch needs to come before any tick events to make + * sure we don't tick both CPUs in the same cycle. + * + * @ingroup api_eventq + */ static const Priority CPU_Switch_Pri = -31; - /// For some reason "delayed" inter-cluster writebacks are - /// scheduled before regular writebacks (which have default - /// priority). Steve? + /** + * For some reason "delayed" inter-cluster writebacks are + * scheduled before regular writebacks (which have default + * priority). Steve? + * + * @ingroup api_eventq + */ static const Priority Delayed_Writeback_Pri = -1; - /// Default is zero for historical reasons. + /** + * Default is zero for historical reasons. + * + * @ingroup api_eventq + */ static const Priority Default_Pri = 0; - /// DVFS update event leads to stats dump therefore given a lower priority - /// to ensure all relevant states have been updated + /** + * DVFS update event leads to stats dump therefore given a lower priority + * to ensure all relevant states have been updated + * + * @ingroup api_eventq + */ static const Priority DVFS_Update_Pri = 31; - /// Serailization needs to occur before tick events also, so - /// that a serialize/unserialize is identical to an on-line - /// CPU switch. + /** + * Serailization needs to occur before tick events also, so + * that a serialize/unserialize is identical to an on-line + * CPU switch. + * + * @ingroup api_eventq + */ static const Priority Serialize_Pri = 32; - /// CPU ticks must come after other associated CPU events - /// (such as writebacks). + /** + * CPU ticks must come after other associated CPU events + * (such as writebacks). + * + * @ingroup api_eventq + */ static const Priority CPU_Tick_Pri = 50; - /// If we want to exit a thread in a CPU, it comes after CPU_Tick_Pri + /** + * If we want to exit a thread in a CPU, it comes after CPU_Tick_Pri + * + * @ingroup api_eventq + */ static const Priority CPU_Exit_Pri = 64; - /// Statistics events (dump, reset, etc.) come after - /// everything else, but before exit. + /** + * Statistics events (dump, reset, etc.) come after + * everything else, but before exit. + * + * @ingroup api_eventq + */ static const Priority Stat_Event_Pri = 90; - /// Progress events come at the end. + /** + * Progress events come at the end. + * + * @ingroup api_eventq + */ static const Priority Progress_Event_Pri = 95; - /// If we want to exit on this cycle, it's the very last thing - /// we do. + /** + * If we want to exit on this cycle, it's the very last thing + * we do. + * + * @ingroup api_eventq + */ static const Priority Sim_Exit_Pri = 100; - /// Maximum priority + /** + * Maximum priority + * + * @ingroup api_eventq + */ static const Priority Maximum_Pri = SCHAR_MAX; }; @@ -246,7 +305,6 @@ class Event : public EventBase, public Serializable } protected: - /// Accessor for flags. Flags getFlags() const { @@ -260,7 +318,6 @@ class Event : public EventBase, public Serializable return flags.isSet(_flags); } - /// Accessor for flags. void setFlags(Flags _flags) { @@ -281,7 +338,11 @@ class Event : public EventBase, public Serializable flags.clear(PublicWrite); } - // This function isn't really useful if TRACING_ON is not defined + /** + * This function isn't really useful if TRACING_ON is not defined + * + * @ingroup api_eventq + */ virtual void trace(const char *action); //!< trace event activity /// Return the instance number as a string. @@ -341,6 +402,8 @@ class Event : public EventBase, public Serializable /* * Event constructor * @param queue that the event gets scheduled on + * + * @ingroup api_eventq */ Event(Priority p = Default_Pri, Flags f = 0) : nextBin(nullptr), nextInBin(nullptr), _when(0), _priority(p), @@ -357,6 +420,10 @@ class Event : public EventBase, public Serializable #endif } + /** + * @ingroup api_eventq + * @{ + */ virtual ~Event(); virtual const std::string name() const; @@ -367,6 +434,7 @@ class Event : public EventBase, public Serializable /// Dump the current event data void dump() const; + /** @}*/ //end of api group public: /* @@ -378,29 +446,63 @@ class Event : public EventBase, public Serializable * * If the AutoDestroy flag is set, the object is deleted once it * is processed. + * + * @ingroup api_eventq */ virtual void process() = 0; - /// Determine if the current event is scheduled + /** + * Determine if the current event is scheduled + * + * @ingroup api_eventq + */ bool scheduled() const { return flags.isSet(Scheduled); } - /// Squash the current event + /** + * Squash the current event + * + * @ingroup api_eventq + */ void squash() { flags.set(Squashed); } - /// Check whether the event is squashed + /** + * Check whether the event is squashed + * + * @ingroup api_eventq + */ bool squashed() const { return flags.isSet(Squashed); } - /// See if this is a SimExitEvent (without resorting to RTTI) + /** + * See if this is a SimExitEvent (without resorting to RTTI) + * + * @ingroup api_eventq + */ bool isExitEvent() const { return flags.isSet(IsExitEvent); } - /// Check whether this event will auto-delete + /** + * Check whether this event will auto-delete + * + * @ingroup api_eventq + */ bool isManaged() const { return flags.isSet(Managed); } + + /** + * @ingroup api_eventq + */ bool isAutoDelete() const { return isManaged(); } - /// Get the time that the event is scheduled + /** + * Get the time that the event is scheduled + * + * @ingroup api_eventq + */ Tick when() const { return _when; } - /// Get the event priority + /** + * Get the event priority + * + * @ingroup api_eventq + */ Priority priority() const { return _priority; } //! If this is part of a GlobalEvent, return the pointer to the @@ -412,6 +514,9 @@ class Event : public EventBase, public Serializable void unserialize(CheckpointIn &cp) override; }; +/** + * @ingroup api_eventq + */ inline bool operator<(const Event &l, const Event &r) { @@ -419,6 +524,9 @@ operator<(const Event &l, const Event &r) (l.when() == r.when() && l.priority() < r.priority()); } +/** + * @ingroup api_eventq + */ inline bool operator>(const Event &l, const Event &r) { @@ -426,12 +534,19 @@ operator>(const Event &l, const Event &r) (l.when() == r.when() && l.priority() > r.priority()); } +/** + * @ingroup api_eventq + */ inline bool operator<=(const Event &l, const Event &r) { return l.when() < r.when() || (l.when() == r.when() && l.priority() <= r.priority()); } + +/** + * @ingroup api_eventq + */ inline bool operator>=(const Event &l, const Event &r) { @@ -439,12 +554,18 @@ operator>=(const Event &l, const Event &r) (l.when() == r.when() && l.priority() >= r.priority()); } +/** + * @ingroup api_eventq + */ inline bool operator==(const Event &l, const Event &r) { return l.when() == r.when() && l.priority() == r.priority(); } +/** + * @ingroup api_eventq + */ inline bool operator!=(const Event &l, const Event &r) { @@ -552,6 +673,9 @@ class EventQueue class ScopedMigration { public: + /** + * @ingroup api_eventq + */ ScopedMigration(EventQueue *_new_eq, bool _doMigrate = true) :new_eq(*_new_eq), old_eq(*curEventQueue()), doMigrate((&new_eq != &old_eq)&&_doMigrate) @@ -590,6 +714,9 @@ class EventQueue class ScopedRelease { public: + /** + * @group api_eventq + */ ScopedRelease(EventQueue *_eq) : eq(*_eq) { @@ -605,33 +732,71 @@ class EventQueue EventQueue &eq; }; + /** + * @ingroup api_eventq + */ EventQueue(const std::string &n); + /** + * @ingroup api_eventq + * @{ + */ virtual const std::string name() const { return objName; } void name(const std::string &st) { objName = st; } + /** @}*/ //end of api_eventq group - //! Schedule the given event on this queue. Safe to call from any - //! thread. + /** + * Schedule the given event on this queue. Safe to call from any thread. + * + * @ingroup api_eventq + */ void schedule(Event *event, Tick when, bool global = false); - //! Deschedule the specified event. Should be called only from the - //! owning thread. + /** + * Deschedule the specified event. Should be called only from the owning + * thread. + * @ingroup api_eventq + */ void deschedule(Event *event); - //! Reschedule the specified event. Should be called only from - //! the owning thread. + /** + * Reschedule the specified event. Should be called only from the owning + * thread. + * + * @ingroup api_eventq + */ void reschedule(Event *event, Tick when, bool always = false); Tick nextTick() const { return head->when(); } void setCurTick(Tick newVal) { _curTick = newVal; } + + /** + * While curTick() is useful for any object assigned to this event queue, + * if an object that is assigned to another event queue (or a non-event + * object) need to access the current tick of this event queue, this + * function is used. + * + * @return Tick The current tick of this event queue. + * @ingroup api_eventq + */ Tick getCurTick() const { return _curTick; } Event *getHead() const { return head; } Event *serviceOne(); - // process all events up to the given timestamp. we inline a - // quick test to see if there are any events to process; if so, - // call the internal out-of-line version to process them all. + /** + * process all events up to the given timestamp. we inline a quick test + * to see if there are any events to process; if so, call the internal + * out-of-line version to process them all. + * + * Notes: + * - This is only used for "instruction" event queues. Instead of counting + * ticks, this is actually counting instructions. + * - This updates the current tick value to the value of the entry at the + * head of the queue. + * + * @ingroup api_eventq + */ void serviceEvents(Tick when) { @@ -650,14 +815,26 @@ class EventQueue setCurTick(when); } - // return true if no events are queued + /** + * Returns true if no events are queued + * + * @ingroup api_eventq + */ bool empty() const { return head == NULL; } + /** + * This is a debugging function which will print everything on the event + * queue. + * + * @ingroup api_eventq + */ void dump() const; bool debugVerify() const; - //! Function for moving events from the async_queue to the main queue. + /** + * Function for moving events from the async_queue to the main queue. + */ void handleAsyncInsertions(); /** @@ -672,6 +849,8 @@ class EventQueue * can be used by an implementation to schedule a wakeup in the * future if it is sure it will remain active until then. * Or it can be ignored and the event queue can be woken up now. + * + * @ingroup api_eventq */ virtual void wakeup(Tick when = (Tick)-1) { } @@ -730,52 +909,81 @@ class EventManager EventQueue *eventq; public: + /** + * @ingroup api_eventq + * @{ + */ EventManager(EventManager &em) : eventq(em.eventq) {} EventManager(EventManager *em) : eventq(em->eventq) {} EventManager(EventQueue *eq) : eventq(eq) {} + /** @}*/ //end of api_eventq group + /** + * @ingroup api_eventq + */ EventQueue * eventQueue() const { return eventq; } + /** + * @ingroup api_eventq + */ void schedule(Event &event, Tick when) { eventq->schedule(&event, when); } + /** + * @ingroup api_eventq + */ void deschedule(Event &event) { eventq->deschedule(&event); } + /** + * @ingroup api_eventq + */ void reschedule(Event &event, Tick when, bool always = false) { eventq->reschedule(&event, when, always); } + /** + * @ingroup api_eventq + */ void schedule(Event *event, Tick when) { eventq->schedule(event, when); } + /** + * @ingroup api_eventq + */ void deschedule(Event *event) { eventq->deschedule(event); } + /** + * @ingroup api_eventq + */ void reschedule(Event *event, Tick when, bool always = false) { eventq->reschedule(event, when, always); } + /** + * @ingroup api_eventq + */ void wakeupEventQueue(Tick when = (Tick)-1) { eventq->wakeup(when); @@ -823,6 +1031,9 @@ class EventFunctionWrapper : public Event std::string _name; public: + /** + * @ingroup api_eventq + */ EventFunctionWrapper(const std::function &callback, const std::string &name, bool del = false, @@ -833,14 +1044,23 @@ class EventFunctionWrapper : public Event setFlags(AutoDelete); } + /** + * @ingroup api_eventq + */ void process() { callback(); } + /** + * @ingroup api_eventq + */ const std::string name() const { return _name + ".wrapped_function_event"; } + /** + * @ingroup api_eventq + */ const char *description() const { return "EventFunctionWrapped"; } }; From 341e6815ffc07580e50fac0d823fea0aba3ce93c Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Thu, 30 Apr 2020 02:38:39 -0700 Subject: [PATCH 33/56] misc: Added src/doxygen/html to .gitignore Previously `src/doxygen` was ignored, but `src/doxygen` contains some "source" for creating the doxygen html. Therefore this .gitignore entry has been removed and replaced with one that only ignores the generated `src/doxygen/html`. Change-Id: I5add9fe839a00ad9d216d2082beda637ad0ea87d Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28389 Tested-by: kokoro Reviewed-by: Bobby R. Bruce Maintainer: Bobby R. Bruce --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b851a23f1d..a19560973b 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,7 @@ cscope.out .*.swp .*.swo m5out -/src/doxygen +/src/doxygen/html /ext/dramsim2/DRAMSim2 /ext/mcpat/regression/*/*.out /util/m5/*.o From 2f8d118bd9fff7fd8dbca10d88291744ab91e3d7 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Thu, 30 Apr 2020 03:07:41 -0700 Subject: [PATCH 34/56] misc,base,stats: Tagged API methods in base/stats/group.hh Change-Id: I61693884d719025f3b1f385793c7a71de0937e79 Issue-on: https://gem5.atlassian.net/browse/GEM5-172 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28390 Tested-by: kokoro Reviewed-by: Bobby R. Bruce Maintainer: Bobby R. Bruce --- src/base/stats/group.hh | 21 +++++++++++++++++++++ src/doxygen/group_definitions.hh | 6 ++++++ 2 files changed, 27 insertions(+) diff --git a/src/base/stats/group.hh b/src/base/stats/group.hh index 4fd9e79fd0..985bf61f60 100644 --- a/src/base/stats/group.hh +++ b/src/base/stats/group.hh @@ -83,9 +83,14 @@ class Info; class Group { public: + /** + * @ingroup api_stats + * @{ + */ Group() = delete; Group(const Group &) = delete; Group &operator=(const Group &) = delete; + /** @}*/ //end of api_stats /** * Construct a new statistics group. @@ -104,6 +109,8 @@ class Group * @param parent Parent group to associate this object to. * @param name Name of this group, can be NULL to merge this group * with the parent group. + * + * @ingroup api_stats */ Group(Group *parent, const char *name = nullptr); @@ -117,11 +124,15 @@ class Group * description. Stat names and descriptions should typically be * set from the constructor usingo from the constructor using the * ADD_STAT macro. + * + * @ingroup api_stats */ virtual void regStats(); /** * Callback to reset stats. + * + * @ingroup api_stats */ virtual void resetStats(); @@ -129,22 +140,30 @@ class Group * Callback before stats are dumped. This can be overridden by * objects that need to perform calculations in addition to the * capabiltiies implemented in the stat framework. + * + * @ingroup api_stats */ virtual void preDumpStats(); /** * Register a stat with this group. This method is normally called * automatically when a stat is instantiated. + * + * @ingroup api_stats */ void addStat(Stats::Info *info); /** * Get all child groups associated with this object. + * + * @ingroup api_stats */ const std::map &getStatGroups() const; /** * Get all stats associated with this object. + * + * @ingroup api_stats */ const std::vector &getStats() const; @@ -154,6 +173,8 @@ class Group * This method may only be called from a Group constructor or from * regStats. It's typically only called explicitly from Python * when setting up the SimObject hierarchy. + * + * @ingroup api_stats */ void addStatGroup(const char *name, Group *block); diff --git a/src/doxygen/group_definitions.hh b/src/doxygen/group_definitions.hh index c0599bb453..e6e39b7cc1 100644 --- a/src/doxygen/group_definitions.hh +++ b/src/doxygen/group_definitions.hh @@ -15,3 +15,9 @@ * * These methods relate to the event queue interface. */ + +/** + * @defgroup api_stats The Stats API. + * + * These methods relate to the statistics I/O interface. + */ From 65dbb3c69aff5bca9c4df0dee2a6b01af3eae5d2 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Thu, 30 Apr 2020 12:29:56 -0700 Subject: [PATCH 35/56] misc,sim: Tagged API methods in sim/simobject.hh Change-Id: I1d4f5b67828e3bef64d781831cec4b25d6fcb6b9 Issue-on: https://gem5.atlassian.net/browse/GEM5-172 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28407 Tested-by: kokoro Reviewed-by: Bobby R. Bruce Maintainer: Bobby R. Bruce --- src/doxygen/group_definitions.hh | 6 +++++ src/sim/sim_object.hh | 42 ++++++++++++++++++++++++++++++-- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/src/doxygen/group_definitions.hh b/src/doxygen/group_definitions.hh index e6e39b7cc1..40069e0acd 100644 --- a/src/doxygen/group_definitions.hh +++ b/src/doxygen/group_definitions.hh @@ -21,3 +21,9 @@ * * These methods relate to the statistics I/O interface. */ + +/** + * @defgroup api_simobject The SimObject API. + * + * These methods relate to the SimObject interface. + */ diff --git a/src/sim/sim_object.hh b/src/sim/sim_object.hh index 05c1b3e0ac..de89fbff22 100644 --- a/src/sim/sim_object.hh +++ b/src/sim/sim_object.hh @@ -103,17 +103,29 @@ class SimObject : public EventManager, public Serializable, public Drainable, ProbeManager *probeManager; protected: - /** Cached copy of the object parameters. */ + /** + * Cached copy of the object parameters. + * + * @ingroup api_simobject + */ const SimObjectParams *_params; public: typedef SimObjectParams Params; + /** + * @ingroup api_simobject + * @{ + */ const Params *params() const { return _params; } SimObject(const Params *_params); + /** @}*/ //end of the api_simobject group virtual ~SimObject(); public: + /** + * @ingroup api_simobject + */ virtual const std::string name() const { return params()->name; } /** @@ -121,6 +133,8 @@ class SimObject : public EventManager, public Serializable, public Drainable, * all ports are connected. Initializations that are independent * of unserialization but rely on a fully instantiated and * connected SimObject graph should be done here. + * + * @ingroup api_simobject */ virtual void init(); @@ -134,6 +148,8 @@ class SimObject : public EventManager, public Serializable, public Drainable, * found. * * @param cp Checkpoint to restore the state from. + * + * @ingroup api_serialize */ virtual void loadState(CheckpointIn &cp); @@ -141,21 +157,29 @@ class SimObject : public EventManager, public Serializable, public Drainable, * initState() is called on each SimObject when *not* restoring * from a checkpoint. This provides a hook for state * initializations that are only required for a "cold start". + * + * @ingroup api_serialize */ virtual void initState(); /** * Register probe points for this object. + * + * @ingroup api_simobject */ virtual void regProbePoints(); /** * Register probe listeners for this object. + * + * @ingroup api_simobject */ virtual void regProbeListeners(); /** * Get the probe manager for this object. + * + * @ingroup api_simobject */ ProbeManager *getProbeManager(); @@ -167,6 +191,8 @@ class SimObject : public EventManager, public Serializable, public Drainable, * @param idx Index in the case of a VectorPort * * @return A reference to the given port + * + * @ingroup api_simobject */ virtual Port &getPort(const std::string &if_name, PortID idx=InvalidPortID); @@ -176,6 +202,8 @@ class SimObject : public EventManager, public Serializable, public Drainable, * All state is initialized (including unserialized state, if any, * such as the curTick() value), so this is the appropriate place to * schedule initial event(s) for objects that need them. + * + * @ingroup api_simobject */ virtual void startup(); @@ -192,6 +220,8 @@ class SimObject : public EventManager, public Serializable, public Drainable, * written all its dirty data back to memory. This method is * typically used to prepare a system with caches for * checkpointing. + * + * @ingroup api_simobject */ virtual void memWriteback() {}; @@ -205,6 +235,8 @@ class SimObject : public EventManager, public Serializable, public Drainable, * * @warn This does not cause any dirty state to be written * back to memory. + * + * @ingroup api_simobject */ virtual void memInvalidate() {}; @@ -226,6 +258,8 @@ class SimObject : public EventManager, public Serializable, public Drainable, * Find the SimObject with the given name and return a pointer to * it. Primarily used for interactive debugging. Argument is * char* rather than std::string to make it callable from gdb. + * + * @ingroup api_simobject */ static SimObject *find(const char *name); }; @@ -241,7 +275,11 @@ class SimObjectResolver public: virtual ~SimObjectResolver() { } - // Find a SimObject given a full path name + /** + * Find a SimObject given a full path name + * + * @ingroup api_serialize + */ virtual SimObject *resolveSimObject(const std::string &name) = 0; }; From ebf5755cce7103b0cc9b03b023cd5c6aed379b75 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Tue, 19 May 2020 08:58:41 -0700 Subject: [PATCH 36/56] mem-ruby: Added M5_CLASS_VAR_USED to m_id in OutputUnit Clang 9 throws an error that 'm_id' is unused (encountered when compiling X86.fast). M5_CLASS_VAR_USED has been added to avoid this error. Change-Id: I722edd1429a074ff484b5ebbdc431af0089561b5 Issue-on: https://gem5.atlassian.net/browse/GEM5-560 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29304 Maintainer: Bobby R. Bruce Reviewed-by: Jason Lowe-Power Tested-by: kokoro --- src/mem/ruby/network/garnet2.0/OutputUnit.hh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mem/ruby/network/garnet2.0/OutputUnit.hh b/src/mem/ruby/network/garnet2.0/OutputUnit.hh index c720888c12..dbb35eeed6 100644 --- a/src/mem/ruby/network/garnet2.0/OutputUnit.hh +++ b/src/mem/ruby/network/garnet2.0/OutputUnit.hh @@ -35,6 +35,7 @@ #include #include +#include "base/compiler.hh" #include "mem/ruby/common/Consumer.hh" #include "mem/ruby/network/garnet2.0/CommonTypes.hh" #include "mem/ruby/network/garnet2.0/NetworkLink.hh" @@ -91,7 +92,7 @@ class OutputUnit : public Consumer private: Router *m_router; - int m_id; + int M5_CLASS_VAR_USED m_id; PortDirection m_direction; int m_vc_per_vnet; NetworkLink *m_out_link; From 7aa1395877534e4244b00d65776efa1bde59aeb0 Mon Sep 17 00:00:00 2001 From: Hoa Nguyen Date: Thu, 21 May 2020 17:41:29 -0700 Subject: [PATCH 37/56] python: Change m5's tick mechanism of rounding non intergral ticks This commit changes m5's tick rounding mechanism from python's round() to python's ceil() function. Currently, non intergral ticks are rounded by round() function in python. In python2, this function rounds values >= 0.5 to 1. However, in python3, 0.5 is rounded to 0. This causes the function to return 0 ticks for non-zero second values, which doesn't make sense, and also causes several tests to fail. ceil() function is now used to round up the tick values. This makes more sense as non-zero second values won't be rounded to zero in any cases. Signed-off-by: Hoa Nguyen Change-Id: I14c43e38e8c678f77baf13407f7eeff4b86f1014 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29372 Maintainer: Bobby R. Bruce Reviewed-by: Jason Lowe-Power Tested-by: kokoro --- src/python/m5/ticks.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/python/m5/ticks.py b/src/python/m5/ticks.py index 64b7cb8118..047116ac78 100644 --- a/src/python/m5/ticks.py +++ b/src/python/m5/ticks.py @@ -25,6 +25,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from __future__ import print_function +from math import ceil import six if six.PY3: long = int @@ -73,7 +74,7 @@ def fromSeconds(value): # convert the value from time to ticks value *= _m5.core.getClockFrequency() - int_value = int(round(value)) + int_value = int(ceil(value)) err = (value - int_value) / value if err > frequency_tolerance: warn("rounding error > tolerance\n %f rounded to %d", value, From e5b92bc8570bb79bfa871ea4336892bdcbd4c3df Mon Sep 17 00:00:00 2001 From: Hoa Nguyen Date: Thu, 21 May 2020 17:59:26 -0700 Subject: [PATCH 38/56] tests: Update memory tests to be compatible with python3 Signed-off-by: Hoa Nguyen Change-Id: I9bb7444c62e6b29e9c91dbf30320a38718f08b8c Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29353 Maintainer: Bobby R. Bruce Reviewed-by: Jason Lowe-Power Tested-by: kokoro --- tests/gem5/memory/memtest-run.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/gem5/memory/memtest-run.py b/tests/gem5/memory/memtest-run.py index 74f4543d64..0cae42d873 100644 --- a/tests/gem5/memory/memtest-run.py +++ b/tests/gem5/memory/memtest-run.py @@ -32,7 +32,7 @@ from common.Caches import * #MAX CORES IS 8 with the fals sharing method nb_cores = 8 cpus = [MemTest(max_loads = 1e5, progress_interval = 1e4) - for i in xrange(nb_cores) ] + for i in range(nb_cores) ] # system simulated system = System(cpu = cpus, From fc3112d4bde9f4ff4ccf7b8754de61217178ed6c Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 18 May 2020 13:48:08 -0700 Subject: [PATCH 39/56] misc: Fixed HSAIL_X86 compilation errors HSAIL_X86 fail to compile. This patch enables compilation. Issue-on: https://gem5.atlassian.net/browse/GEM5-556 Change-Id: I663e529622ed90254eaf8be01e23991ed8271b5b Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29293 Reviewed-by: Bobby R. Bruce Maintainer: Bobby R. Bruce Tested-by: kokoro --- src/SConscript | 4 ++-- src/arch/hsail/gen.py | 2 +- src/dev/hsa/HSADevice.py | 2 +- src/dev/hsa/HSADriver.py | 2 +- src/dev/hsa/hsa_device.cc | 3 +-- src/dev/hsa/hsa_driver.cc | 30 +++-------------------------- src/dev/hsa/hsa_packet_processor.cc | 9 +++------ 7 files changed, 12 insertions(+), 40 deletions(-) diff --git a/src/SConscript b/src/SConscript index 134e2a5988..1de8a2d754 100644 --- a/src/SConscript +++ b/src/SConscript @@ -624,7 +624,7 @@ def makeTheISA(source, target, env): isas = [ src.get_contents().decode('utf-8') for src in source ] target_isa = env['TARGET_ISA'] def define(isa): - return isa.upper() + '_ISA' + return str(isa.upper()) + '_ISA' def namespace(isa): return isa[0].upper() + isa[1:].lower() + 'ISA' @@ -669,7 +669,7 @@ def makeTheGPUISA(source, target, env): isas = [ src.get_contents() for src in source ] target_gpu_isa = env['TARGET_GPU_ISA'] def define(isa): - return isa.upper() + '_ISA' + return str(isa.upper()) + '_ISA' def namespace(isa): return isa[0].upper() + isa[1:].lower() + 'ISA' diff --git a/src/arch/hsail/gen.py b/src/arch/hsail/gen.py index 8dcc92c7bc..56404248bb 100755 --- a/src/arch/hsail/gen.py +++ b/src/arch/hsail/gen.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # Copyright (c) 2015 Advanced Micro Devices, Inc. # All rights reserved. # diff --git a/src/dev/hsa/HSADevice.py b/src/dev/hsa/HSADevice.py index 125d6eef14..50e3c6dbf8 100644 --- a/src/dev/hsa/HSADevice.py +++ b/src/dev/hsa/HSADevice.py @@ -35,7 +35,7 @@ from m5.SimObject import SimObject from m5.params import * from m5.proxy import * -from Device import DmaDevice +from m5.objects.Device import DmaDevice class HSADevice(DmaDevice): type = 'HSADevice' diff --git a/src/dev/hsa/HSADriver.py b/src/dev/hsa/HSADriver.py index ed742fa498..3df22a00da 100644 --- a/src/dev/hsa/HSADriver.py +++ b/src/dev/hsa/HSADriver.py @@ -35,7 +35,7 @@ from m5.SimObject import SimObject from m5.params import * from m5.proxy import * -from Process import EmulatedDriver +from m5.objects.Process import EmulatedDriver class HSADriver(EmulatedDriver): type = 'HSADriver' diff --git a/src/dev/hsa/hsa_device.cc b/src/dev/hsa/hsa_device.cc index 01b7a41ebb..78ec8e8b4e 100644 --- a/src/dev/hsa/hsa_device.cc +++ b/src/dev/hsa/hsa_device.cc @@ -102,9 +102,8 @@ HSADevice::translateOrDie(Addr vaddr, Addr &paddr) * grab context zero. */ auto process = sys->getThreadContext(0)->getProcessPtr(); - auto mem_state = process->getMemState(); - if (!mem_state->translate(vaddr, paddr)) { + if (!process->pTable->translate(vaddr, paddr)) { fatal("failed translation: vaddr 0x%x\n", vaddr); } } diff --git a/src/dev/hsa/hsa_driver.cc b/src/dev/hsa/hsa_driver.cc index 5f30159170..3f5c8eb0a5 100644 --- a/src/dev/hsa/hsa_driver.cc +++ b/src/dev/hsa/hsa_driver.cc @@ -74,7 +74,7 @@ HSADriver::mmap(ThreadContext *tc, Addr start, uint64_t length, int prot, "offset: 0x%x)\n", start, length, offset); auto process = tc->getProcessPtr(); - auto mem_state = process->getMemState(); + auto mem_state = process->memState; // Extend global mmap region if necessary. if (start == 0) { @@ -87,32 +87,8 @@ HSADriver::mmap(ThreadContext *tc, Addr start, uint64_t length, int prot, * Now map this virtual address to our PIO doorbell interface * in the page tables (non-cacheable). */ - mem_state->map(start, device->hsaPacketProc().pioAddr, length, false); + process->pTable->map(start, device->hsaPacketProc().pioAddr, + length, false); DPRINTF(HSADriver, "amdkfd doorbell mapped to %xp\n", start); return start; } - -/** - * Forward relevant parameters to packet processor; queueID - * is used to link doorbell. The queueIDs are not re-used - * in current implementation, and we allocate only one page - * (4096 bytes) for doorbells, so check if this queue ID can - * be mapped into that page. - */ -void -HSADriver::allocateQueue(const SETranslatingPortProxy &mem_proxy, Addr ioc_buf) -{ - TypedBufferArg args(ioc_buf); - args.copyIn(mem_proxy); - - if (VOID_PTR_ADD32(0, queueId) >= (void*)0x1000) { - fatal("%s: Exceeded maximum number of HSA queues allowed\n", name()); - } - - args->queue_id = queueId++; - auto &hsa_pp = device->hsaPacketProc(); - hsa_pp.setDeviceQueueDesc(args->read_pointer_address, - args->ring_base_address, args->queue_id, - args->ring_size); - args.copyOut(mem_proxy); -} diff --git a/src/dev/hsa/hsa_packet_processor.cc b/src/dev/hsa/hsa_packet_processor.cc index 76da30e29c..bd050163bb 100644 --- a/src/dev/hsa/hsa_packet_processor.cc +++ b/src/dev/hsa/hsa_packet_processor.cc @@ -127,7 +127,7 @@ HSAPacketProcessor::write(Packet *pkt) "%s: write of size %d to reg-offset %d (0x%x)\n", __FUNCTION__, pkt->getSize(), daddr, daddr); - uint32_t doorbell_reg = pkt->get(); + uint32_t doorbell_reg = pkt->getLE(); DPRINTF(HSAPacketProcessor, "%s: write data 0x%x to offset %d (0x%x)\n", @@ -152,9 +152,8 @@ HSAPacketProcessor::translateOrDie(Addr vaddr, Addr &paddr) // new extensions, it will likely be wrong to just arbitrarily grab context // zero. auto process = sys->getThreadContext(0)->getProcessPtr(); - auto mem_state = process->getMemState(); - if (!mem_state->translate(vaddr, paddr)) + if (!process->pTable->translate(vaddr, paddr)) fatal("failed translation: vaddr 0x%x\n", vaddr); } @@ -395,9 +394,7 @@ HSAPacketProcessor::processPkt(void* pkt, uint32_t rl_idx, Addr host_pkt_addr) * not support atomic operations. */ auto tc = sys->getThreadContext(0); - auto process = tc->getProcessPtr(); - auto mem_state = process->getMemState(); - auto &virt_proxy = mem_state->getVirtProxy(); + auto &virt_proxy = tc->getVirtProxy(); TypedBufferArg prev_signal(signal_addr); prev_signal.copyIn(virt_proxy); From 51600749cc4e3215ebfefb12895bca02ce52197e Mon Sep 17 00:00:00 2001 From: Jason Lowe-Power Date: Fri, 22 May 2020 07:58:34 -0700 Subject: [PATCH 40/56] misc: Remove GCN3 as a build target This target currently doesn't compile, so remove it from the list of supported ISAs for the gem5-20 release. We can add this target back after the compilation errors have been fixed. Change-Id: I2b121824fcfee59b62d7d24600ddd0eece884c6b Signed-off-by: Jason Lowe-Power Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29392 Maintainer: Jason Lowe-Power Reviewed-by: Bobby R. Bruce Tested-by: kokoro --- build_opts/GCN3_X86 | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 build_opts/GCN3_X86 diff --git a/build_opts/GCN3_X86 b/build_opts/GCN3_X86 deleted file mode 100644 index 21e3cf0e45..0000000000 --- a/build_opts/GCN3_X86 +++ /dev/null @@ -1,5 +0,0 @@ -PROTOCOL = 'GPU_VIPER' -TARGET_ISA = 'x86' -TARGET_GPU_ISA = 'gcn3' -BUILD_GPU = True -CPU_MODELS = 'AtomicSimpleCPU,O3CPU,TimingSimpleCPU' From ad7e297fba45c6546dfad4e584046bdb56f62123 Mon Sep 17 00:00:00 2001 From: Nadia Etemadi Date: Thu, 21 May 2020 15:06:01 -0700 Subject: [PATCH 41/56] arch-arm: Fixed issue building ARM_MESI_Three_Level Change-Id: I1ef200cd282e189d142a5902b6ddbd33119c4173 Jira: https://gem5.atlassian.net/browse/GEM5-594 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29352 Maintainer: Bobby R. Bruce Tested-by: kokoro Reviewed-by: Bobby R. Bruce --- build_opts/ARM_MESI_Three_Level | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_opts/ARM_MESI_Three_Level b/build_opts/ARM_MESI_Three_Level index 1836fb095b..29a429ce68 100644 --- a/build_opts/ARM_MESI_Three_Level +++ b/build_opts/ARM_MESI_Three_Level @@ -2,5 +2,5 @@ # All rights reserved. TARGET_ISA = 'arm' -CPU_MODELS = 'TimingSimpleCPU, O3CPU' +CPU_MODELS = 'TimingSimpleCPU,O3CPU' PROTOCOL = 'MESI_Three_Level' From 729543159e6bbb7ccfe7072b4daf7735f53d8add Mon Sep 17 00:00:00 2001 From: Nadia Etemadi Date: Fri, 22 May 2020 12:00:49 -0700 Subject: [PATCH 42/56] arch-arm: Fixed spacing issue in ARM_MOESI_hammer Change-Id: I5e38d1fb0b3c61ae40d26db21b8d20cc3199b391 Jira: https://gem5.atlassian.net/browse/GEM5-594 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29393 Maintainer: Bobby R. Bruce Reviewed-by: Jason Lowe-Power Tested-by: kokoro --- build_opts/ARM_MOESI_hammer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_opts/ARM_MOESI_hammer b/build_opts/ARM_MOESI_hammer index 2eddc5b05d..2ba8ce835b 100644 --- a/build_opts/ARM_MOESI_hammer +++ b/build_opts/ARM_MOESI_hammer @@ -2,5 +2,5 @@ # All rights reserved. TARGET_ISA = 'arm' -CPU_MODELS = 'TimingSimpleCPU, O3CPU' +CPU_MODELS = 'TimingSimpleCPU,O3CPU' PROTOCOL = 'MOESI_hammer' From 80a263698323852b1951d8d71ca0d599dff7ef3c Mon Sep 17 00:00:00 2001 From: Jason Lowe-Power Date: Fri, 22 May 2020 19:13:46 -0700 Subject: [PATCH 43/56] systemc: Fix clang9 linker error Likely a compiler bug, but if this function is allowed to be inlined, clang9 throws a linker error. Fix this error by making sure the function isn't inlined. Change-Id: I4bfade889796915e7bb4b224eafa6e72d4ec59da Issue-on: https://gem5.atlassian.net/projects/GEM5/issues/GEM5-597 Signed-off-by: Jason Lowe-Power Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29394 Maintainer: Bobby R. Bruce Reviewed-by: Hoa Nguyen Tested-by: kokoro --- src/systemc/core/scheduler.cc | 7 +++++++ src/systemc/core/scheduler.hh | 7 +------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/systemc/core/scheduler.cc b/src/systemc/core/scheduler.cc index 179bd5523d..f94c204994 100644 --- a/src/systemc/core/scheduler.cc +++ b/src/systemc/core/scheduler.cc @@ -479,6 +479,13 @@ Scheduler::scheduleStop(bool finish_delta) schedule(&stopEvent); } +void +Scheduler::scheduleTimeAdvancesEvent() +{ + if (!traceFiles.empty() && !timeAdvancesEvent.scheduled()) + schedule(&timeAdvancesEvent); +} + void Scheduler::trace(bool delta) { diff --git a/src/systemc/core/scheduler.hh b/src/systemc/core/scheduler.hh index c9ca161cf1..e7c7290e30 100644 --- a/src/systemc/core/scheduler.hh +++ b/src/systemc/core/scheduler.hh @@ -459,12 +459,7 @@ class Scheduler void timeAdvances() { trace(false); } EventWrapper timeAdvancesEvent; - void - scheduleTimeAdvancesEvent() - { - if (!traceFiles.empty() && !timeAdvancesEvent.scheduled()) - schedule(&timeAdvancesEvent); - } + void scheduleTimeAdvancesEvent(); uint64_t _numCycles; uint64_t _changeStamp; From 7ffd684334e93fb0268e114802e55e8e118694ee Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Thu, 16 Apr 2020 11:55:17 -0700 Subject: [PATCH 44/56] tests,python: Upgrading testlib to function with Python2 Change-Id: I9926b1507e9069ae8564c31bdd377b2b916462a2 Issue-on: https://gem5.atlassian.net/browse/GEM5-395 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29088 Reviewed-by: Bobby R. Bruce Maintainer: Bobby R. Bruce Tested-by: kokoro --- ext/testlib/__init__.py | 6 +- ext/testlib/{config.py => configuration.py} | 8 +-- ext/testlib/fixture.py | 6 +- ext/testlib/handlers.py | 16 +++--- ext/testlib/helper.py | 6 +- ext/testlib/loader.py | 47 ++++++++------- ext/testlib/log.py | 5 +- ext/testlib/main.py | 64 ++++++++++----------- ext/testlib/query.py | 4 +- ext/testlib/result.py | 18 +++--- ext/testlib/runner.py | 12 ++-- ext/testlib/sandbox.py | 10 ++-- ext/testlib/suite.py | 6 +- ext/testlib/terminal.py | 29 +++++----- ext/testlib/{test.py => test_util.py} | 6 +- ext/testlib/uid.py | 6 +- ext/testlib/wrappers.py | 7 ++- tests/configs/base_config.py | 4 +- tests/gem5/__init__.py | 8 +-- tests/gem5/cpu_tests/test.py | 4 +- tests/gem5/fixture.py | 17 +++--- tests/gem5/memory/test.py | 4 +- tests/gem5/suite.py | 12 ++-- tests/gem5/verifier.py | 4 +- tests/main.py | 6 +- tests/testing/__init__.py | 2 +- tests/testing/helpers.py | 2 +- tests/testing/results.py | 5 +- tests/testing/tests.py | 17 ++++-- tests/testing/units.py | 11 ++-- tests/tests.py | 2 +- 31 files changed, 190 insertions(+), 164 deletions(-) rename ext/testlib/{config.py => configuration.py} (99%) rename ext/testlib/{test.py => test_util.py} (97%) diff --git a/ext/testlib/__init__.py b/ext/testlib/__init__.py index 893da5433a..898205d9ab 100644 --- a/ext/testlib/__init__.py +++ b/ext/testlib/__init__.py @@ -29,12 +29,12 @@ from .state import * from .runner import * -from .test import * +from .test_util import * from .suite import * from .loader import * from .fixture import * -from .config import * -from main import main +from .configuration import * +from .main import main #TODO Remove this awkward bootstrap #FIXME diff --git a/ext/testlib/config.py b/ext/testlib/configuration.py similarity index 99% rename from ext/testlib/config.py rename to ext/testlib/configuration.py index 189f7c1d52..04744e113d 100644 --- a/ext/testlib/config.py +++ b/ext/testlib/configuration.py @@ -83,10 +83,11 @@ import copy import os import re -from ConfigParser import ConfigParser +from six import add_metaclass +from six.moves import configparser as ConfigParser from pickle import HIGHEST_PROTOCOL as highest_pickle_protocol -from helper import absdirpath, AttrDict, FrozenAttrDict +from testlib.helper import absdirpath, AttrDict, FrozenAttrDict class UninitialzedAttributeException(Exception): ''' @@ -598,9 +599,8 @@ def define_common_args(config): # one in the list will be saved. common_args = AttrDict({arg.name:arg for arg in common_args}) - +@add_metaclass(abc.ABCMeta) class ArgParser(object): - __metaclass__ = abc.ABCMeta def __init__(self, parser): # Copy public methods of the parser. diff --git a/ext/testlib/fixture.py b/ext/testlib/fixture.py index 7af6cb289f..20568b80f2 100644 --- a/ext/testlib/fixture.py +++ b/ext/testlib/fixture.py @@ -29,8 +29,8 @@ import copy import traceback -import helper -import log +import testlib.helper as helper +import testlib.log as log class SkipException(Exception): def __init__(self, fixture, testitem): @@ -61,7 +61,7 @@ class Fixture(object): collector = helper.InstanceCollector() def __new__(klass, *args, **kwargs): - obj = super(Fixture, klass).__new__(klass, *args, **kwargs) + obj = super(Fixture, klass).__new__(klass) Fixture.collector.collect(obj) return obj diff --git a/ext/testlib/handlers.py b/ext/testlib/handlers.py index 6f76940712..3005e01efb 100644 --- a/ext/testlib/handlers.py +++ b/ext/testlib/handlers.py @@ -35,20 +35,20 @@ from __future__ import print_function import multiprocessing import os -import Queue import sys import threading import time import traceback -import helper -import log -import result -import state -import test -import terminal +import testlib.helper as helper +import testlib.log as log +import testlib.result as result +import testlib.state as state +import testlib.test_util as test +import testlib.terminal as terminal -from config import config, constants +from six.moves import queue as Queue +from testlib.configuration import config, constants class _TestStreamManager(object): diff --git a/ext/testlib/helper.py b/ext/testlib/helper.py index ac49e468eb..4237a765e1 100644 --- a/ext/testlib/helper.py +++ b/ext/testlib/helper.py @@ -34,7 +34,6 @@ from collections import MutableSet, OrderedDict import difflib import errno import os -import Queue import re import shutil import stat @@ -44,6 +43,8 @@ import threading import time import traceback +from six.moves import queue as Queue + #TODO Tear out duplicate logic from the sandbox IOManager def log_call(logger, command, *popenargs, **kwargs): ''' @@ -80,7 +81,8 @@ def log_call(logger, command, *popenargs, **kwargs): def log_output(log_callback, pipe, redirects=tuple()): # Read iteractively, don't allow input to fill the pipe. - for line in iter(pipe.readline, ''): + for line in iter(pipe.readline, b''): + line = line.decode("utf-8") for r in redirects: r.write(line) log_callback(line.rstrip()) diff --git a/ext/testlib/loader.py b/ext/testlib/loader.py index 8f8f60e707..bb2fe4ef92 100644 --- a/ext/testlib/loader.py +++ b/ext/testlib/loader.py @@ -67,16 +67,17 @@ a :class:`TestSuite` named after the module. import os import re +import six import sys import traceback -import config -import log -import suite as suite_mod -import test as test_mod -import fixture as fixture_mod -import wrappers -import uid +import testlib.configuration as configuration +import testlib.log as log +import testlib.suite as suite_mod +import testlib.test_util as test_mod +import testlib.fixture as fixture_mod +import testlib.wrappers as wrappers +import testlib.uid as uid class DuplicateTestItemException(Exception): ''' @@ -112,7 +113,7 @@ def _assert_files_in_same_dir(files): if files: directory = os.path.dirname(files[0]) for f in files: - assert os.path.dirname(f) == directory + assert(os.path.dirname(f) == directory) class Loader(object): ''' @@ -186,6 +187,7 @@ class Loader(object): self._loaded_a_file = True for directory in self._discover_files(root): + directory = list(directory) if directory: _assert_files_in_same_dir(directory) for f in directory: @@ -193,6 +195,7 @@ class Loader(object): def load_dir(self, directory): for dir_ in self._discover_files(directory): + directory = list(directory) _assert_files_in_same_dir(dir_) for f in dir_: self.load_file(f) @@ -221,29 +224,27 @@ class Loader(object): sys.path.insert(0, os.path.dirname(path)) cwd = os.getcwd() os.chdir(os.path.dirname(path)) - config.config.file_under_load = path + configuration.config.file_under_load = path new_tests = test_mod.TestCase.collector.create() new_suites = suite_mod.TestSuite.collector.create() new_fixtures = fixture_mod.Fixture.collector.create() - def cleanup(): - config.config.file_under_load = None - sys.path[:] = old_path - os.chdir(cwd) - test_mod.TestCase.collector.remove(new_tests) - suite_mod.TestSuite.collector.remove(new_suites) - fixture_mod.Fixture.collector.remove(new_fixtures) - try: - execfile(path, newdict, newdict) + exec(open(path).read(), newdict, newdict) except Exception as e: log.test_log.debug(traceback.format_exc()) log.test_log.warn( 'Exception thrown while loading "%s"\n' 'Ignoring all tests in this file.' % (path)) - cleanup() + # Clean up + configuration.config.file_under_load = None + sys.path[:] = old_path + os.chdir(cwd) + test_mod.TestCase.collector.remove(new_tests) + suite_mod.TestSuite.collector.remove(new_suites) + fixture_mod.Fixture.collector.remove(new_fixtures) return # Create a module test suite for those not contained in a suite. @@ -281,7 +282,13 @@ class Loader(object): self.suites.extend(loaded_suites) self.suite_uids.update({suite.uid: suite for suite in loaded_suites}) - cleanup() + # Clean up + configuration.config.file_under_load = None + sys.path[:] = old_path + os.chdir(cwd) + test_mod.TestCase.collector.remove(new_tests) + suite_mod.TestSuite.collector.remove(new_suites) + fixture_mod.Fixture.collector.remove(new_fixtures) def _discover_files(self, root): ''' diff --git a/ext/testlib/log.py b/ext/testlib/log.py index 5ba6f5d4f3..cddb9217c6 100644 --- a/ext/testlib/log.py +++ b/ext/testlib/log.py @@ -30,8 +30,9 @@ This module supplies the global `test_log` object which all testing results and messages are reported through. ''' -import wrappers +import testlib.wrappers as wrappers +from six import add_metaclass class LogLevel(): Fatal = 0 @@ -55,6 +56,7 @@ class RecordTypeCounterMetaclass(type): RecordTypeCounterMetaclass.counter += 1 +@add_metaclass(RecordTypeCounterMetaclass) class Record(object): ''' A generic object that is passed to the :class:`Log` and its handlers. @@ -62,7 +64,6 @@ class Record(object): ..note: Although not statically enforced, all items in the record should be be pickleable. This enables logging accross multiple processes. ''' - __metaclass__ = RecordTypeCounterMetaclass def __init__(self, **data): self.data = data diff --git a/ext/testlib/main.py b/ext/testlib/main.py index 3827f7815f..9c9ed03dd1 100644 --- a/ext/testlib/main.py +++ b/ext/testlib/main.py @@ -29,16 +29,16 @@ import os import itertools -import config -import fixture as fixture_mod -import handlers -import loader as loader_mod -import log -import query -import result -import runner -import terminal -import uid +import testlib.configuration as configuration +import testlib.fixture as fixture_mod +import testlib.handlers as handlers +import testlib.loader as loader_mod +import testlib.log as log +import testlib.query as query +import testlib.result as result +import testlib.runner as runner +import testlib.terminal as terminal +import testlib.uid as uid def entry_message(): log.test_log.message("Running the new gem5 testing script.") @@ -50,7 +50,7 @@ def entry_message(): class RunLogHandler(): def __init__(self): term_handler = handlers.TerminalHandler( - verbosity=config.config.verbose+log.LogLevel.Info + verbosity=configuration.config.verbose+log.LogLevel.Info ) summary_handler = handlers.SummaryHandler() self.mp_handler = handlers.MultiprocessingHandlerWrapper( @@ -62,7 +62,7 @@ class RunLogHandler(): def schedule_finalized(self, test_schedule): # Create the result handler object. self.result_handler = handlers.ResultHandler( - test_schedule, config.config.result_path) + test_schedule, configuration.config.result_path) self.mp_handler.add_handler(self.result_handler) def finish_testing(self): @@ -87,27 +87,27 @@ class RunLogHandler(): return self.result_handler.unsuccessful() def get_config_tags(): - return getattr(config.config, - config.StorePositionalTagsAction.position_kword) + return getattr(configuration.config, + configuration.StorePositionalTagsAction.position_kword) def filter_with_config_tags(loaded_library): tags = get_config_tags() final_tags = [] regex_fmt = '^%s$' - cfg = config.config + cfg = configuration.config def _append_inc_tag_filter(name): if hasattr(cfg, name): tag_opts = getattr(cfg, name) for tag in tag_opts: - final_tags.append(config.TagRegex(True, regex_fmt % tag)) + final_tags.append(configuration.TagRegex(True, regex_fmt % tag)) def _append_rem_tag_filter(name): if hasattr(cfg, name): tag_opts = getattr(cfg, name) for tag in cfg.constants.supported_tags[name]: if tag not in tag_opts: - final_tags.append(config.TagRegex(False, regex_fmt % tag)) + final_tags.append(configuration.TagRegex(False, regex_fmt % tag)) # Append additional tags for the isa, length, and variant options. # They apply last (they take priority) @@ -206,13 +206,13 @@ def load_tests(): testloader = loader_mod.Loader() log.test_log.message(terminal.separator()) log.test_log.message('Loading Tests', bold=True) - testloader.load_root(config.config.directory) + testloader.load_root(configuration.config.directory) return testloader def do_list(): term_handler = handlers.TerminalHandler( - verbosity=config.config.verbose+log.LogLevel.Info, - machine_only=config.config.quiet + verbosity=configuration.config.verbose+log.LogLevel.Info, + machine_only=configuration.config.quiet ) log.test_log.log_obj.add_handler(term_handler) @@ -223,11 +223,11 @@ def do_list(): qrunner = query.QueryRunner(test_schedule) - if config.config.suites: + if configuration.config.suites: qrunner.list_suites() - elif config.config.tests: + elif configuration.config.tests: qrunner.list_tests() - elif config.config.all_tags: + elif configuration.config.all_tags: qrunner.list_tags() else: qrunner.list_suites() @@ -259,13 +259,13 @@ def run_schedule(test_schedule, log_handler): log.test_log.message('Running Tests from {} suites' .format(len(test_schedule.suites)), bold=True) log.test_log.message("Results will be stored in {}".format( - config.config.result_path)) + configuration.config.result_path)) log.test_log.message(terminal.separator()) # Build global fixtures and exectute scheduled test suites. - if config.config.test_threads > 1: + if configuration.config.test_threads > 1: library_runner = runner.LibraryParallelRunner(test_schedule) - library_runner.set_threads(config.config.test_threads) + library_runner.set_threads(configuration.config.test_threads) else: library_runner = runner.LibraryRunner(test_schedule) library_runner.run() @@ -279,8 +279,8 @@ def run_schedule(test_schedule, log_handler): def do_run(): # Initialize early parts of the log. with RunLogHandler() as log_handler: - if config.config.uid: - uid_ = uid.UID.from_uid(config.config.uid) + if configuration.config.uid: + uid_ = uid.UID.from_uid(configuration.config.uid) if isinstance(uid_, uid.TestUID): log.test_log.error('Unable to run a standalone test.\n' 'Gem5 expects test suites to be the smallest unit ' @@ -305,8 +305,8 @@ def do_rerun(): with RunLogHandler() as log_handler: # Load previous results results = result.InternalSavedResults.load( - os.path.join(config.config.result_path, - config.constants.pickle_filename)) + os.path.join(configuration.config.result_path, + configuration.constants.pickle_filename)) rerun_suites = (suite.uid for suite in results if suite.unsuccessful) @@ -323,10 +323,10 @@ def main(): Returns 0 on success and 1 otherwise so it can be used as a return code for scripts. ''' - config.initialize_config() + configuration.initialize_config() # 'do' the given command. - result = globals()['do_'+config.config.command]() + result = globals()['do_'+configuration.config.command]() log.test_log.close() return result diff --git a/ext/testlib/query.py b/ext/testlib/query.py index c66445c446..174af626fe 100644 --- a/ext/testlib/query.py +++ b/ext/testlib/query.py @@ -26,8 +26,8 @@ # # Authors: Sean Wilson -import terminal -import log +import testlib.terminal as terminal +import testlib.log as log # TODO Refactor print logic out of this so the objects # created are separate from print logic. diff --git a/ext/testlib/result.py b/ext/testlib/result.py index 786c21b609..38b3322ba1 100644 --- a/ext/testlib/result.py +++ b/ext/testlib/result.py @@ -30,10 +30,10 @@ import os import pickle import xml.sax.saxutils -from config import config -import helper -import state -import log +from testlib.configuration import config +import testlib.helper as helper +import testlib.state as state +import testlib.log as log def _create_uid_index(iterable): index = {} @@ -62,7 +62,7 @@ class _CommonMetadataMixin: return self._metadata.result.value != state.Result.Passed -class InternalTestResult(object, _CommonMetadataMixin): +class InternalTestResult(_CommonMetadataMixin): def __init__(self, obj, suite, directory): self._metadata = obj.metadata self.suite = suite @@ -77,7 +77,7 @@ class InternalTestResult(object, _CommonMetadataMixin): ) -class InternalSuiteResult(object, _CommonMetadataMixin): +class InternalSuiteResult(_CommonMetadataMixin): def __init__(self, obj, directory): self._metadata = obj.metadata self.directory = directory @@ -104,7 +104,7 @@ class InternalSuiteResult(object, _CommonMetadataMixin): return results -class InternalLibraryResults(object, _CommonMetadataMixin): +class InternalLibraryResults(_CommonMetadataMixin): def __init__(self, obj, directory): self.directory = directory self._metadata = obj.metadata @@ -159,12 +159,12 @@ class InternalSavedResults: if exc.errno != errno.EEXIST: raise - with open(path, 'w') as f: + with open(path, 'wb') as f: pickle.dump(results, f, protocol) @staticmethod def load(path): - with open(path, 'r') as f: + with open(path, 'rb') as f: return pickle.load(f) diff --git a/ext/testlib/runner.py b/ext/testlib/runner.py index 9868cefb11..ec3c838e7d 100644 --- a/ext/testlib/runner.py +++ b/ext/testlib/runner.py @@ -30,13 +30,13 @@ import multiprocessing.dummy import threading import traceback -import helper -import state -import log -import sandbox +import testlib.helper as helper +import testlib.state as state +import testlib.log as log +import testlib.sandbox as sandbox -from state import Status, Result -from fixture import SkipException +from testlib.state import Status, Result +from testlib.fixture import SkipException def compute_aggregate_result(iterable): ''' diff --git a/ext/testlib/sandbox.py b/ext/testlib/sandbox.py index 49fe133eab..bdc6d88595 100644 --- a/ext/testlib/sandbox.py +++ b/ext/testlib/sandbox.py @@ -33,7 +33,7 @@ import sys import threading import traceback -import log +import testlib.log as log pdb._Pdb = pdb.Pdb class ForkedPdb(pdb._Pdb): @@ -81,18 +81,18 @@ class IoManager(object): self.old_stdout = os.dup(sys.stdout.fileno()) os.dup2(self.stderr_wp, sys.stderr.fileno()) - sys.stderr = os.fdopen(self.stderr_wp, 'w', 0) + sys.stderr = os.fdopen(self.stderr_wp, 'w') os.dup2(self.stdout_wp, sys.stdout.fileno()) - sys.stdout = os.fdopen(self.stdout_wp, 'w', 0) + sys.stdout = os.fdopen(self.stdout_wp, 'w') def restore_pipes(self): self.stderr_wp = os.dup(sys.stderr.fileno()) self.stdout_wp = os.dup(sys.stdout.fileno()) os.dup2(self.old_stderr, sys.stderr.fileno()) - sys.stderr = os.fdopen(self.old_stderr, 'w', 0) + sys.stderr = open(self.old_stderr, 'w') os.dup2(self.old_stdout, sys.stdout.fileno()) - sys.stdout = os.fdopen(self.old_stdout, 'w', 0) + sys.stdout = open(self.old_stdout, 'w') def start_loggers(self): self.log_ouput() diff --git a/ext/testlib/suite.py b/ext/testlib/suite.py index 2ce817a6e8..eae52fd922 100644 --- a/ext/testlib/suite.py +++ b/ext/testlib/suite.py @@ -27,8 +27,8 @@ # Authors: Sean Wilson -import helper -import runner as runner_mod +import testlib.helper as helper +import testlib.runner as runner_mod class TestSuite(object): ''' @@ -52,7 +52,7 @@ class TestSuite(object): tags = set() def __new__(klass, *args, **kwargs): - obj = super(TestSuite, klass).__new__(klass, *args, **kwargs) + obj = super(TestSuite, klass).__new__(klass) TestSuite.collector.collect(obj) return obj diff --git a/ext/testlib/terminal.py b/ext/testlib/terminal.py index bdb20edea4..bc4c85599d 100644 --- a/ext/testlib/terminal.py +++ b/ext/testlib/terminal.py @@ -28,6 +28,7 @@ import sys import fcntl import termios import struct +import six # Intended usage example: # @@ -74,7 +75,7 @@ try: def cap_string(s, *args): cap = curses.tigetstr(s) if cap: - return curses.tparm(cap, *args) + return curses.tparm(cap, *args).decode("utf-8") else: return '' except: @@ -84,7 +85,7 @@ class ColorStrings(object): def __init__(self, cap_string): for i, c in enumerate(color_names): setattr(self, c, cap_string('setaf', i)) - for name, cap in capability_map.iteritems(): + for name, cap in six.iteritems(capability_map): setattr(self, name, cap_string(cap)) termcap = ColorStrings(cap_string) @@ -137,7 +138,7 @@ def insert_separator(inside, char=default_separator, .. seealso:: :func:`separator` ''' # Use a bytearray so it's efficient to manipulate - string = bytearray(separator(char, color=color)) + string = bytearray(separator(char, color=color), 'utf-8') # Check if we can fit inside with at least min_barrier. gap = (len(string) - len(inside)) - min_barrier * 2 @@ -145,27 +146,27 @@ def insert_separator(inside, char=default_separator, # We'll need to expand the string to fit us. string.extend([ char for _ in range(-gap)]) # Emplace inside - middle = ((len(string)-1)/2) - start_idx = middle - len(inside)/2 - string[start_idx:len(inside)+start_idx] = inside - return str(string) + middle = (len(string)-1)//2 + start_idx = middle - len(inside)//2 + string[start_idx:len(inside)+start_idx] = str.encode(inside) + return str(string.decode("utf-8")) if __name__ == '__main__': def test_termcap(obj): for c_name in color_names: c_str = getattr(obj, c_name) - print c_str + c_name + obj.Normal + print(c_str + c_name + obj.Normal) for attr_name in capability_names: if attr_name == 'Normal': continue attr_str = getattr(obj, attr_name) - print attr_str + c_str + attr_name + " " + c_name + obj.Normal - print obj.Bold + obj.Underline + \ - c_name + "Bold Underline " + c_str + obj.Normal + print(attr_str + c_str + attr_name + " " + c_name + obj.Normal) + print(obj.Bold + obj.Underline + \ + c_name + "Bold Underline " + c_str + obj.Normal) - print "=== termcap enabled ===" + print("=== termcap enabled ===") test_termcap(termcap) - print termcap.Normal - print "=== termcap disabled ===" + print(termcap.Normal) + print("=== termcap disabled ===") test_termcap(no_termcap) diff --git a/ext/testlib/test.py b/ext/testlib/test_util.py similarity index 97% rename from ext/testlib/test.py rename to ext/testlib/test_util.py index 18899d6d0f..5a0c0a8f19 100644 --- a/ext/testlib/test.py +++ b/ext/testlib/test_util.py @@ -28,8 +28,8 @@ import functools -import helper -import runner as runner_mod +import testlib.helper as helper +import testlib.runner as runner_mod class TestingException(Exception): '''Common ancestor for manual Testing Exceptions.''' @@ -62,7 +62,7 @@ class TestCase(object): collector = helper.InstanceCollector() def __new__(cls, *args, **kwargs): - obj = super(TestCase, cls).__new__(cls, *args, **kwargs) + obj = super(TestCase, cls).__new__(cls) TestCase.collector.collect(obj) return obj diff --git a/ext/testlib/uid.py b/ext/testlib/uid.py index fe56252a02..f8951a28da 100644 --- a/ext/testlib/uid.py +++ b/ext/testlib/uid.py @@ -29,7 +29,7 @@ import os import itertools -import config +import testlib.configuration as configuration class UID(object): sep = ':' @@ -42,12 +42,12 @@ class UID(object): @staticmethod def _shorten_path(path): return os.path.relpath(path, - os.path.commonprefix((config.constants.testing_base, + os.path.commonprefix((configuration.constants.testing_base, path))) @staticmethod def _full_path(short_path): - return os.path.join(config.constants.testing_base, short_path) + return os.path.join(configuration.constants.testing_base, short_path) @classmethod def uid_to_path(cls, uid): diff --git a/ext/testlib/wrappers.py b/ext/testlib/wrappers.py index 4bd22a468e..e91970262e 100644 --- a/ext/testlib/wrappers.py +++ b/ext/testlib/wrappers.py @@ -44,9 +44,8 @@ loaded by the testlib :class:`testlib.loader.Loader`. ''' import itertools -import log -import uid -from state import Status, Result +import testlib.uid as uid +from testlib.state import Status, Result class TestCaseMetadata(): def __init__(self, name, uid, path, result, status, suite_uid): @@ -127,9 +126,11 @@ class LoadedTestable(object): # TODO Change log to provide status_update, result_update for all types. def log_status(self, status): + import testlib.log as log log.test_log.status_update(self, status) def log_result(self, result): + import testlib.log as log log.test_log.result_update(self, result) def __iter__(self): diff --git a/tests/configs/base_config.py b/tests/configs/base_config.py index 0f7993875b..b124a132b0 100644 --- a/tests/configs/base_config.py +++ b/tests/configs/base_config.py @@ -43,9 +43,11 @@ from common import FSConfig from common import Options from common.Caches import * from ruby import Ruby +from six import add_metaclass _have_kvm_support = 'BaseKvmCPU' in globals() +@add_metaclass(ABCMeta) class BaseSystem(object): """Base system builder. @@ -55,8 +57,6 @@ class BaseSystem(object): the initialization process. """ - __metaclass__ = ABCMeta - def __init__(self, mem_mode='timing', mem_class=SimpleMemory, cpu_class=TimingSimpleCPU, num_cpus=1, num_threads=1, checker=False, mem_size=None, use_ruby=False): diff --git a/tests/gem5/__init__.py b/tests/gem5/__init__.py index 614165a482..0955469d08 100644 --- a/tests/gem5/__init__.py +++ b/tests/gem5/__init__.py @@ -24,8 +24,8 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -import suite -import fixture +import testlib.suite +import testlib.fixture -from suite import * -from fixture import * +from .suite import * +from .fixture import * diff --git a/tests/gem5/cpu_tests/test.py b/tests/gem5/cpu_tests/test.py index 339d15aae0..a21c4b9656 100644 --- a/tests/gem5/cpu_tests/test.py +++ b/tests/gem5/cpu_tests/test.py @@ -70,11 +70,11 @@ for isa in valid_isas: binary = joinpath(workload_binary.path, workload) for cpu in valid_isas[isa]: - gem5_verify_config( + gem5_verify_config( name='cpu_test_{}_{}'.format(cpu,workload), verifiers=verifiers, config=joinpath(getcwd(), 'run.py'), config_args=['--cpu={}'.format(cpu), binary], valid_isas=(isa.upper(),), fixtures=[workload_binary] - ) + ) diff --git a/tests/gem5/fixture.py b/tests/gem5/fixture.py index fc31b30c67..f28201b046 100644 --- a/tests/gem5/fixture.py +++ b/tests/gem5/fixture.py @@ -42,11 +42,11 @@ import shutil import sys import socket import threading -import urllib -import urllib2 + +from six.moves import urllib from testlib.fixture import Fixture -from testlib.config import config, constants +from testlib.configuration import config, constants from testlib.helper import log_call, cacheresult, joinpath, absdirpath import testlib.log as log from testlib.state import Result @@ -271,15 +271,16 @@ class DownloadedProgram(UniqueFixture): except OSError as e: if e.errno != errno.EEXIST: raise - urllib.urlretrieve(self.url, self.filename) + urllib.request.urlretrieve(self.url, self.filename) def _getremotetime(self): import datetime, time import _strptime # Needed for python threading bug - u = urllib2.urlopen(self.url, timeout=10) + u = urllib.request.urlopen(self.url, timeout=10) + return time.mktime(datetime.datetime.strptime( \ - u.info().getheaders("Last-Modified")[0], + u.info()["Last-Modified"], "%a, %d %b %Y %X GMT").timetuple()) def _setup(self, testitem): @@ -289,7 +290,7 @@ class DownloadedProgram(UniqueFixture): else: try: t = self._getremotetime() - except (urllib2.URLError, socket.timeout): + except (urllib.error.URLError, socket.timeout): # Problem checking the server, use the old files. log.test_log.debug("Could not contact server. Binaries may be old.") return @@ -315,7 +316,7 @@ class DownloadedArchive(DownloadedProgram): else: try: t = self._getremotetime() - except (urllib2.URLError, socket.timeout): + except (urllib.error.URLError, socket.timeout): # Problem checking the server, use the old files. log.test_log.debug("Could not contact server. " "Binaries may be old.") diff --git a/tests/gem5/memory/test.py b/tests/gem5/memory/test.py index 2a4eeb36fe..bf87a278c1 100644 --- a/tests/gem5/memory/test.py +++ b/tests/gem5/memory/test.py @@ -28,6 +28,8 @@ Test file for simple memory test TODO: Add stats checking ''' +import six + from testlib import * gem5_verify_config( @@ -48,7 +50,7 @@ simple_mem_params = [ for name, params in simple_mem_params: - args = ['--' + key + '=' + val for key,val in params.iteritems()] + args = ['--' + key + '=' + val for key,val in six.iteritems(params)] gem5_verify_config( name='simple_mem_' + name, diff --git a/tests/gem5/suite.py b/tests/gem5/suite.py index 25e652e840..4cf0f81a25 100644 --- a/tests/gem5/suite.py +++ b/tests/gem5/suite.py @@ -41,12 +41,13 @@ import copy import subprocess import sys -from testlib.test import TestFunction +from testlib.test_util import TestFunction from testlib.suite import TestSuite from testlib.helper import log_call -from testlib.config import constants, config -from fixture import TempdirFixture, Gem5Fixture, VariableFixture -import verifier +from testlib.configuration import constants, config +from .fixture import TempdirFixture, Gem5Fixture, VariableFixture + +from . import verifier def gem5_verify_config(name, config, @@ -190,6 +191,7 @@ def _create_test_run_gem5(config, config_args, gem5_args): command.append(config) # Config_args should set up the program args. command.extend(config_args) - returncode.value = log_call(params.log, command, stderr=sys.stderr) + returncode.value = log_call(params.log, command, stdout=sys.stdout, + stderr=sys.stderr) return test_run_gem5 diff --git a/tests/gem5/verifier.py b/tests/gem5/verifier.py index c955c407df..815b9bbafb 100644 --- a/tests/gem5/verifier.py +++ b/tests/gem5/verifier.py @@ -29,8 +29,8 @@ Built in test cases that verify particular details about a gem5 run. ''' import re -from testlib import test -from testlib.config import constants +from testlib import test_util as test +from testlib.configuration import constants from testlib.helper import joinpath, diff_out_file class Verifier(object): diff --git a/tests/main.py b/tests/main.py index 5cd68e91d1..3287ef14c4 100755 --- a/tests/main.py +++ b/tests/main.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python ''' The main source for testlib. Ties together the default test runners and loaders. @@ -10,6 +10,8 @@ from __future__ import print_function import sys import os +os.environ["PYTHONUNBUFFERED"] = "1" + base_dir = os.path.dirname(os.path.abspath(__file__)) ext_path = os.path.join(base_dir, os.pardir, 'ext') @@ -17,7 +19,7 @@ sys.path.insert(0, base_dir) sys.path.insert(0, ext_path) import testlib.main as testlib -import testlib.config as config +import testlib.configuration as config import testlib.helper as helper config.basedir = helper.absdirpath(__file__) diff --git a/tests/testing/__init__.py b/tests/testing/__init__.py index 4f97291d5c..5dcc684da7 100644 --- a/tests/testing/__init__.py +++ b/tests/testing/__init__.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2016 ARM Limited # All rights reserved diff --git a/tests/testing/helpers.py b/tests/testing/helpers.py index 6fc1e28a08..f46915c8f8 100755 --- a/tests/testing/helpers.py +++ b/tests/testing/helpers.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2016 ARM Limited # All rights reserved diff --git a/tests/testing/results.py b/tests/testing/results.py index 42ec24524e..eb88d4c238 100644 --- a/tests/testing/results.py +++ b/tests/testing/results.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2016 ARM Limited # All rights reserved @@ -40,6 +40,7 @@ from __future__ import print_function from abc import ABCMeta, abstractmethod import inspect import pickle +from six import add_metaclass import string import sys @@ -141,8 +142,8 @@ class TestResult(object): def __nonzero__(self): return all([ r for r in self.results ]) +@add_metaclass(ABCMeta) class ResultFormatter(object): - __metaclass__ = ABCMeta def __init__(self, fout=sys.stdout, verbose=False): self.verbose = verbose diff --git a/tests/testing/tests.py b/tests/testing/tests.py index 29bfa78b66..042180d796 100755 --- a/tests/testing/tests.py +++ b/tests/testing/tests.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2016-2017 ARM Limited # All rights reserved @@ -38,9 +38,15 @@ from abc import ABCMeta, abstractmethod import os from collections import namedtuple -from .units import * -from .helpers import FileIgnoreList -from .results import TestResult + +from six import add_metaclass + +import sys +sys.path.append(os.path.dirname(__file__)) + +from units import * +from helpers import FileIgnoreList +from results import TestResult import shutil _test_base = os.path.join(os.path.dirname(__file__), "..") @@ -172,6 +178,7 @@ def get_default_protocol(arch): all_categories = ("quick", "long") all_modes = ("fs", "se") +@add_metaclass(ABCMeta) class Test(object): """Test case base class. @@ -182,8 +189,6 @@ class Test(object): """ - __metaclass__ = ABCMeta - def __init__(self, name): self.test_name = name diff --git a/tests/testing/units.py b/tests/testing/units.py index 9c9c1e5bf4..d1fa6b227c 100644 --- a/tests/testing/units.py +++ b/tests/testing/units.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2016 ARM Limited # All rights reserved @@ -41,15 +41,18 @@ import difflib import functools import os import re +from six import add_metaclass import subprocess import sys import traceback -from .results import UnitResult -from .helpers import * +sys.path.append(os.path.dirname(__file__)) +from results import UnitResult +from helpers import * _test_base = os.path.join(os.path.dirname(__file__), "..") +@add_metaclass(ABCMeta) class TestUnit(object): """Base class for all test units. @@ -64,8 +67,6 @@ class TestUnit(object): """ - __metaclass__ = ABCMeta - def __init__(self, name, ref_dir, test_dir, skip=False): self.name = name self.ref_dir = ref_dir diff --git a/tests/tests.py b/tests/tests.py index b23cb5a1df..df46b414cc 100755 --- a/tests/tests.py +++ b/tests/tests.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python # # Copyright (c) 2016 ARM Limited # All rights reserved From 074e230dd2a21cbc41df5b3ed3f169521c03e9e5 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sat, 23 May 2020 00:07:03 -0700 Subject: [PATCH 45/56] Revert "systemc: Fix clang9 linker error" This reverts commit 80a263698323852b1951d8d71ca0d599dff7ef3c. Change-Id: I24c69d1a5a54ac8b8d5713314f6e91e5a6263c26 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29395 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/systemc/core/scheduler.cc | 7 ------- src/systemc/core/scheduler.hh | 7 ++++++- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/systemc/core/scheduler.cc b/src/systemc/core/scheduler.cc index f94c204994..179bd5523d 100644 --- a/src/systemc/core/scheduler.cc +++ b/src/systemc/core/scheduler.cc @@ -479,13 +479,6 @@ Scheduler::scheduleStop(bool finish_delta) schedule(&stopEvent); } -void -Scheduler::scheduleTimeAdvancesEvent() -{ - if (!traceFiles.empty() && !timeAdvancesEvent.scheduled()) - schedule(&timeAdvancesEvent); -} - void Scheduler::trace(bool delta) { diff --git a/src/systemc/core/scheduler.hh b/src/systemc/core/scheduler.hh index e7c7290e30..c9ca161cf1 100644 --- a/src/systemc/core/scheduler.hh +++ b/src/systemc/core/scheduler.hh @@ -459,7 +459,12 @@ class Scheduler void timeAdvances() { trace(false); } EventWrapper timeAdvancesEvent; - void scheduleTimeAdvancesEvent(); + void + scheduleTimeAdvancesEvent() + { + if (!traceFiles.empty() && !timeAdvancesEvent.scheduled()) + schedule(&timeAdvancesEvent); + } uint64_t _numCycles; uint64_t _changeStamp; From 92711fe8e9d14e63a047cbd48e978533fcb7c6ed Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sun, 9 Feb 2020 20:03:58 -0800 Subject: [PATCH 46/56] scons: Disable some warnings in clang. The defaulted-function-deleted warning triggers in generated code which would be very tricky to address. The c99-designator refers to using an array index to specify which element of an array is being initialized. This makes the code more clear and is supported by both g++ and clang++. Designated initializers for structures are being introduced in C++20, but there is no word I could find on arrays. This warning option seems to only exist in clang versions 10 and up, so we can only use it on those versions. Change-Id: I8fb858e643814638c552a49336db2672be8e43c8 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29396 Reviewed-by: Jason Lowe-Power Maintainer: Bobby R. Bruce Tested-by: kokoro --- SConstruct | 3 +++ 1 file changed, 3 insertions(+) diff --git a/SConstruct b/SConstruct index 82fad3b957..142800e606 100755 --- a/SConstruct +++ b/SConstruct @@ -475,7 +475,10 @@ elif main['CLANG']: # use struct hash and class hash # interchangeably. '-Wno-mismatched-tags', + '-Wno-defaulted-function-deleted', ]) + if compareVersions(clang_version, "10.0") >= 0: + main.Append(CCFLAGS=['-Wno-c99-designator']) main.Append(TCMALLOC_CCFLAGS=['-fno-builtin']) From 4076a79fc1b273b082f24470181e4d0de4bd0a74 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sat, 23 May 2020 01:05:25 -0700 Subject: [PATCH 47/56] systemc: Include eventq_impl.hh in scheduler.hh. This ensures that we also get the inline definitions of some of the methods defined in the EventQueue class. In certain circumstances gem5 won't link properly otherwise. Change-Id: Ie0dfef207a165095bdfe1199cd1f690cebc4cbbf Issue-on: https://gem5.atlassian.net/projects/GEM5/issues/GEM5-597 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29397 Reviewed-by: Jason Lowe-Power Maintainer: Bobby R. Bruce Tested-by: kokoro --- src/systemc/core/scheduler.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/systemc/core/scheduler.hh b/src/systemc/core/scheduler.hh index c9ca161cf1..31cc35e8e9 100644 --- a/src/systemc/core/scheduler.hh +++ b/src/systemc/core/scheduler.hh @@ -36,7 +36,7 @@ #include "base/logging.hh" #include "sim/core.hh" -#include "sim/eventq.hh" +#include "sim/eventq_impl.hh" #include "systemc/core/channel.hh" #include "systemc/core/list.hh" #include "systemc/core/process.hh" From 77482d59a511d1e741185c9d5a6c87edead7e8bb Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 25 May 2020 16:32:56 -0700 Subject: [PATCH 48/56] scons,python: Update makeTheGPUISA to Python3 This function was causing an error to occur when trying to compile HSAIL and GCN in a Python3 environment. It has now been upgraded to work in both Python2 and Python3. Change-Id: If8d6ee1e08c47d5a36182afc10cf86a8e905bda0 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29410 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Maintainer: Gabe Black Tested-by: kokoro --- src/SConscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SConscript b/src/SConscript index 1de8a2d754..7cd628a7c8 100644 --- a/src/SConscript +++ b/src/SConscript @@ -666,7 +666,7 @@ env.Command('config/the_isa.hh', list(map(Value, all_isa_list)), MakeAction(makeTheISA, Transform("CFG ISA", 0))) def makeTheGPUISA(source, target, env): - isas = [ src.get_contents() for src in source ] + isas = [ src.get_contents().decode('utf-8') for src in source ] target_gpu_isa = env['TARGET_GPU_ISA'] def define(isa): return str(isa.upper()) + '_ISA' From d342e0309531788424777a4de52ba11069857475 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 25 May 2020 14:24:34 -0700 Subject: [PATCH 49/56] arch-riscv,misc: Added M5_VAR_USED to MiscRegNames Clang compilers return an error about MiscRegNames being unused. M5_VAR_USED fixes this. Change-Id: I515c5d1e8837020b674de49039c0525f896b7e37 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29452 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/arch/riscv/isa.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/arch/riscv/isa.cc b/src/arch/riscv/isa.cc index ac26230a13..055c95b352 100644 --- a/src/arch/riscv/isa.cc +++ b/src/arch/riscv/isa.cc @@ -38,6 +38,7 @@ #include "arch/riscv/pagetable.hh" #include "arch/riscv/registers.hh" #include "base/bitfield.hh" +#include "base/compiler.hh" #include "cpu/base.hh" #include "debug/Checkpoint.hh" #include "debug/RiscvMisc.hh" @@ -48,7 +49,7 @@ namespace RiscvISA { -const std::array MiscRegNames = {{ +const std::array M5_VAR_USED MiscRegNames = {{ [MISCREG_PRV] = "PRV", [MISCREG_ISA] = "ISA", [MISCREG_VENDORID] = "VENDORID", From 280363ec6abd8be50477ceb72b1b07922b2240dd Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 25 May 2020 14:28:55 -0700 Subject: [PATCH 50/56] arch-arm,misc: Add M5_CLASS_VAR_USED to faultTick Clang compilers returned an error that faultTick was unused. Adding M5_CLASS_VAR_USED resolves this. Change-Id: I97657b45997d2f1c7416b973cd9c02ae2d92b725 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29453 Maintainer: Jason Lowe-Power Reviewed-by: Giacomo Travaglini Tested-by: kokoro --- src/dev/arm/smmu_v3_transl.hh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dev/arm/smmu_v3_transl.hh b/src/dev/arm/smmu_v3_transl.hh index 243e54e264..d72c44c800 100644 --- a/src/dev/arm/smmu_v3_transl.hh +++ b/src/dev/arm/smmu_v3_transl.hh @@ -38,6 +38,7 @@ #ifndef __DEV_ARM_SMMU_V3_TRANSL_HH__ #define __DEV_ARM_SMMU_V3_TRANSL_HH__ +#include "base/compiler.hh" #include "dev/arm/smmu_v3_proc.hh" #include "dev/arm/smmu_v3_ptops.hh" #include "dev/arm/smmu_v3_slaveifc.hh" @@ -96,7 +97,7 @@ class SMMUTranslationProcess : public SMMUProcess TranslContext context; Tick recvTick; - Tick faultTick; + Tick M5_CLASS_VAR_USED faultTick; virtual void main(Yield &yield); From 1f292ed846c7c78d635c3d6668988f0d558773ad Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Tue, 26 May 2020 15:11:59 -0700 Subject: [PATCH 51/56] scons: "no-defautled-function-deleted" flag moved to only clang8+ It has been onserved that clang does not function with the "-Wno-defaulted-function-deleted" for versions below clang8. Change-Id: I6e6d1476350ae2b46b4de971fe3456697b39e43c Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29454 Reviewed-by: Jason Lowe-Power Reviewed-by: Anthony Gutierrez Maintainer: Jason Lowe-Power Tested-by: kokoro --- SConstruct | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index 142800e606..370cd60241 100755 --- a/SConstruct +++ b/SConstruct @@ -475,11 +475,13 @@ elif main['CLANG']: # use struct hash and class hash # interchangeably. '-Wno-mismatched-tags', - '-Wno-defaulted-function-deleted', ]) if compareVersions(clang_version, "10.0") >= 0: main.Append(CCFLAGS=['-Wno-c99-designator']) + if compareVersions(clang_version, "8.0") >= 0: + main.Append(CCFLAGS=['-Wno-defaulted-function-deleted']) + main.Append(TCMALLOC_CCFLAGS=['-fno-builtin']) # On Mac OS X/Darwin we need to also use libc++ (part of XCode) as From 5ad159ea323666640dc3d2e44069ab79c10f8904 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Tue, 26 May 2020 15:42:37 -0700 Subject: [PATCH 52/56] python,test: Fixed boot test in python3 by removing map In Python3 `map(lambda c: c.createThreads(), self.cpu)` does not execute `c.createThreads()`. This has been replaced with a for-loop which does work. Without this fix, the boot tests do not run in python3. Change-Id: I50d6c85ec4435ee04e248ea8bc4a3b4cc17c88fa Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29456 Tested-by: kokoro Reviewed-by: Jason Lowe-Power Reviewed-by: Anthony Gutierrez Maintainer: Jason Lowe-Power --- tests/gem5/x86-boot-tests/system/system.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/gem5/x86-boot-tests/system/system.py b/tests/gem5/x86-boot-tests/system/system.py index c55664e97f..bffd08a725 100755 --- a/tests/gem5/x86-boot-tests/system/system.py +++ b/tests/gem5/x86-boot-tests/system/system.py @@ -118,7 +118,8 @@ class MySystem(System): else: m5.fatal("No CPU type {}".format(cpu_type)) - map(lambda c: c.createThreads(), self.cpu) + for c in self.cpu: + c.createThreads() def setDiskImages(self, img_path_1, img_path_2): disk0 = CowDisk(img_path_1) From e5a2fbb860afa8221db591535cb874220f05e9d9 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 27 May 2020 03:16:06 -0700 Subject: [PATCH 53/56] mem-ruby,misc: Fixed clang template def error Without this fix `error: call to function 'operator<<' that is neither visible in the template definition nor found by argument-dependent loopup` is thrown when compiling HSAIL_X86 using a clang compiler (at `base/cprintf_formats.hhi:139`). This error is due to a "<<" operator in a template declared prior to its definition in the code. The operator is used in `base/cprintf_formats.hh`, included in `base/cprintf.hh`, and defined in `mem/ruby/common/BoolVec.hh`. Therefore, for clang to compile without error, `mem/ruby/common/BoolVec.hh` must be included before `base/cprintf.hh` when generating the `mem/ruby/protocol/RegionBuffer_Controller.cc` in `mem/slicc/symbols/StateMachine.py`. Due to the gem5 style-checker, an overly-verbose solution was required to permit this patch to be committed to the codebase. Change-Id: Ie0ae4053e4adc8c4e918e4a714035637925ca104 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29532 Tested-by: kokoro Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power --- src/mem/slicc/symbols/StateMachine.py | 33 +++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src/mem/slicc/symbols/StateMachine.py b/src/mem/slicc/symbols/StateMachine.py index 1263344aa2..8e3a1f84b6 100644 --- a/src/mem/slicc/symbols/StateMachine.py +++ b/src/mem/slicc/symbols/StateMachine.py @@ -458,6 +458,31 @@ void unset_tbe(${{self.TBEType.c_ident}}*& m_tbe_ptr); ident = self.ident c_ident = "%s_Controller" % self.ident + # Unfortunately, clang compilers will throw a "call to function ... + # that is neither visible in the template definition nor found by + # argument-dependent lookup" error if "mem/ruby/common/BoolVec.hh" is + # included after "base/cprintf.hh". This is because "base/cprintf.hh" + # utilizes a "<<" operator in "base/cprintf_formats.hh" that is + # defined in "mem/ruby/common/BoolVec.hh". While GCC compilers permit + # the operator definition after usage in this case, clang compilers do + # not. + # + # The reason for this verbose solution below is due to the gem5 + # style-checker, which will complain if "mem/ruby/common/BoolVec.hh" + # is included above "base/cprintf.hh" in this file, despite it being + # necessary in this case. This is therefore a bit of a hack to keep + # both clang and our style-checker happy. + base_include = ''' +#include "base/compiler.hh" +#include "base/cprintf.hh" + +''' + + boolvec_include = ''' +#include "mem/ruby/common/BoolVec.hh" + +''' + code(''' /** \\file $c_ident.cc * @@ -473,11 +498,11 @@ void unset_tbe(${{self.TBEType.c_ident}}*& m_tbe_ptr); #include #include -#include "base/compiler.hh" -#include "base/cprintf.hh" -#include "mem/ruby/common/BoolVec.hh" - ''') + + code(boolvec_include) + code(base_include) + for f in self.debug_flags: code('#include "debug/${{f}}.hh"') code(''' From a8fb7a0c1d42aa335643bc2cf1b80ac36ea715ec Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 27 May 2020 03:36:31 -0700 Subject: [PATCH 54/56] gpu-compute,misc: Removed unused 'vaddr' capture Clang compilers return a `error: lambda capture 'vaddr' is not used` error when compiling HSAIL_X86/gem5.opt. This unused lambda capture has therefore been removed. Change-Id: I2a7c58174a9ef83435099ab4daf84c762f017dd4 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29533 Tested-by: kokoro Reviewed-by: Jason Lowe-Power Reviewed-by: Anthony Gutierrez Maintainer: Jason Lowe-Power Maintainer: Anthony Gutierrez --- src/gpu-compute/gpu_tlb.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gpu-compute/gpu_tlb.cc b/src/gpu-compute/gpu_tlb.cc index 2ae40dadf2..37a8b03a28 100644 --- a/src/gpu-compute/gpu_tlb.cc +++ b/src/gpu-compute/gpu_tlb.cc @@ -314,7 +314,7 @@ namespace X86ISA return std::make_shared(0); req->setLocalAccessor( - [read,regNum,vaddr](ThreadContext *tc, PacketPtr pkt) + [read,regNum](ThreadContext *tc, PacketPtr pkt) { return localMiscRegAccess(read, regNum, tc, pkt); } From fc856981d8da4ce0145f1d534c3d981f4bf954da Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 27 May 2020 03:46:07 -0700 Subject: [PATCH 55/56] misc: Fixed null-pointer arithmetic error Doing arithmetic on a null pointer is undefined behavior in C/C++. Clang compilers complain when this occurs. As this MACRO is used twice, and does nothing important, it has been removed in favor of a more simple solution. A comment has been added explaining the MACRO's removal. Change-Id: I42d9356179ee0fa5cb20f827af34bb11780ad1a9 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29534 Maintainer: Bobby R. Bruce Reviewed-by: Jason Lowe-Power Tested-by: kokoro --- src/dev/hsa/hsa_packet_processor.hh | 5 ----- src/dev/hsa/hw_scheduler.cc | 17 +++++++++++++++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/dev/hsa/hsa_packet_processor.hh b/src/dev/hsa/hsa_packet_processor.hh index 5558d4eb69..206d9ab848 100644 --- a/src/dev/hsa/hsa_packet_processor.hh +++ b/src/dev/hsa/hsa_packet_processor.hh @@ -52,11 +52,6 @@ // HSA runtime supports only 5 signals per barrier packet #define NumSignalsPerBarrier 5 -// This define is copied from hsa runtime (libhsakmt/src/libhsakmt.h) -// This is the mapping function used by runtime for mapping -// queueID to dooorbell address -#define VOID_PTR_ADD32(ptr,n) (void*)((uint32_t*)(ptr) + n)/*ptr + offset*/ - class HSADevice; class HWScheduler; diff --git a/src/dev/hsa/hw_scheduler.cc b/src/dev/hsa/hw_scheduler.cc index 6b371551bd..57cf6d1b18 100644 --- a/src/dev/hsa/hw_scheduler.cc +++ b/src/dev/hsa/hw_scheduler.cc @@ -90,7 +90,12 @@ HWScheduler::registerNewQueue(uint64_t hostReadIndexPointer, // Map queue ID to doorbell. // We are only using offset to pio base address as doorbell // We use the same mapping function used by hsa runtime to do this mapping - Addr db_offset = (Addr)(VOID_PTR_ADD32(0, queue_id)); + // + // Originally + // #define VOID_PTR_ADD32(ptr,n) \ + // (void*)((uint32_t*)(ptr) + n)/*ptr + offset*/ + // (Addr)VOID_PTR_ADD32(0, queue_id) + Addr db_offset = queue_id; if (dbMap.find(db_offset) != dbMap.end()) { panic("Creating an already existing queue (queueID %d)", queue_id); } @@ -333,7 +338,15 @@ HWScheduler::write(Addr db_addr, uint32_t doorbell_reg) void HWScheduler::unregisterQueue(uint64_t queue_id) { - Addr db_offset = (Addr)(VOID_PTR_ADD32(0, queue_id)); + // Pointer arithmetic on a null pointer is undefined behavior. Clang + // compilers therefore complain if the following reads: + // `(Addr)(VOID_PRT_ADD32(0, queue_id))` + // + // Originally + // #define VOID_PTR_ADD32(ptr,n) \ + // (void*)((uint32_t*)(ptr) + n)/*ptr + offset*/ + // (Addr)VOID_PTR_ADD32(0, queue_id) + Addr db_offset = queue_id; auto dbmap_iter = dbMap.find(db_offset); if (dbmap_iter == dbMap.end()) { panic("Destroying a non-existing queue (db_offset %x)", From e2abf6c157ebde17e7bc7490bcbea7a9f823c8f1 Mon Sep 17 00:00:00 2001 From: Jason Lowe-Power Date: Wed, 13 May 2020 17:32:34 -0700 Subject: [PATCH 56/56] misc: Update release notes Change-Id: I3851a3780aae283d4dba5ab5afa20a4a02bc8e6d Signed-off-by: Jason Lowe-Power Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29067 Reviewed-by: Jason Lowe-Power Reviewed-by: Anthony Gutierrez Maintainer: Jason Lowe-Power Tested-by: kokoro --- RELEASE-NOTES.md | 102 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 89 insertions(+), 13 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 0e52e5dbad..1ea05f4045 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,19 +1,95 @@ # Version 20.0.0.0 -* Compiling and running gem5 with Python 3 is now fully supported. -* Compiling and running gem5 with GCC 8 and 9 is now supported. -* Scons-based tests have been migrated to the testlib framework. Please consult TESTING.md for more information on how these may be run. -* Support for the ALPHA ISA has been dropped. +Welcome to our first "official" gem5 release! +gem5 v19.0.0.0 was a "test" release, but this one has release notes, so it must be official! + +Thank you to everyone that made this release possible! +This has been a very productive release with over [70 issues closed](https://gem5.atlassian.net/), over 500 commits, and 31 unique contributors. +Below are some of the highlights, though I'm sure I've missed some important changes. + +## New features + +* [gem5-resources repository](https://gem5.googlesource.com/public/gem5-resources/) + * This new repository will store all of the *sources* (e.g., code) used to create testing and research resources. This includes disk images, testing binaries, kernel binaries, etc. + * Binaries created with the sources are hosted on dist.gem5.org. + * Details on the new page for resources: . * Memory SimObjects can now be initialized using an image file using the image_file parameter. -* The m5 utility has been revamped with a new build system based on scons, tests, and updated and more consistent feature support. +* **[USER-FACING CHANGE]** The m5 utility has been revamped with a new build system based on scons, tests, and updated and more consistent feature support. + * To build, now use `scons build//out/m5`, not `make`. + * [Documentation](http://www.gem5.org/documentation/general_docs/m5ops/) coming soon. * Robust support for marshalling data from a function call inside the simulation to a function within gem5 using a predefined set of rules. -* Workload configuration pulled out into its own object, simplifying the System object and making workload configuration more modular and flexible. + * Developers can specify an ABI for guest<->simulator calls and then "just call functions". + * Unifies pseudo-inst, syscall, and other support. + * Code within gem5 has been updated. However, users which added new pseudo-ops may have to update their code. +* **[PYTHON API CHANGE]** Workload configuration pulled out into its own object, simplifying the System object and making workload configuration more modular and flexible. + * All full system config/run scripts must be updated (e.g., anything that used the `LinuxX86System` or similar SimObject). + * Many of the parameters of `System` are now parameters of the `Workload` (see `src/sim/Workload.py`). + * For instance, many parameters of `LinuxX86System` are now part of `X86FsLinux` which is now the `workload` parameter of the `System` SimObject. + * See https://gem5-review.googlesource.com/c/public/gem5/+/24283/ and https://gem5-review.googlesource.com/c/public/gem5/+/26466 for more details. * Sv39 paging has been added to the RISC-V ISA, bringing gem5 close to running Linux on RISC-V. + * (Some) Baremetal OSes are now supported. +* Improvements to DRAM model: + * Added support for verifying available command bandwidth. + * Added support for multi-cycle commands. + * Added new timing parameters. + * Added ability to interleave bursts. + * Added LPDDR5 configurations. +* **[Developer change]** We are beginning to document gem5 APIs. + * Currently, only SimObjects and the APIs they depend on have been documented. + * We are using doxygen to mark "stable APIs" and will use manual code review to make sure the APIs stay stable. + * More information will be coming during gem5-20.1 development. + +## Removed features + +* Support for the ALPHA ISA has been dropped. + * All ALPHA ISA code has been removed + * Old "rcS" scripts for ALPHA have been removed + +## New supported platforms + +* Compiling and running gem5 with Python 3 is now fully supported. + * Lots of code changes required for this. + * There may still be some python code that's not up to date. Please open a [Jira ticket](https://gem5.atlassian.net/) if you find any code that doesn't work with python3. +* gem5 now supports Ubuntu 20.04. +* Compiling gem5 with GCC 8 and 9 is now supported. +* Compiling with clang up to version 9 is now supported. + +## Testing improvements + +* Scons-based tests have been migrated to the testlib framework. + * Tests can now be run with `tests/main.py`, except for the unittests. + * Please consult TESTING.md for more information on how these may be run. +* We are continuing to work on CI tests. Most of the plumbing is there for Google Cloud Build integration. See [the Jira issue](https://gem5.atlassian.net/browse/GEM5-237) for details. + +## Other API changes + +* **[API CHANGE]** Ruby's prefetcher renamed to RubyPrefetcher. + * Any SLICC protocols with prefetchers need to be updated. + * Some config scripts for Ruby protocols with prefetchers may need to be updated. +* **[API CHANGE]** SE mode improvements. + * Better support for the mmap and related syscalls. + * A new virtual memory area API for tracking SE mode allocations. + * When implementing syscalls, the way that guest memory is allocated changes. All code in gem5 is updated, but if there are any external syscalls, they may need be updated. +* **[COMMAND LINE CHANGE]** The `--disk-image` argument to `fs.py` is now optional. + * However, the disk image names *are no longer implied*. + * The script still implicitly searches `M5_PATH`, but the name of the disk image must be specified. +* **[API CHANGE]** SLICC `queueMemory` is now `enqueue`. + * All protocol configs must be updated with another message buffer in the memory controllers (directories). + * All protocol SLICC files must replace `queueMemoryRead` and `queueMemoryWrite` with `enqueue` to another "special" message buffer named `memQueue`. + * This allows finite buffering between the cache controllers and DRAMCtrl. +* **[API CHANGE]** Added Prefetcher namespace + * All prefetchers' names have changed from `*Prefetcher` to `Prefetcher::*` + * If you have any prefetchers that are not in the gem5 mainline, your code will likely need to be updated. + +## Other changes + * Implemented ARMv8.3-CompNum, SIMD complex number extension. -* Support for Arm Trusted Firmware + u-boot with the new VExpress_GEM5_Foundation platform. -* Changes in the DRAM Controller: - 1) Added support for verifying available command bandwidth. - 2) Added support for multi-cycle commands. - 3) Added new timing parameters. - 4) Added ability to interleave bursts. - 5) Added LPDDR5 configurations. +* Support for Arm Trusted Firmware + u-boot with the new VExpress_GEM5_Foundation platform +* Removed author list from source files. + * This was originally so future people would know who to contact. + * However, it was difficult to maintain and quickly out of date. + * Copyright is unchanged. +* Improvements to gem5's power model. +* MESI_Three_Level Ruby protocol bugfixes. +* Ruby functional reads now work in more cases. +* Indirect branch stats work correctly now.