summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mem/ruby/slicc_interface/AbstractController.cc8
-rw-r--r--src/mem/ruby/slicc_interface/AbstractController.hh4
-rw-r--r--src/mem/slicc/ast/InPortDeclAST.py8
-rw-r--r--src/mem/slicc/symbols/StateMachine.py12
4 files changed, 10 insertions, 22 deletions
diff --git a/src/mem/ruby/slicc_interface/AbstractController.cc b/src/mem/ruby/slicc_interface/AbstractController.cc
index 2e4109c01..26cf91e9f 100644
--- a/src/mem/ruby/slicc_interface/AbstractController.cc
+++ b/src/mem/ruby/slicc_interface/AbstractController.cc
@@ -104,10 +104,10 @@ AbstractController::stallBuffer(MessageBuffer* buf, Address addr)
{
if (m_waiting_buffers.count(addr) == 0) {
MsgVecType* msgVec = new MsgVecType;
- msgVec->resize(m_max_in_port_rank, NULL);
+ msgVec->resize(m_in_ports, NULL);
m_waiting_buffers[addr] = msgVec;
}
- (*(m_waiting_buffers[addr]))[m_cur_in_port_rank] = buf;
+ (*(m_waiting_buffers[addr]))[m_cur_in_port] = buf;
}
void
@@ -118,7 +118,7 @@ AbstractController::wakeUpBuffers(Address addr)
// Wake up all possible lower rank (i.e. lower priority) buffers that could
// be waiting on this message.
//
- for (int in_port_rank = m_cur_in_port_rank - 1;
+ for (int in_port_rank = m_cur_in_port - 1;
in_port_rank >= 0;
in_port_rank--) {
if ((*(m_waiting_buffers[addr]))[in_port_rank] != NULL) {
@@ -138,7 +138,7 @@ AbstractController::wakeUpAllBuffers(Address addr)
// Wake up all possible lower rank (i.e. lower priority) buffers that could
// be waiting on this message.
//
- for (int in_port_rank = m_max_in_port_rank - 1;
+ for (int in_port_rank = m_in_ports - 1;
in_port_rank >= 0;
in_port_rank--) {
if ((*(m_waiting_buffers[addr]))[in_port_rank] != NULL) {
diff --git a/src/mem/ruby/slicc_interface/AbstractController.hh b/src/mem/ruby/slicc_interface/AbstractController.hh
index 3ad1a0fba..3bf331c62 100644
--- a/src/mem/ruby/slicc_interface/AbstractController.hh
+++ b/src/mem/ruby/slicc_interface/AbstractController.hh
@@ -145,8 +145,8 @@ class AbstractController : public ClockedObject, public Consumer
typedef std::vector<MessageBuffer*> MsgVecType;
typedef std::map< Address, MsgVecType* > WaitingBufType;
WaitingBufType m_waiting_buffers;
- int m_max_in_port_rank;
- int m_cur_in_port_rank;
+ unsigned int m_in_ports;
+ unsigned int m_cur_in_port;
int m_number_of_TBEs;
//! Map from physical network number to the Message Buffer.
diff --git a/src/mem/slicc/ast/InPortDeclAST.py b/src/mem/slicc/ast/InPortDeclAST.py
index c88d353d3..75f917f9a 100644
--- a/src/mem/slicc/ast/InPortDeclAST.py
+++ b/src/mem/slicc/ast/InPortDeclAST.py
@@ -30,8 +30,6 @@ from slicc.ast.TypeAST import TypeAST
from slicc.symbols import Func, Type, Var
class InPortDeclAST(DeclAST):
- max_port_rank = 0
-
def __init__(self, slicc, ident, msg_type, var_expr, pairs, statements):
super(InPortDeclAST, self).__init__(slicc, pairs)
@@ -40,9 +38,6 @@ class InPortDeclAST(DeclAST):
self.var_expr = var_expr
self.statements = statements
self.queue_type = TypeAST(slicc, "InPort")
- if self.pairs.has_key("rank"):
- InPortDeclAST.max_port_rank = max(self.pairs["rank"],
- InPortDeclAST.max_port_rank)
def __repr__(self):
return "[InPortDecl: %s]" % self.ident
@@ -120,6 +115,3 @@ class InPortDeclAST(DeclAST):
# Add port to state machine
machine.addInPort(in_port)
-
- # Include max_rank to be used by StateMachine.py
- in_port["max_port_rank"] = InPortDeclAST.max_port_rank
diff --git a/src/mem/slicc/symbols/StateMachine.py b/src/mem/slicc/symbols/StateMachine.py
index c96af4a90..b969d79a3 100644
--- a/src/mem/slicc/symbols/StateMachine.py
+++ b/src/mem/slicc/symbols/StateMachine.py
@@ -460,12 +460,8 @@ $c_ident::$c_ident(const Params *p)
{
m_name = "${ident}";
''')
- #
- # max_port_rank is used to size vectors and thus should be one plus the
- # largest port rank
- #
- max_port_rank = self.in_ports[0].pairs["max_port_rank"] + 1
- code(' m_max_in_port_rank = $max_port_rank;')
+ num_in_ports = len(self.in_ports)
+ code(' m_in_ports = $num_in_ports;')
code.indent()
#
@@ -1104,9 +1100,9 @@ ${ident}_Controller::wakeup()
code.indent()
code('// ${ident}InPort $port')
if port.pairs.has_key("rank"):
- code('m_cur_in_port_rank = ${{port.pairs["rank"]}};')
+ code('m_cur_in_port = ${{port.pairs["rank"]}};')
else:
- code('m_cur_in_port_rank = 0;')
+ code('m_cur_in_port = 0;')
code('${{port["c_code_in_port"]}}')
code.dedent()