]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/C/VfrCompile/VfrSyntax.g
MdeModluePkg: Enable refresh opcode to refresh the entire form.
[mirror_edk2.git] / BaseTools / Source / C / VfrCompile / VfrSyntax.g
index 1a5b3fd5885270fb0abfce5fa0cf9f35fb931852..8e9f32b81598047386ecca16a348d6c39cc6f7fa 100644 (file)
@@ -917,10 +917,11 @@ vfrStatementVarStoreEfi :
      CHAR8           *TypeName;\r
      UINT32          LineNum;\r
      CHAR8           *StoreName = NULL;\r
+     BOOLEAN         CustomizedName = FALSE;\r
   >>\r
   E:Efivarstore                                     << VSEObj.SetLineNo(E->getLine()); >>\r
   (\r
-      TN:StringIdentifier ","                       << TypeName = TN->getText(); LineNum = TN->getLine(); >>\r
+      TN:StringIdentifier ","                       << TypeName = TN->getText(); LineNum = TN->getLine(); CustomizedName = TRUE; >>\r
     | U8:"UINT8" ","                                << TypeName = U8->getText(); LineNum = U8->getLine(); >>\r
     | U16:"UINT16" ","                              << TypeName = U16->getText(); LineNum = U16->getLine(); >>\r
     | C16:"CHAR16" ","                              << TypeName = (CHAR8 *) "UINT16"; LineNum = C16->getLine(); >>\r
@@ -953,6 +954,10 @@ vfrStatementVarStoreEfi :
                                                        if (StoreName == NULL) {\r
                                                          _PCATCH (VFR_RETURN_UNSUPPORTED, VN->getLine(), "Can't get varstore name for this StringId!");\r
                                                        }\r
+                                                       if (!CustomizedName) {\r
+                                                         _PCATCH (VFR_RETURN_UNSUPPORTED, E->getLine(), "Old style efivarstore must have String Identifier!");\r
+                                                         return;\r
+                                                       }\r
                                                        Size = _STOU32(N->getText(), N->getLine());\r
                                                        switch (Size) {\r
                                                        case 1:\r
@@ -1453,7 +1458,8 @@ vfrFormDefinition :
     // Just for framework vfr compatibility\r
     vfrStatementInvalid                      |\r
     vfrStatementExtension                    |\r
-    vfrStatementModal\r
+    vfrStatementModal                        |\r
+    vfrStatementRefreshEvent ";"\r
   )*\r
   E:EndForm                                         <<\r
                                                       if (mCompatibleMode) {\r
@@ -1499,7 +1505,8 @@ vfrFormMapDefinition :
     vfrStatementLabel                        |\r
     vfrStatementBanner                       |\r
     vfrStatementExtension                    |\r
-    vfrStatementModal\r
+    vfrStatementModal                        |\r
+    vfrStatementRefreshEvent ";"\r
   )*\r
   E:EndForm                                         << CRT_END_OP (E); >>\r
   ";"\r
@@ -2705,7 +2712,7 @@ vfrStatementQuestionTag :
   vfrStatementRefresh           |\r
   vfrStatementVarstoreDevice    |\r
   vfrStatementExtension         |\r
-  vfrStatementRefreshEvent      |\r
+  vfrStatementRefreshEvent ","  |\r
   vfrStatementWarningIf\r
   ;\r
 \r
@@ -2935,7 +2942,7 @@ vfrStatementRefreshEvent :
     EFI_GUID      Guid;\r
   >>\r
   L:RefreshGuid                                        << RiObj.SetLineNo(L->getLine()); >>\r
-  "="  guidDefinition[Guid] ","                        << RiObj.SetRefreshEventGroutId (&Guid);  >>\r
+  "="  guidDefinition[Guid]                            << RiObj.SetRefreshEventGroutId (&Guid);  >>\r
   ;\r
 \r
 vfrStatementVarstoreDevice :\r