changeset 53d63eeee46f in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=53d63eeee46f
description:
        slicc: support for arbitrary DPRINTF flags (not just RubySlicc)

        This patch allows DPRINTFs to be used in SLICC state machines similar 
to how
        they are used by the rest of gem5.  Previously all DPRINTFs in the .sm 
files
        had to use the RubySlicc flag.

diffstat:

 src/mem/slicc/ast/FuncCallExprAST.py  |  10 +++++++---
 src/mem/slicc/ast/VarExprAST.py       |   1 +
 src/mem/slicc/symbols/StateMachine.py |  28 +++++++++++++++++++++++-----
 3 files changed, 31 insertions(+), 8 deletions(-)

diffs (144 lines):

diff -r 3ed88c8334f1 -r 53d63eeee46f src/mem/slicc/ast/FuncCallExprAST.py
--- a/src/mem/slicc/ast/FuncCallExprAST.py      Mon Jul 20 09:15:18 2015 -0500
+++ b/src/mem/slicc/ast/FuncCallExprAST.py      Mon Jul 20 09:15:18 2015 -0500
@@ -1,5 +1,6 @@
 # Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
 # Copyright (c) 2009 The Hewlett-Packard Development Company
+# Copyright (c) 2013 Advanced Micro Devices, Inc.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -53,6 +54,8 @@
             # handled differently. Hence the check whether or not
             # the str_list is empty.
 
+            dflag = "%s" % (self.exprs[0].name)
+            machine.addDebugFlag(dflag)
             format = "%s" % (self.exprs[1].inline())
             format_length = len(format)
             str_list = []
@@ -61,10 +64,11 @@
                 str_list.append("%s" % self.exprs[i].inline())
 
             if len(str_list) == 0:
-                code('DPRINTF(RubySlicc, "$0: $1")',
-                     self.exprs[0].location, format[2:format_length-2])
+                code('DPRINTF($0, "$1: $2")',
+                     dflag, self.exprs[0].location, format[2:format_length-2])
             else:
-                code('DPRINTF(RubySlicc, "$0: $1", $2)',
+                code('DPRINTF($0, "$1: $2", $3)',
+                     dflag,
                      self.exprs[0].location, format[2:format_length-2],
                      ', '.join(str_list))
 
diff -r 3ed88c8334f1 -r 53d63eeee46f src/mem/slicc/ast/VarExprAST.py
--- a/src/mem/slicc/ast/VarExprAST.py   Mon Jul 20 09:15:18 2015 -0500
+++ b/src/mem/slicc/ast/VarExprAST.py   Mon Jul 20 09:15:18 2015 -0500
@@ -1,5 +1,6 @@
 # Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
 # Copyright (c) 2009 The Hewlett-Packard Development Company
+# Copyright (c) 2013 Advanced Micro Devices, Inc.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
diff -r 3ed88c8334f1 -r 53d63eeee46f src/mem/slicc/symbols/StateMachine.py
--- a/src/mem/slicc/symbols/StateMachine.py     Mon Jul 20 09:15:18 2015 -0500
+++ b/src/mem/slicc/symbols/StateMachine.py     Mon Jul 20 09:15:18 2015 -0500
@@ -1,5 +1,6 @@
 # Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
 # Copyright (c) 2009 The Hewlett-Packard Development Company
+# Copyright (c) 2013 Advanced Micro Devices, Inc.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -86,6 +87,9 @@
         self.objects = []
         self.TBEType   = None
         self.EntryType = None
+        self.debug_flags = set()
+        self.debug_flags.add('RubyGenerated')
+        self.debug_flags.add('RubySlicc')
 
     def __repr__(self):
         return "[StateMachine: %s]" % self.ident
@@ -114,6 +118,9 @@
 
         self.actions[action.ident] = action
 
+    def addDebugFlag(self, flag):
+        self.debug_flags.add(flag)
+
     def addRequestType(self, request_type):
         assert self.table is None
         self.request_types[request_type.ident] = request_type
@@ -270,6 +277,7 @@
 #include "mem/ruby/common/Consumer.hh"
 #include "mem/ruby/slicc_interface/AbstractController.hh"
 #include "params/$c_ident.hh"
+
 ''')
 
         seen_types = set()
@@ -441,22 +449,26 @@
  */
 
 #include <sys/types.h>
-#include <typeinfo>
 #include <unistd.h>
 
 #include <cassert>
 #include <sstream>
 #include <string>
+#include <typeinfo>
 
 #include "base/compiler.hh"
 #include "base/cprintf.hh"
-#include "debug/RubyGenerated.hh"
-#include "debug/RubySlicc.hh"
+
+''')
+        for f in self.debug_flags:
+            code('#include "debug/${{f}}.hh"')
+        code('''
 #include "mem/protocol/${ident}_Controller.hh"
 #include "mem/protocol/${ident}_Event.hh"
 #include "mem/protocol/${ident}_State.hh"
 #include "mem/protocol/Types.hh"
 #include "mem/ruby/system/System.hh"
+
 ''')
         for include_path in includes:
             code('#include "${{include_path}}"')
@@ -1053,16 +1065,21 @@
 // ${ident}: ${{self.short}}
 
 #include <sys/types.h>
-#include <typeinfo>
 #include <unistd.h>
 
 #include <cassert>
+#include <typeinfo>
 
 #include "base/misc.hh"
-#include "debug/RubySlicc.hh"
+
+''')
+        for f in self.debug_flags:
+            code('#include "debug/${{f}}.hh"')
+        code('''
 #include "mem/protocol/${ident}_Controller.hh"
 #include "mem/protocol/${ident}_Event.hh"
 #include "mem/protocol/${ident}_State.hh"
+
 ''')
 
         if outputRequest_types:
@@ -1071,6 +1088,7 @@
         code('''
 #include "mem/protocol/Types.hh"
 #include "mem/ruby/system/System.hh"
+
 ''')
 
 
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to