summaryrefslogtreecommitdiff
path: root/src/mem/slicc/parser.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/slicc/parser.py')
-rw-r--r--src/mem/slicc/parser.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/mem/slicc/parser.py b/src/mem/slicc/parser.py
index 1505e1d0c..ce665465f 100644
--- a/src/mem/slicc/parser.py
+++ b/src/mem/slicc/parser.py
@@ -157,6 +157,8 @@ class SLICC(Grammar):
'external_type' : 'EXTERN_TYPE',
'enumeration' : 'ENUM',
'peek' : 'PEEK',
+ 'stall_and_wait' : 'STALL_AND_WAIT',
+ 'wake_up_dependents' : 'WAKE_UP_DEPENDENTS',
'enqueue' : 'ENQUEUE',
'copy_head' : 'COPY_HEAD',
'check_allocate' : 'CHECK_ALLOCATE',
@@ -499,7 +501,8 @@ class SLICC(Grammar):
def p_pair__assign(self, p):
"""pair : ident '=' STRING
- | ident '=' ident"""
+ | ident '=' ident
+ | ident '=' NUMBER"""
p[0] = ast.PairAST(self, p[1], p[3])
def p_pair__literal(self, p):
@@ -547,6 +550,14 @@ class SLICC(Grammar):
"statement : ENQUEUE '(' var ',' type pairs ')' statements"
p[0] = ast.EnqueueStatementAST(self, p[3], p[5], p[6], p[8])
+ def p_statement__stall_and_wait(self, p):
+ "statement : STALL_AND_WAIT '(' var ',' var ')' SEMI"
+ p[0] = ast.StallAndWaitStatementAST(self, p[3], p[5])
+
+ def p_statement__wake_up_dependents(self, p):
+ "statement : WAKE_UP_DEPENDENTS '(' var ')' SEMI"
+ p[0] = ast.WakeUpDependentsStatementAST(self, p[3])
+
def p_statement__peek(self, p):
"statement : PEEK '(' var ',' type pairs ')' statements"
p[0] = ast.PeekStatementAST(self, p[3], p[5], p[6], p[8], "peek")