]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/pcd/entity/UsageInstance.java
Enabling use PcdSetXX macro to set value for PATCHABLE_IN_MODULE, DYNAMIC, DYNAMIC_EX...
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / pcd / entity / UsageInstance.java
index 85806b4289740dfa371b1b5d38833fd5783f2823..baf87572f0ea8550cd890153127fc718d7edac76 100644 (file)
@@ -242,10 +242,13 @@ public class UsageInstance {
         case FEATURE_FLAG:\r
             hAutogenStr += String.format("extern const BOOLEAN _gPcd_FixedAtBuild_%s;\r\n", \r
                                          parentToken.cName);\r
-            hAutogenStr += String.format("#define _PCD_MODE_%s_%s  _gPcd_FixedAtBuild_%s\r\n",\r
+            hAutogenStr += String.format("#define _PCD_GET_MODE_%s_%s  _gPcd_FixedAtBuild_%s\r\n",\r
                                          parentToken.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
                                          parentToken.cName,\r
                                          parentToken.cName);\r
+            hAutogenStr += String.format("//#define _PCD_SET_MODE_%s_%s ASSERT(FALSE) If is not allowed to set value for a FEATURE_FLAG PCD\r\n",\r
+                                         parentToken.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
+                                         parentToken.cName);\r
 \r
             if (!isBuildUsedLibrary) {\r
                 hAutogenStr += String.format("#define _PCD_VALUE_%s   %s\r\n", \r
@@ -260,7 +263,7 @@ public class UsageInstance {
             if (isByteArray) {\r
                 hAutogenStr += String.format("extern const UINT8 _gPcd_FixedAtBuild_%s[];\r\n",\r
                                              parentToken.cName);\r
-                hAutogenStr += String.format("#define _PCD_MODE_%s_%s  &_gPcd_FixedAtBuild_%s\r\n", \r
+                hAutogenStr += String.format("#define _PCD_GET_MODE_%s_%s  (VOID*)_gPcd_FixedAtBuild_%s\r\n", \r
                                              Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
                                              parentToken.cName,\r
                                              parentToken.cName);\r
@@ -268,12 +271,15 @@ public class UsageInstance {
                 hAutogenStr += String.format("extern const %s _gPcd_FixedAtBuild_%s;\r\n",\r
                                              Token.getAutogendatumTypeString(parentToken.datumType),\r
                                              parentToken.cName);\r
-                hAutogenStr += String.format("#define _PCD_MODE_%s_%s  _gPcd_FixedAtBuild_%s\r\n", \r
+                hAutogenStr += String.format("#define _PCD_GET_MODE_%s_%s  _gPcd_FixedAtBuild_%s\r\n", \r
                                              Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
                                              parentToken.cName,\r
                                              parentToken.cName);\r
             }\r
 \r
+            hAutogenStr += String.format("//#define _PCD_SET_MODE_%s_%s ASSERT(FALSE) // It is not allowed to set value for a FIXED_AT_BUILD PCD\r\n",\r
+                                         parentToken.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
+                                         parentToken.cName);\r
             if (!isBuildUsedLibrary) {\r
                 hAutogenStr += String.format("#define _PCD_VALUE_%s   %s\r\n", \r
                                              parentToken.cName, \r
@@ -294,7 +300,7 @@ public class UsageInstance {
             if (isByteArray) {\r
                 hAutogenStr += String.format("extern UINT8 _gPcd_BinaryPatch_%s[];\r\n",\r
                                              parentToken.cName);\r
-                hAutogenStr += String.format("#define _PCD_MODE_%s_%s  &_gPcd_BinaryPatch_%s\r\n",\r
+                hAutogenStr += String.format("#define _PCD_GET_MODE_%s_%s  (VOID*)_gPcd_BinaryPatch_%s\r\n",\r
                                              Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
                                              parentToken.cName,\r
                                              parentToken.cName);  \r
@@ -302,12 +308,27 @@ public class UsageInstance {
                 hAutogenStr += String.format("extern %s _gPcd_BinaryPatch_%s;\r\n",\r
                                              Token.getAutogendatumTypeString(parentToken.datumType),\r
                                              parentToken.cName);\r
-                hAutogenStr += String.format("#define _PCD_MODE_%s_%s  _gPcd_BinaryPatch_%s\r\n",\r
+                hAutogenStr += String.format("#define _PCD_GET_MODE_%s_%s  _gPcd_BinaryPatch_%s\r\n",\r
                                              Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
                                              parentToken.cName,\r
                                              parentToken.cName);                \r
             }\r
 \r
+            //\r
+            // Generate _PCD_SET_MODE_xx macro for using set BinaryPatch value via PcdSet macro\r
+            // \r
+            if (parentToken.datumType == Token.DATUM_TYPE.POINTER) {\r
+                hAutogenStr += String.format("#define _PCD_SET_MODE_%s_%s(SizeOfBuffer, Buffer) CopyMem (_gPcd_BinaryPatch_%s, (Buffer), (SizeOfBuffer))\r\n",\r
+                                             Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
+                                             parentToken.cName,\r
+                                             parentToken.cName);\r
+            } else {\r
+                hAutogenStr += String.format("#define _PCD_SET_MODE_%s_%s(Value) (_gPcd_BinaryPatch_%s = (Value))\r\n",\r
+                                             Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
+                                             parentToken.cName,\r
+                                             parentToken.cName);\r
+            }\r
+            \r
             if (!isBuildUsedLibrary) {\r
                 hAutogenStr += String.format("#define _PCD_VALUE_%s   %s\r\n", \r
                                              parentToken.cName, \r
@@ -326,23 +347,52 @@ public class UsageInstance {
 \r
             break;\r
         case DYNAMIC:\r
-            hAutogenStr += String.format("#define _PCD_MODE_%s_%s  LibPcdGet%s(_PCD_TOKEN_%s)\r\n",\r
+            hAutogenStr += String.format("#define _PCD_GET_MODE_%s_%s  LibPcdGet%s(_PCD_TOKEN_%s)\r\n",\r
                                          Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
                                          parentToken.cName,\r
                                          Token.getAutogenLibrarydatumTypeString(parentToken.datumType),\r
                                          parentToken.cName);\r
+            if (parentToken.datumType == Token.DATUM_TYPE.POINTER) {\r
+                hAutogenStr += String.format("#define _PCD_SET_MODE_%s_%s(SizeOfBuffer, Buffer)  LibPcdSet%s(_PCD_TOKEN_%s, (SizeOfBuffer), (Buffer))\r\n",\r
+                                             Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
+                                             parentToken.cName,\r
+                                             Token.getAutogenLibrarydatumTypeString(parentToken.datumType),\r
+                                             parentToken.cName);\r
+            } else {\r
+                hAutogenStr += String.format("#define _PCD_SET_MODE_%s_%s(Value)  LibPcdSet%s(_PCD_TOKEN_%s, (Value))\r\n",\r
+                                             Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
+                                             parentToken.cName,\r
+                                             Token.getAutogenLibrarydatumTypeString(parentToken.datumType),\r
+                                             parentToken.cName);\r
+            }\r
             break;\r
         case DYNAMIC_EX:\r
             guidStringCName = "_gPcd_TokenSpaceGuid_" +\r
                               parentToken.tokenSpaceName.toString().replaceAll("-", "_");\r
-                                            \r
-            hAutogenStr += String.format("#define _PCD_MODE_%s_%s LibPcdGetEx%s(&%s, _PCD_TOKEN_%s)\r\n",\r
+\r
+            hAutogenStr += String.format("#define _PCD_GET_MODE_%s_%s LibPcdGetEx%s(&%s, _PCD_TOKEN_%s)\r\n",\r
                                          Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
                                          parentToken.cName,\r
                                          Token.getAutogenLibrarydatumTypeString(parentToken.datumType),\r
                                          guidStringCName,\r
                                          parentToken.cName);\r
 \r
+            if (parentToken.datumType == Token.DATUM_TYPE.POINTER) {\r
+                hAutogenStr += String.format("#define _PCD_SET_MODE_%s_%s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, _PCD_TOKEN_%s, (SizeOfBuffer), (Buffer))\r\n",\r
+                                             Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
+                                             parentToken.cName,\r
+                                             Token.getAutogenLibrarydatumTypeString(parentToken.datumType),\r
+                                             guidStringCName,\r
+                                             parentToken.cName);\r
+            } else {\r
+                hAutogenStr += String.format("#define _PCD_SET_MODE_%s_%s(Value) LibPcdSetEx%s(&%s, _PCD_TOKEN_%s, (Value))\r\n",\r
+                                             Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
+                                             parentToken.cName,\r
+                                             Token.getAutogenLibrarydatumTypeString(parentToken.datumType),\r
+                                             guidStringCName,\r
+                                             parentToken.cName);\r
+\r
+            }\r
             break;\r
         }\r
     }\r