eon is a tru64 regression, not a linux one
[gem5.git] / src / base / traceflags.py
index c4dcb695b25f53c79d3f1409db26a18d1e430856..cb17d98d3bed6fd56bd42cb7af91dd0b04ac6ef0 100644 (file)
 # Authors: Nathan Binkert
 #          Steve Reinhardt
 
-#
-# This file generates the header and source files for the flags
-# that control the tracing facility.
-#
-
-import sys
-
-if len(sys.argv) != 2:
-    print "%s: Need argument (basename of cc/hh files)" % sys.argv[0]
-    sys.exit(1)
-
-hhfilename = sys.argv[1] + '.hh'
-ccfilename = sys.argv[1] + '.cc'
+__all__ = [ 'allFlags', 'baseFlags', 'compoundFlagsMap', 'compoundFlags' ]
 
 #
 # The list of trace flags that can be used to condition DPRINTFs etc.
 # To define a new flag, simply add it to this list.
 #
 baseFlags = [
+    'Activity',
     'AlphaConsole',
+    'Annotate',
     'BADADDR',
+    'BE',
     'BPredRAS',
     'Bus',
     'BusAddrRanges',
     'BusBridge',
     'Cache',
+    'CachePort',
     'Chains',
     'Checker',
     'Clock',
@@ -80,15 +72,32 @@ baseFlags = [
     'EthernetDMA',
     'EthernetData',
     'EthernetDesc',
+    'EthernetEEPROM',
     'EthernetIntr',
     'EthernetPIO',
     'EthernetSM',
     'Event',
+    'ExecEnable',
+    'ExecCPSeq',
+    'ExecEffAddr',
+    'ExecFetchSeq',
+    'ExecIntRegs',
+    'ExecIntel',
+    'ExecLegion',
+    'ExecOpClass',
+    'ExecRegDelta',
+    'ExecResult',
+    'ExecSpeculative',
+    'ExecSymbol',
+    'ExecThread',
+    'ExecTicks',
+    'FE',
     'Fault',
     'Fetch',
     'Flow',
     'FreeList',
     'FullCPU',
+    'FunctionalAccess',
     'GDBAcc',
     'GDBExtra',
     'GDBMisc',
@@ -97,16 +106,18 @@ baseFlags = [
     'GDBSend',
     'GDBWrite',
     'HWPrefetch',
+    'IBE',
     'IEW',
     'IIC',
     'IICMore',
     'IPI',
+    'IPR',
     'IQ',
     'ISP',
     'IdeCtrl',
     'IdeDisk',
-    'InstExec',
     'Interrupt',
+    'LLSC',
     'LSQ',
     'LSQUnit',
     'Loader',
@@ -115,11 +126,9 @@ baseFlags = [
     'MSHR',
     'Mbox',
     'MemDepUnit',
+    'MemoryAccess',
     'O3CPU',
     'OzoneCPU',
-    'FE',
-    'IBE',
-    'BE',
     'OzoneLSQ',
     'PCEvent',
     'PCIA',
@@ -127,12 +136,14 @@ baseFlags = [
     'PciConfigAll',
     'Pipeline',
     'Printf',
+    'Quiesce',
     'ROB',
     'Regs',
     'Rename',
     'RenameMap',
     'SQL',
     'Sampler',
+    'Scoreboard',
     'ScsiCtrl',
     'ScsiDisk',
     'ScsiNone',
@@ -156,9 +167,8 @@ baseFlags = [
     'Uart',
     'VtoPhys',
     'WriteBarrier',
-    'Activity',
-    'Scoreboard',
     'Writeback',
+    'X86',
     ]
 
 #
@@ -170,110 +180,119 @@ baseFlags = [
 # following the existing examples.
 #
 compoundFlagMap = {
-    'GDBAll' : [ 'GDBMisc', 'GDBAcc', 'GDBRead', 'GDBWrite', 'GDBSend', 'GDBRecv', 'GDBExtra' ],
-    'ScsiAll' : [ 'ScsiDisk', 'ScsiCtrl', 'ScsiNone' ],
-    'DiskImageAll' : [ 'DiskImage', 'DiskImageRead', 'DiskImageWrite' ],
-    'EthernetAll' : [ 'Ethernet', 'EthernetPIO', 'EthernetDMA', 'EthernetData' , 'EthernetDesc', 'EthernetIntr', 'EthernetSM', 'EthernetCksum' ],
-    'EthernetNoData' : [ 'Ethernet', 'EthernetPIO', 'EthernetDesc', 'EthernetIntr', 'EthernetSM', 'EthernetCksum' ],
-    'IdeAll' : [ 'IdeCtrl', 'IdeDisk' ],
-    'FullCPUAll' : [ 'Fetch', 'Decode', 'Rename', 'IEW', 'Commit', 'IQ', 'ROB', 'FreeList', 'RenameMap', 'LSQ', 'LSQUnit', 'StoreSet', 'MemDepUnit', 'DynInst', 'FullCPU', 'Activity','Scoreboard','Writeback'],
-    'OzoneCPUAll' : [ 'BE', 'FE', 'IBE', 'OzoneLSQ', 'OzoneCPU']
+    'All'            : baseFlags,
+    'DiskImageAll'   : [ 'DiskImage', 'DiskImageRead', 'DiskImageWrite' ],
+    'EthernetAll'    : [ 'Ethernet', 'EthernetPIO', 'EthernetDMA',
+                         'EthernetData' , 'EthernetDesc', 'EthernetIntr',
+                         'EthernetSM', 'EthernetCksum' ],
+    'EthernetNoData' : [ 'Ethernet', 'EthernetPIO', 'EthernetDesc',
+                         'EthernetIntr', 'EthernetSM', 'EthernetCksum' ],
+    'Exec'           : [ 'ExecEnable', 'ExecTicks', 'ExecOpClass',
+                         'ExecThread', 'ExecEffAddr', 'ExecResult',
+                         'ExecSymbol' ],
+    'GDBAll'         : [ 'GDBMisc', 'GDBAcc', 'GDBRead', 'GDBWrite', 'GDBSend',
+                         'GDBRecv', 'GDBExtra' ],
+    'IdeAll'         : [ 'IdeCtrl', 'IdeDisk' ],
+    'O3CPUAll'       : [ 'Fetch', 'Decode', 'Rename', 'IEW', 'Commit', 'IQ',
+                         'ROB', 'FreeList', 'RenameMap', 'LSQ', 'LSQUnit',
+                         'StoreSet', 'MemDepUnit', 'DynInst', 'FullCPU',
+                         'O3CPU', 'Activity','Scoreboard','Writeback' ],
+    'OzoneCPUAll'    : [ 'BE', 'FE', 'IBE', 'OzoneLSQ', 'OzoneCPU' ],
+    'ScsiAll'        : [ 'ScsiDisk', 'ScsiCtrl', 'ScsiNone' ]
 }
 
-#############################################################
-#
-# Everything below this point generates the appropriate C++
-# declarations and definitions for the trace flags.  If you are simply
-# adding or modifying flag definitions, you should not have to change
-# anything below.
-#
-
-import sys
-
 # extract just the compound flag names into a list
 compoundFlags = []
 compoundFlags.extend(compoundFlagMap.keys())
 compoundFlags.sort()
 
-#
-# First generate the header file.  This defines the Flag enum
-# and some extern declarations for the .cc file.
-#
-try:
-    hhfile = file(hhfilename, 'w')
-except IOError, e:
-    sys.exit("can't open %s: %s" % (hhfilename, e))
-
-# file header boilerplate
-print >>hhfile, '''
-/*
- * DO NOT EDIT THIS FILE!
- *
- * Automatically generated from traceflags.py
- */
-
-#ifndef __BASE_TRACE_FLAGS_HH__
-#define __BASE_TRACE_FLAGS_HH__
-
-namespace Trace {
+allFlags = frozenset(baseFlags + compoundFlags)
 
-enum Flags {
-''',
-
-# Generate the enum.  Base flags come first, then compound flags.
-idx = 0
-for flag in baseFlags:
-    print >>hhfile, '    %s = %d,' % (flag, idx)
-    idx += 1
-
-numBaseFlags = idx
-print >>hhfile, '    NumFlags = %d,' % idx
-
-# put a comment in here to separate base from compound flags
-print >>hhfile, '''
-    // The remaining enum values are *not* valid indices for Trace::flags.
-    // They are "compound" flags, which correspond to sets of base
-    // flags, and are used only by TraceParamContext::setFlags().
-''',
-
-for flag in compoundFlags:
-    print >>hhfile, '    %s = %d,' % (flag, idx)
-    idx += 1
-
-numCompoundFlags = idx - numBaseFlags
-print >>hhfile, '    NumCompoundFlags = %d' % numCompoundFlags
-
-# trailer boilerplate
-print >>hhfile, '''\
-}; // enum Flags
-
-// Array of strings for SimpleEnumParam
-extern const char *flagStrings[];
-extern const int numFlagStrings;
-
-// Array of arraay pointers: for each compound flag, gives the list of
-// base flags to set.  Inidividual flag arrays are terminated by -1.
-extern const Flags *compoundFlags[];
-
-/* namespace Trace */ }
-
-#endif // __BASE_TRACE_FLAGS_HH__
-''',
-
-hhfile.close()
-
-#
-#
-# Print out .cc file with array definitions.
+#############################################################
 #
+# Everything below this point generates the appropriate C++
+# declarations and definitions for the trace flags.  If you are simply
+# adding or modifying flag definitions, you should not have to change
+# anything below.
 #
-try:
-    ccfile = file(ccfilename, 'w')
-except OSError, e:
-    sys.exit("can't open %s: %s" % (ccfilename, e))
-
-# file header
-print >>ccfile, '''
+def gen_hh(filename):
+    #
+    # First generate the header file.  This defines the Flag enum
+    # and some extern declarations for the .cc file.
+    #
+    try:
+        hhfile = file(filename, 'w')
+    except IOError, e:
+        sys.exit("can't open %s: %s" % (hhfilename, e))
+
+    # file header boilerplate
+    print >>hhfile, '''
+    /*
+     * DO NOT EDIT THIS FILE!
+     *
+     * Automatically generated from traceflags.py
+     */
+
+    #ifndef __BASE_TRACE_FLAGS_HH__
+    #define __BASE_TRACE_FLAGS_HH__
+
+    namespace Trace {
+
+    enum Flags {
+    ''',
+
+    # Generate the enum.  Base flags come first, then compound flags.
+    idx = 0
+    for flag in baseFlags:
+        print >>hhfile, '    %s = %d,' % (flag, idx)
+        idx += 1
+
+    numBaseFlags = idx
+    print >>hhfile, '    NumFlags = %d,' % idx
+
+    # put a comment in here to separate base from compound flags
+    print >>hhfile, '''
+        // The remaining enum values are *not* valid indices for Trace::flags.
+        // They are "compound" flags, which correspond to sets of base
+        // flags, and are used by changeFlag.
+    ''',
+
+    for flag in compoundFlags:
+        print >>hhfile, '    %s = %d,' % (flag, idx)
+        idx += 1
+
+    numCompoundFlags = idx - numBaseFlags
+    print >>hhfile, '    NumCompoundFlags = %d' % numCompoundFlags
+
+    # trailer boilerplate
+    print >>hhfile, '''\
+    }; // enum Flags
+
+    // Array of strings for SimpleEnumParam
+    extern const char *flagStrings[];
+    extern const int numFlagStrings;
+
+    // Array of arraay pointers: for each compound flag, gives the list of
+    // base flags to set.  Inidividual flag arrays are terminated by -1.
+    extern const Flags *compoundFlags[];
+
+    /* namespace Trace */ }
+
+    #endif // __BASE_TRACE_FLAGS_HH__
+    \n''',
+
+    hhfile.close()
+
+def gen_cc(filename):
+    '''Print out .cc file with array definitions.'''
+
+    try:
+        ccfile = file(filename, 'w')
+    except OSError, e:
+        sys.exit("can't open %s: %s" % (ccfilename, e))
+
+    # file header
+    print >>ccfile, '''
 /*
  * DO NOT EDIT THIS FILE!
  *
@@ -288,45 +307,57 @@ const char *Trace::flagStrings[] =
 {
 ''',
 
-# The string array is used by SimpleEnumParam to map the strings
-# provided by the user to enum values.
-for flag in baseFlags:
-    print >>ccfile, '    "%s",' % flag
+    # The string array is used by SimpleEnumParam to map the strings
+    # provided by the user to enum values.
+    for flag in baseFlags:
+        print >>ccfile, '    "%s",' % flag
+
+    for flag in compoundFlags:
+        print >>ccfile, '    "%s",' % flag
 
-for flag in compoundFlags:
-    print >>ccfile, '    "%s",' % flag
+    print >>ccfile, '};\n'
 
-print >>ccfile, '};\n'
+    numFlagStrings = len(baseFlags) + len(compoundFlags);
 
-numFlagStrings = len(baseFlags) + len(compoundFlags);
+    print >>ccfile, 'const int Trace::numFlagStrings = %d;' % numFlagStrings
+    print >>ccfile
 
-print >>ccfile, 'const int Trace::numFlagStrings = %d;' % numFlagStrings
-print >>ccfile
+    #
+    # Now define the individual compound flag arrays.  There is an array
+    # for each compound flag listing the component base flags.
+    #
 
-#
-# Now define the individual compound flag arrays.  There is an array
-# for each compound flag listing the component base flags.
-#
+    for flag in compoundFlags:
+        flags = compoundFlagMap[flag]
+        flags.append('(Flags)-1')
+        print >>ccfile, 'static const Flags %sMap[] =' % flag
+        print >>ccfile, '{ %s };' % (', '.join(flags))
+        print >>ccfile
 
-for flag in compoundFlags:
-    flags = compoundFlagMap[flag]
-    flags.append('(Flags)-1')
-    print >>ccfile, 'static const Flags %sMap[] =' % flag
-    print >>ccfile, '{ %s };' % (', '.join(flags))
-    print >>ccfile
+    #
+    # Finally the compoundFlags[] array maps the compound flags
+    # to their individual arrays/
+    #
+    print >>ccfile, 'const Flags *Trace::compoundFlags[] ='
+    print >>ccfile, '{'
 
-#
-# Finally the compoundFlags[] array maps the compound flags
-# to their individual arrays/
-#
-print >>ccfile, 'const Flags *Trace::compoundFlags[] ='
-print >>ccfile, '{'
+    for flag in compoundFlags:
+        print >>ccfile, '    %sMap,' % flag
+
+    # file trailer
+    print >>ccfile, '};'
+
+    ccfile.close()
 
-for flag in compoundFlags:
-    print >>ccfile, '    %sMap,' % flag
+if __name__ == '__main__':
+    # This file generates the header and source files for the flags
+    # that control the tracing facility.
 
-# file trailer
-print >>ccfile, '};'
+    import sys
 
-ccfile.close()
+    if len(sys.argv) != 2:
+        print "%s: Need argument (basename of cc/hh files)" % sys.argv[0]
+        sys.exit(1)
 
+    gen_hh(sys.argv[1] + '.hh')
+    gen_cc(sys.argv[1] + '.cc')