Put Global variables in libs to .fardata section
authorPrasad Konnur <prasadkonnur@ti.com>
Tue, 16 Jul 2013 12:07:55 +0000 (17:37 +0530)
committerPrasad Konnur <prasadkonnur@ti.com>
Wed, 17 Jul 2013 08:47:16 +0000 (14:17 +0530)
Global and static variables are placed in .fardata:.edma3Globals section
This change is only for the libs compiled with C6000 compiler
makefile variable -DBUILD_C6XDSP defined in rules.mk files
for 66, 64t, 64p, 674 which used C6000 Compiler.

Signed-off-by: Prasad Konnur <prasadkonnur@ti.com>
makerules/rules_64p.mk
makerules/rules_64t.mk
makerules/rules_66.mk
makerules/rules_674.mk
packages/ti/sdo/edma3/drv/src/edma3_drv_adv.c
packages/ti/sdo/edma3/drv/src/edma3_drv_basic.c
packages/ti/sdo/edma3/drv/src/edma3_drv_init.c
packages/ti/sdo/edma3/rm/RM.xdt
packages/ti/sdo/edma3/rm/src/edma3_rm_gbl_data.c
packages/ti/sdo/edma3/rm/src/edma3resmgr.c

index a0631f17ed9a15b1bedec3d476f5d2f4960f536b..97a041e526c767533921b862737462c2f6dfea8e 100755 (executable)
@@ -74,7 +74,7 @@ ifneq ($(XDC_CFG_FILE_$(CORE)),)
 endif\r
 \r
 # Internal CFLAGS - normally doesn't change\r
-CFLAGS_INTERNAL = -c -qq -pdsw225 -mv64p $(CSWITCH_FORMAT) $(CSWITCH_ENDIAN) -mo -eo.$(OBJEXT) -ea.$(ASMEXT)\r
+CFLAGS_INTERNAL = -c -qq -pdsw225 -mv64p $(CSWITCH_FORMAT) $(CSWITCH_ENDIAN) -mo -eo.$(OBJEXT) -ea.$(ASMEXT) -DBUILD_C6XDSP\r
 CFLAGS_DIROPTS = -fr=$(OBJDIR) -fs=$(OBJDIR)\r
 \r
 # CFLAGS based on profile selected\r
@@ -154,7 +154,7 @@ $(LIBDIR)/$(MODULE_NAME).$(LIBEXT) : $(OBJ_PATHS)
        $(AR) $(ARFLAGS) $@ $(OBJ_PATHS)\r
 \r
 # Linker options and rules\r
-LNKFLAGS_INTERNAL_COMMON = --warn_sections -q -e=_c_int00 --silicon_version=64+ -c \r
+LNKFLAGS_INTERNAL_COMMON = --warn_sections -q -e=_c_int00 --silicon_version=64+ -c\r
 \r
 # Assemble Linker flags from all other LNKFLAGS definitions\r
 _LNKFLAGS = $(LNKFLAGS_INTERNAL_COMMON) $(LNKFLAGS_INTERNAL_PROFILE) $(LNKFLAGS_GLOBAL_$(CORE)) $(LNKFLAGS_LOCAL_COMMON) $(LNKFLAGS_LOCAL_$(CORE)) \r
index 0de5baf3d9ad57edc723d05791118e10e9aa2cdc..215e51f713b6150ade7b73ee8107e95438befa85 100644 (file)
@@ -74,7 +74,7 @@ ifneq ($(XDC_CFG_FILE_$(CORE)),)
 endif
 
 # Internal CFLAGS - normally doesn't change
-CFLAGS_INTERNAL = -c -qq -pdsw225 -mvtesla $(CSWITCH_FORMAT) $(CSWITCH_ENDIAN) -mo -eo.$(OBJEXT) -ea.$(ASMEXT)
+CFLAGS_INTERNAL = -c -qq -pdsw225 -mvtesla $(CSWITCH_FORMAT) $(CSWITCH_ENDIAN) -mo -eo.$(OBJEXT) -ea.$(ASMEXT) -DBUILD_C6XDSP
 CFLAGS_DIROPTS = -fr=$(OBJDIR) -fs=$(OBJDIR)
 
 # CFLAGS based on profile selected
@@ -154,7 +154,7 @@ $(LIBDIR)/$(MODULE_NAME).$(LIBEXT) : $(OBJ_PATHS)
        $(AR) $(ARFLAGS) $@ $(OBJ_PATHS)
 
 # Linker options and rules
-LNKFLAGS_INTERNAL_COMMON = --warn_sections -q -e=_c_int00 --silicon_version=64+ -c 
+LNKFLAGS_INTERNAL_COMMON = --warn_sections -q -e=_c_int00 --silicon_version=64+ -c
 
 # Assemble Linker flags from all other LNKFLAGS definitions
 _LNKFLAGS = $(LNKFLAGS_INTERNAL_COMMON) $(LNKFLAGS_INTERNAL_PROFILE) $(LNKFLAGS_GLOBAL_$(CORE)) $(LNKFLAGS_LOCAL_COMMON) $(LNKFLAGS_LOCAL_$(CORE)) 
index c4a58b49a7d5522bcd2342a9223f5f6dff815a62..df37a5b6c3c49b9489ed754af6f9b9a0647edb03 100644 (file)
@@ -74,7 +74,7 @@ ifneq ($(XDC_CFG_FILE_$(CORE)),)
 endif
 
 # Internal CFLAGS - normally doesn't change
-CFLAGS_INTERNAL = -c -qq -pdsw225 -mv6600 $(CSWITCH_FORMAT) $(CSWITCH_ENDIAN) -mo -eo.$(OBJEXT) -ea.$(ASMEXT)
+CFLAGS_INTERNAL = -c -qq -pdsw225 -mv6600 $(CSWITCH_FORMAT) $(CSWITCH_ENDIAN) -mo -eo.$(OBJEXT) -ea.$(ASMEXT) -DBUILD_C6XDSP
 CFLAGS_DIROPTS = -fr=$(OBJDIR) -fs=$(OBJDIR)
 
 # CFLAGS based on profile selected
@@ -154,7 +154,7 @@ $(LIBDIR)/$(MODULE_NAME).$(LIBEXT) : $(OBJ_PATHS)
        $(AR) $(ARFLAGS) $@ $(OBJ_PATHS)
 
 # Linker options and rules
-LNKFLAGS_INTERNAL_COMMON = --warn_sections -q -e=_c_int00 --silicon_version=64+ -c 
+LNKFLAGS_INTERNAL_COMMON = --warn_sections -q -e=_c_int00 --silicon_version=64+ -c
 
 # Assemble Linker flags from all other LNKFLAGS definitions
 _LNKFLAGS = $(LNKFLAGS_INTERNAL_COMMON) $(LNKFLAGS_INTERNAL_PROFILE) $(LNKFLAGS_GLOBAL_$(CORE)) $(LNKFLAGS_LOCAL_COMMON) $(LNKFLAGS_LOCAL_$(CORE)) 
index 380a035fa56754730e7887f163873180acccdf3e..721c426bc4dda5c23e984990b9c384347ee73ff4 100755 (executable)
@@ -72,7 +72,7 @@ ifneq ($(XDC_CFG_FILE_$(CORE)),)
 endif\r
 \r
 # Internal CFLAGS - normally doesn't change\r
-CFLAGS_INTERNAL = -c -qq -pdsw225 -mv6740 $(CSWITCH_FORMAT) -mo -eo.$(OBJEXT) -ea.$(ASMEXT)\r
+CFLAGS_INTERNAL = -c -qq -pdsw225 -mv6740 $(CSWITCH_FORMAT) -mo -eo.$(OBJEXT) -ea.$(ASMEXT) -DBUILD_C6XDSP\r
 CFLAGS_DIROPTS = -fr=$(OBJDIR) -fs=$(OBJDIR)\r
 \r
 # CFLAGS based on profile selected\r
@@ -152,7 +152,7 @@ $(LIBDIR)/$(MODULE_NAME).$(LIBEXT) : $(OBJ_PATHS)
        $(AR) $(ARFLAGS) $@ $(OBJ_PATHS)\r
 \r
 # Linker options and rules\r
-LNKFLAGS_INTERNAL_COMMON = --warn_sections -q -e=_c_int00 --silicon_version=6740 -c \r
+LNKFLAGS_INTERNAL_COMMON = --warn_sections -q -e=_c_int00 --silicon_version=6740 -c\r
 \r
 # Assemble Linker flags from all other LNKFLAGS definitions\r
 _LNKFLAGS = $(LNKFLAGS_INTERNAL_COMMON) $(LNKFLAGS_INTERNAL_PROFILE) $(LNKFLAGS_GLOBAL_$(CORE)) $(LNKFLAGS_LOCAL_COMMON) $(LNKFLAGS_LOCAL_$(CORE)) \r
index 7892fab8abff27de098e863e0c57e4d3db795a47..5abb7ac4e35dc86c784d06474f2c87126a07dfd6 100755 (executable)
@@ -82,7 +82,11 @@ extern EDMA3_RM_Obj resMgrObj[EDMA3_MAX_EDMA3_INSTANCES];
  * this info will be taken from the config file "edma3_<PLATFORM_NAME>_cfg.c",
  * for the specified platform.
  */
+#ifdef BUILD_C6XDSP
+extern far EDMA3_RM_InstanceInitConfig *ptrInitCfgArray;
+#else
 extern EDMA3_RM_InstanceInitConfig *ptrInitCfgArray;
+#endif
 
 
 /**
@@ -93,7 +97,11 @@ extern EDMA3_RM_InstanceInitConfig *ptrInitCfgArray;
  * There could be a maximum of EDMA3_MAX_RM_INSTANCES instances per
  * EDMA3 HW.
  */
+#ifdef BUILD_C6XDSP
+extern far EDMA3_RM_Instance *ptrRMIArray;
+#else
 extern EDMA3_RM_Instance *ptrRMIArray;
+#endif
 
 /** Local MemZero function */
 extern void edma3MemZero(void *dst, uint32_t len);
index 4468f67d98fc778fdd2b57fee58b3503a2b81fb2..0bfbef571e334bbebad1094ce4f5ed17be194b82 100755 (executable)
@@ -89,8 +89,11 @@ extern EDMA3_RM_Obj resMgrObj[EDMA3_MAX_EDMA3_INSTANCES];
  * this info will be taken from the config file "edma3_<PLATFORM_NAME>_cfg.c",
  * for the specified platform.
  */
+#ifdef BUILD_C6XDSP
+extern far EDMA3_RM_InstanceInitConfig *ptrInitCfgArray;
+#else
 extern EDMA3_RM_InstanceInitConfig *ptrInitCfgArray;
-
+#endif
 
 /**
  * Handles of EDMA3 Resource Manager Instances.
@@ -100,7 +103,11 @@ extern EDMA3_RM_InstanceInitConfig *ptrInitCfgArray;
  * There could be a maximum of EDMA3_MAX_RM_INSTANCES instances per
  * EDMA3 HW.
  */
+#ifdef BUILD_C6XDSP
+extern far EDMA3_RM_Instance *ptrRMIArray;
+#else
 extern EDMA3_RM_Instance *ptrRMIArray;
+#endif
 
 /** Local MemSet function */
 extern void edma3MemZero(void *dst, uint32_t len);
index 2f687f4ea85208c68833cbb40c48f333f2bb988d..f5f6203e3fe083928ca8f305a732b63a5f9a2a03 100755 (executable)
@@ -79,8 +79,11 @@ extern EDMA3_RM_Obj resMgrObj[EDMA3_MAX_EDMA3_INSTANCES];
  * this info will be taken from the config file "edma3_<PLATFORM_NAME>_cfg.c",
  * for the specified platform.
  */
+#ifdef BUILD_C6XDSP
+extern far EDMA3_RM_InstanceInitConfig *ptrInitCfgArray;
+#else
 extern EDMA3_RM_InstanceInitConfig *ptrInitCfgArray;
-
+#endif
 
 /**
  * Handles of EDMA3 Resource Manager Instances.
@@ -90,8 +93,11 @@ extern EDMA3_RM_InstanceInitConfig *ptrInitCfgArray;
  * There could be a maximum of EDMA3_MAX_RM_INSTANCES instances per
  * EDMA3 HW.
  */
+#ifdef BUILD_C6XDSP
+extern far EDMA3_RM_Instance *ptrRMIArray;
+#else
 extern EDMA3_RM_Instance *ptrRMIArray;
-
+#endif
 /** Local MemZero function */
 extern void edma3MemZero(void *dst, uint32_t len);
 /** Local MemCpy function */
@@ -103,8 +109,8 @@ extern void edma3MemCpy(void *dst, const void *src, uint32_t len);
  * Typically one object will cater to one EDMA3 HW controller
  * and will have all regions' (ARM, DSP etc) specific config information.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(drvObj, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(drvObj, ".fardata:.edma3Globals");
 #endif
 EDMA3_DRV_Object drvObj [EDMA3_MAX_EDMA3_INSTANCES];
 
@@ -118,8 +124,8 @@ EDMA3_DRV_Object drvObj [EDMA3_MAX_EDMA3_INSTANCES];
  * regions. Multiple EDMA3 Driver instances on the same shadow
  * region are NOT allowed.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(drvInstance, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(drvInstance, ".fardata:.edma3Globals");
 #endif
 EDMA3_DRV_Instance drvInstance [EDMA3_MAX_EDMA3_INSTANCES][EDMA3_MAX_REGIONS];
 
@@ -133,8 +139,8 @@ EDMA3_DRV_Instance drvInstance [EDMA3_MAX_EDMA3_INSTANCES][EDMA3_MAX_REGIONS];
  * responsibility of the driver to free up the channel-associated resources
  * from the Resource Manager layer).
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(edma3DrvChBoundRes, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(edma3DrvChBoundRes, ".fardata:.edma3Globals");
 #endif
 EDMA3_DRV_ChBoundResources edma3DrvChBoundRes [EDMA3_MAX_EDMA3_INSTANCES][EDMA3_MAX_LOGICAL_CH];
 
@@ -153,8 +159,8 @@ EDMA3_DRV_ChBoundResources edma3DrvChBoundRes [EDMA3_MAX_EDMA3_INSTANCES][EDMA3_
  *
  */
 #ifdef EDMA3_PROGRAM_QUEUE_NUM_REGISTER_INIT_TIME
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(edma3DmaQdmaQueueNumConfig, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(edma3DmaQdmaQueueNumConfig, ".fardata:.edma3Globals");
 #endif
 EDMA3_DRV_DmaQdmaQueueNum edma3DmaQdmaQueueNumConfig = {
         {
@@ -176,6 +182,13 @@ EDMA3_DRV_DmaQdmaQueueNum edma3DmaQdmaQueueNumConfig = {
        };
 #endif
 
+/**
+ * Used to reset the Internal EDMA3 Driver Data Structures for the first time.
+ */
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(drvInitDone, ".fardata:.edma3Globals");
+#endif
+static uint16_t drvInitDone = FALSE;
 
 /* Local functions prototypes */
 /*---------------------------------------------------------------------------*/
@@ -196,10 +209,6 @@ EDMA3_DRV_Result EDMA3_DRV_create (uint32_t phyCtrllerInstId,
     uint32_t count = 0;
     EDMA3_DRV_Result result = EDMA3_DRV_SOK;
     EDMA3_RM_GblConfigParams rmGblCfgParams;
-    /**
-     * Used to reset the Internal EDMA3 Driver Data Structures for the first time.
-     */
-    static uint16_t drvInitDone = FALSE;
 
     /**
      * We are NOT checking 'gblCfgParams' for NULL. Whatever user has passed
index db3a8979ca6b689dcfd14e9ea5f76ff0d5f4b4ca..9c8a5551afcef700f5e6a727bf2c81054a3a02b8 100755 (executable)
@@ -37,6 +37,9 @@
  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
 */
+
+   var makeFar = (((Program.build.target.isa.match(/66/)) || (Program.build.target.isa.match(/64t/)) || (Program.build.target.isa.match(/64p/)) || (Program.build.target.isa.match(/674/))) ? true : false);
+
 %%}
 
 /* Resource Manager Internal Header Files */
 /* This const is required to access this constant in other header files */
 const unsigned int EDMA3_MAX_RM_INSTANCES = `max_rm_instances`;
 
+/*
+% print("********** GUNP Program.build.target.isa " + Program.build.target.isa);
+*/
 EDMA3_RM_InstanceInitConfig userInstInitConfigArray[EDMA3_MAX_EDMA3_INSTANCES][MAX_EDMA3_RM_INSTANCES];
 EDMA3_RM_Instance resMgrInstanceArray[EDMA3_MAX_EDMA3_INSTANCES][MAX_EDMA3_RM_INSTANCES];
 
 
+% if (makeFar) {
+/* These pointers will be used to refer the above mentioned arrays. */
+far EDMA3_RM_Instance *resMgrInstance = (EDMA3_RM_Instance *)resMgrInstanceArray;
+far EDMA3_RM_InstanceInitConfig *userInitConfig = (EDMA3_RM_InstanceInitConfig *)userInstInitConfigArray;
+
+/* Pointer to the above mentioned 2-D arrays, used for address calculation purpose */
+far EDMA3_RM_Instance *ptrRMIArray = (EDMA3_RM_Instance *)resMgrInstanceArray;
+far EDMA3_RM_InstanceInitConfig *ptrInitCfgArray = (EDMA3_RM_InstanceInitConfig *)userInstInitConfigArray;
+
+% }
+% else {
 /* These pointers will be used to refer the above mentioned arrays. */
 EDMA3_RM_Instance *resMgrInstance = (EDMA3_RM_Instance *)resMgrInstanceArray;
 EDMA3_RM_InstanceInitConfig *userInitConfig = (EDMA3_RM_InstanceInitConfig *)userInstInitConfigArray;
@@ -69,6 +86,4 @@ EDMA3_RM_InstanceInitConfig *userInitConfig = (EDMA3_RM_InstanceInitConfig *)use
 EDMA3_RM_Instance *ptrRMIArray = (EDMA3_RM_Instance *)resMgrInstanceArray;
 EDMA3_RM_InstanceInitConfig *ptrInitCfgArray = (EDMA3_RM_InstanceInitConfig *)userInstInitConfigArray;
 
-
-
-
+% }
index 5905cb299a7edcfc7bb902d5542786ccb8469335..c74562e47ab415eb580e471116921e8fd836e357 100755 (executable)
@@ -57,8 +57,8 @@ const uint32_t EDMA3_MAX_RM_INSTANCES = 8u;
  * this info will be taken from the config file "edma3_<PLATFORM_NAME>_cfg.c",
  * for the specified platform.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(userInstInitConfigArray, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(userInstInitConfigArray, ".fardata:.edma3Globals");
 #endif
 EDMA3_RM_InstanceInitConfig userInstInitConfigArray[EDMA3_MAX_EDMA3_INSTANCES][MAX_EDMA3_RM_INSTANCES];
 
@@ -71,14 +71,23 @@ EDMA3_RM_InstanceInitConfig userInstInitConfigArray[EDMA3_MAX_EDMA3_INSTANCES][M
  * There could be a maximum of EDMA3_MAX_RM_INSTANCES instances per
  * EDMA3 HW.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(resMgrInstanceArray, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(resMgrInstanceArray, ".fardata:.edma3Globals");
 #endif
 EDMA3_RM_Instance resMgrInstanceArray[EDMA3_MAX_EDMA3_INSTANCES][MAX_EDMA3_RM_INSTANCES];
+
 /* These pointers will be used to refer the above mentioned arrays. */
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(resMgrInstance, ".fardata:.edma3Globals");
+#pragma DATA_SECTION(userInitConfig, ".fardata:.edma3Globals");
+#endif
 EDMA3_RM_Instance *resMgrInstance = (EDMA3_RM_Instance *)resMgrInstanceArray;
 EDMA3_RM_InstanceInitConfig *userInitConfig = (EDMA3_RM_InstanceInitConfig *)userInstInitConfigArray;
 
 /* Pointer to the above mentioned 2-D arrays, used for address calculation purpose */
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(ptrRMIArray, ".fardata:.edma3Globals");
+#pragma DATA_SECTION(ptrInitCfgArray, ".fardata:.edma3Globals");
+#endif
 EDMA3_RM_Instance *ptrRMIArray = (EDMA3_RM_Instance *)resMgrInstanceArray;
 EDMA3_RM_InstanceInitConfig *ptrInitCfgArray = (EDMA3_RM_InstanceInitConfig *)userInstInitConfigArray;
index 7abd99de1c0ba834ecd65cfbc4b4659b87bda260..c8a61e04ce86f77bc1530525d59c1580fdf2f480 100755 (executable)
@@ -124,9 +124,13 @@ extern EDMA3_RM_InstanceInitConfig defInstInitConfig [EDMA3_MAX_EDMA3_INSTANCES]
  * this info will be taken from the config file "edma3_<PLATFORM_NAME>_cfg.c",
  * for the specified platform.
  */
+#ifdef BUILD_C6XDSP
+extern far EDMA3_RM_InstanceInitConfig *userInitConfig;
+extern far EDMA3_RM_InstanceInitConfig *ptrInitCfgArray;
+#else
 extern EDMA3_RM_InstanceInitConfig *userInitConfig;
 extern EDMA3_RM_InstanceInitConfig *ptrInitCfgArray;
-
+#endif
 
 /**
  * Handles of EDMA3 Resource Manager Instances.
@@ -136,9 +140,14 @@ extern EDMA3_RM_InstanceInitConfig *ptrInitCfgArray;
  * There could be a maximum of EDMA3_MAX_RM_INSTANCES instances per
  * EDMA3 HW.
  */
-extern EDMA3_RM_Instance *resMgrInstance;
+#ifdef BUILD_C6XDSP
+extern far EDMA3_RM_Instance *resMgrInstance;
+extern far EDMA3_RM_Instance *ptrRMIArray;
+#else
 extern EDMA3_RM_Instance *ptrRMIArray;
+extern EDMA3_RM_Instance *resMgrInstance;
 
+#endif
 /** Max of DMA Channels */
 uint32_t edma3_dma_ch_max_val[EDMA3_MAX_EDMA3_INSTANCES];
 /** Min of Link Channels */
@@ -160,8 +169,8 @@ uint32_t edma3_log_ch_max_val[EDMA3_MAX_EDMA3_INSTANCES];
  * Typically one RM object will cater to one EDMA3 HW controller
  * and will have all the global config information.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(resMgrObj, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(resMgrObj, ".fardata:.edma3Globals");
 #endif
 EDMA3_RM_Obj resMgrObj[EDMA3_MAX_EDMA3_INSTANCES];
 
@@ -175,8 +184,8 @@ EDMA3_RM_Obj resMgrObj[EDMA3_MAX_EDMA3_INSTANCES];
  * scenario, this DMA channel <-> TCC mapping will be used to point to
  * the correct callback function.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(edma3DmaChTccMapping, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(edma3DmaChTccMapping, ".fardata:.edma3Globals");
 #endif
 static uint32_t edma3DmaChTccMapping [EDMA3_MAX_EDMA3_INSTANCES][EDMA3_MAX_DMA_CH];
 
@@ -190,8 +199,8 @@ static uint32_t edma3DmaChTccMapping [EDMA3_MAX_EDMA3_INSTANCES][EDMA3_MAX_DMA_C
  * scenario, this QDMA channel <-> TCC mapping will be used to point to
  * the correct callback function.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(edma3QdmaChTccMapping, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(edma3QdmaChTccMapping, ".fardata:.edma3Globals");
 #endif
 static uint32_t edma3QdmaChTccMapping [EDMA3_MAX_EDMA3_INSTANCES][EDMA3_MAX_QDMA_CH];
 
@@ -201,8 +210,8 @@ static uint32_t edma3QdmaChTccMapping [EDMA3_MAX_EDMA3_INSTANCES][EDMA3_MAX_QDMA
  * against a particular TCC. Used to call the callback
  * functions linked to the particular channel.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(edma3IntrParams, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(edma3IntrParams, ".fardata:.edma3Globals");
 #endif
 static EDMA3_RM_TccCallbackParams edma3IntrParams [EDMA3_MAX_EDMA3_INSTANCES][EDMA3_MAX_TCC];
 
@@ -214,8 +223,8 @@ static EDMA3_RM_TccCallbackParams edma3IntrParams [EDMA3_MAX_EDMA3_INSTANCES][ED
  * which shadow region registers to access. All other interrupts coming
  * from other shadow regions will not be handled.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(edma3RegionId, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(edma3RegionId, ".fardata:.edma3Globals");
 #endif
 static EDMA3_RM_RegionId edma3RegionId = EDMA3_MAX_REGIONS;
 
@@ -225,8 +234,8 @@ static EDMA3_RM_RegionId edma3RegionId = EDMA3_MAX_REGIONS;
  * masterExists[] is per EDMA3 hardware, hence it is created
  * as an array.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(masterExists, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(masterExists, ".fardata:.edma3Globals");
 #endif
 static uint32_t masterExists [EDMA3_MAX_EDMA3_INSTANCES] = {FALSE,FALSE,FALSE};
 
@@ -234,8 +243,8 @@ static uint32_t masterExists [EDMA3_MAX_EDMA3_INSTANCES] = {FALSE,FALSE,FALSE};
  * Number of PaRAM Sets actually present on the SoC. This will be updated
  * while creating the Resource Manager Object.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(edma3NumPaRAMSets, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(edma3NumPaRAMSets, ".fardata:.edma3Globals");
 #endif
 uint32_t edma3NumPaRAMSets = EDMA3_MAX_PARAM_SETS;
 
@@ -244,8 +253,8 @@ uint32_t edma3NumPaRAMSets = EDMA3_MAX_PARAM_SETS;
  * The list of Interrupt Channels which get allocated while requesting the
  * TCC. It will be used while checking the IPR/IPRH bits in the RM ISR.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(allocatedTCCs, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(allocatedTCCs, ".fardata:.edma3Globals");
 #endif
 static uint32_t allocatedTCCs[EDMA3_MAX_EDMA3_INSTANCES][2u] =
                                                                                        {
@@ -260,8 +269,8 @@ static uint32_t allocatedTCCs[EDMA3_MAX_EDMA3_INSTANCES][2u] =
  * and stored in this array. It will be referenced in
  * EDMA3_RM_allocContiguousResource () to look for contiguous resources.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(contiguousDmaRes, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(contiguousDmaRes, ".fardata:.edma3Globals");
 #endif
 static uint32_t contiguousDmaRes[EDMA3_MAX_DMA_CHAN_DWRDS] = {0x0u, 0x0u};
 
@@ -270,8 +279,8 @@ static uint32_t contiguousDmaRes[EDMA3_MAX_DMA_CHAN_DWRDS] = {0x0u, 0x0u};
  * and stored in this array. It will be referenced in
  * EDMA3_RM_allocContiguousResource () to look for contiguous resources.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(contiguousQdmaRes, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(contiguousQdmaRes, ".fardata:.edma3Globals");
 #endif
 static uint32_t contiguousQdmaRes[EDMA3_MAX_QDMA_CHAN_DWRDS] = {0x0u};
 
@@ -280,8 +289,8 @@ static uint32_t contiguousQdmaRes[EDMA3_MAX_QDMA_CHAN_DWRDS] = {0x0u};
  * and stored in this array. It will be referenced in
  * EDMA3_RM_allocContiguousResource () to look for contiguous resources.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(contiguousTccRes, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(contiguousTccRes, ".fardata:.edma3Globals");
 #endif
 static uint32_t contiguousTccRes[EDMA3_MAX_TCC_DWRDS] = {0x0u, 0x0u};
 
@@ -290,8 +299,8 @@ static uint32_t contiguousTccRes[EDMA3_MAX_TCC_DWRDS] = {0x0u, 0x0u};
  * and stored in this array. It will be referenced in
  * EDMA3_RM_allocContiguousResource () to look for contiguous resources.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(contiguousParamRes, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(contiguousParamRes, ".fardata:.edma3Globals");
 #endif
 static uint32_t contiguousParamRes[EDMA3_MAX_PARAM_DWRDS];
 
@@ -304,12 +313,18 @@ static uint32_t contiguousParamRes[EDMA3_MAX_PARAM_DWRDS];
  * resource manager, when a request is made to free the channel,
  * to free up the channel-associated resources.
  */
-#ifndef BUILD_TDA2XX_MPU
-#pragma DATA_SECTION(edma3RmChBoundRes, ".far");
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(edma3RmChBoundRes, ".fardata:.edma3Globals");
 #endif
 static EDMA3_RM_ChBoundResources edma3RmChBoundRes [EDMA3_MAX_EDMA3_INSTANCES][EDMA3_MAX_LOGICAL_CH];
 
-
+/**
+ * Used to reset the Internal EDMA3 Resource Manager Data Structures for the first time.
+ */
+#ifdef BUILD_C6XDSP
+#pragma DATA_SECTION(rmInitDone, ".fardata:.edma3Globals");
+#endif
+ static unsigned short rmInitDone = FALSE;
 
 /*---------------------------------------------------------------------------*/
 
@@ -396,10 +411,6 @@ EDMA3_RM_Result EDMA3_RM_create (uint32_t phyCtrllerInstId,
     {
     uint32_t count = 0u;
     EDMA3_RM_Result result = EDMA3_RM_SOK;
-    /**
-     * Used to reset the Internal EDMA3 Resource Manager Data Structures for the first time.
-     */
-    static unsigned short rmInitDone = FALSE;
     const EDMA3_RM_MiscParam *miscOpt = (const EDMA3_RM_MiscParam *)miscParam;
 
 #ifdef GENERIC