diff options
Diffstat (limited to 'src/usr/diag/prdf/common/framework/rule/prdrExpr.H')
-rwxr-xr-x | src/usr/diag/prdf/common/framework/rule/prdrExpr.H | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/src/usr/diag/prdf/common/framework/rule/prdrExpr.H b/src/usr/diag/prdf/common/framework/rule/prdrExpr.H index b221dda4f..75140d37a 100755 --- a/src/usr/diag/prdf/common/framework/rule/prdrExpr.H +++ b/src/usr/diag/prdf/common/framework/rule/prdrExpr.H @@ -356,15 +356,28 @@ class ExprOp2 : public Expr uint16_t getSignature() { - return SignatureOp::combineSig( - (NULL == cv_arg[0] ? - SignatureOp::DEFAULT_SIGNATURE - : cv_arg[0]->getSignature() - ), - (NULL == cv_arg[1] ? - SignatureOp::DEFAULT_SIGNATURE - : cv_arg[1]->getSignature() - )); + // To match the signature generation during IPL + // time in RightShiftRegister/LeftShiftRegister, + // We need to skip calling combineSig during + // rule compile time. + // The casting is needed since these are extend ascii codes + if ((char(Prdr::RSHIFT) == cv_op) || + (char(Prdr::LSHIFT) == cv_op)) + { + return cv_arg[0]->getSignature(); + } + else + { + return SignatureOp::combineSig( + (NULL == cv_arg[0] ? + SignatureOp::DEFAULT_SIGNATURE + : cv_arg[0]->getSignature() + ), + (NULL == cv_arg[1] ? + SignatureOp::DEFAULT_SIGNATURE + : cv_arg[1]->getSignature() + )); + } }; }; |