summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common/framework/rule/prdfRuleMetaData.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/diag/prdf/common/framework/rule/prdfRuleMetaData.C')
-rw-r--r--src/usr/diag/prdf/common/framework/rule/prdfRuleMetaData.C27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/usr/diag/prdf/common/framework/rule/prdfRuleMetaData.C b/src/usr/diag/prdf/common/framework/rule/prdfRuleMetaData.C
index f882208c7..1661bcb68 100644
--- a/src/usr/diag/prdf/common/framework/rule/prdfRuleMetaData.C
+++ b/src/usr/diag/prdf/common/framework/rule/prdfRuleMetaData.C
@@ -5,7 +5,9 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* COPYRIGHT International Business Machines Corp. 2013,2014 */
+/* Contributors Listed Below - COPYRIGHT 2013,2014 */
+/* [+] International Business Machines Corp. */
+/* */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
@@ -991,6 +993,29 @@ void RuleMetaData::createGroup(Group * i_group,
// Do flags. ---
+ // For idea of secondary bit filter to work, it must be the first filter
+ // applicable on register data. To manage this, first of all, we must push
+ // secondary filter to group.
+ // We are supporting the concept of cascaded filter where one filter works
+ // after other in harmony. When secondary filter acts, it shall make
+ // all the secondary bits( which are ON ) as "DON'T CARE" during primary
+ // pass. So, the intent is to filter out secondary bits or in other words
+ // analyze only primary bits in primary pass.
+
+ if ( i_data.cv_loadChip->cv_groupFlags[i_groupId] &
+ Prdr::PRDR_GROUP_FILTER_SECONDARY )
+ {
+ // Add secondary filter to find out if any secondary bit
+ // is on.
+ std::vector<uint8_t> l_bits;
+ CreateBitString::execute(l_bits,
+ i_data.cv_loadChip->cv_groupSecondaryBits[i_groupId]);
+
+ FilterClass * l_filter = new SecondaryBitsFilter( l_bits );
+ i_group->AddFilter( l_filter );
+
+ }
+
// Do Priority filter flag.
if (i_data.cv_loadChip->cv_groupFlags[i_groupId] &
Prdr::PRDR_GROUP_FILTER_PRIORITY)
OpenPOWER on IntegriCloud