Build: Fix SMP support for platforms without 'ipu' in the name
authorChris Ring <cring@ti.com>
Mon, 29 Apr 2013 19:30:53 +0000 (12:30 -0700)
committerChris Ring <cring@ti.com>
Mon, 29 Apr 2013 22:53:37 +0000 (15:53 -0700)
A few SMP-aware packages only support platforms with the name
'ipu' in them.  Remove this explicit platform name check and replace
it with a more correct check (e.g. by detecting BIOS.smpEnabled, or
using the platform's .deviceName field - which doesn't vary across
platform names).

packages/ti/ipc/family/omap54xx/package.xs
packages/ti/ipc/remoteproc/Resource.xdt
packages/ti/ipc/tests/ping_rpmsg.cfg
packages/ti/ipc/tests/rpmsg_transport.cfg
packages/ti/srvmgr/package.xs
packages/ti/trace/SysMin.xs
packages/ti/trace/package.xs

index 5ab1c202b0b2b4c3b4bb8a780c4726a10cc213a6..0334ccaab525e3f6461bcdd5243658bc5ea53c5f 100644 (file)
@@ -71,7 +71,8 @@ function getLibs(prog)
         return ("");
     }
 
-    if (prog.platformName.match(/ipu/)) {
+    var BIOS = xdc.module('ti.sysbios.BIOS');
+    if (BIOS.smpEnabled) {
         smp = "_smp";
     }
 
index 3b3ab5859cb7aa13a7771e0d195a6a60cf89e936..709c4d61959ad61c9f78911cdebdfd0d400b8a6a 100644 (file)
 %if (prog.platformName.match(/OMAPL138/)) {
 #include <ti/ipc/remoteproc/rsc_table_omapl138.h>
 %}
-%if (prog.platformName.match(/evm6614/)) {
+%else if (prog.platformName.match(/evm6614/)) {
 #include <ti/ipc/remoteproc/rsc_table_tci6614.h>
 //#include <ti/ipc/remoteproc/rsc_table_tci6614_v3.3.h> // Test with v3.3 Linux.
 %}
-%if (prog.platformName.match(/Kepler/) ||
+%else if (prog.platformName.match(/Kepler/) ||
 %         prog.platformName.match(/TCI6638/)) {
 #include <ti/ipc/remoteproc/rsc_table_tci6638.h>
 %}
-%if (prog.platformName.match(/omap54xx\.ipu/)) {
+%else if (prog.cpu.deviceName.match(/^OMAP5430$/)) {
+%    if (prog.cpu.attrs.cpuCore.match(/^CM4$/)) {
 #define OMAP5
 #include <ti/ipc/remoteproc/rsc_table_omap5_ipu.h>
-%}
-%if (prog.platformName.match(/omap54xx\.dsp/)) {
+%    } else if (prog.cpu.attrs.cpuCore.match(/^64T$/)) {
 #include <ti/ipc/remoteproc/rsc_table_omap5_dsp.h>
+%    }
+%    else {
+%        print("ti.ipc.remoteproc.Resource.xdt - unable to provide OMAP5 " +
+%                "resource table (" + prog.cpu.attrs.cpuCore + ")");
+%    }
+%}
+%else {
+%    print("ti.ipc.remoteproc.Resource.xdt - unable to provide resource table " +
+%            "(" + prog.cpu.deviceName + ", " + prog.cpu.attrs.cpuCore + ")");
 %}
 
 Void ti_ipc_remoteproc_Resource_init__I()
index 84063faaf19b7637734a25b7dd1d050511ab3f4b..48369c419f5233c1e97e6c270f0b7f1410b175d0 100644 (file)
@@ -33,8 +33,9 @@
 //print ("Program.cpu.deviceName = " + Program.cpu.deviceName);
 //print ("Program.platformName = " + Program.platformName);
 
-/* This will match for omap5 SMP only: */
-if (Program.platformName.match(/ipu/)) {
+/* This will match for omap5 IPU only: */
+if (Program.cpu.deviceName.match(/^OMAP5430$/) &&
+        Program.cpu.attrs.cpuCore.match(/^CM4$/)) {
     var Task          = xdc.useModule('ti.sysbios.knl.Task');
     var params = new Task.Params;
     params.instance.name = "ping";
index b107208b84535d77e97e46438d1aa834407f2440..f658c2569bc6e1b89781ad30cd278fec1f33e2e7 100644 (file)
@@ -34,8 +34,9 @@
 //print ("Program.cpu.deviceName = " + Program.cpu.deviceName);
 //print ("Program.platformName = " + Program.platformName);
 
-/* This will match for omap5 SMP only: */
-if (Program.platformName.match(/ipu/)) {
+/* This will match for omap5 IPU only: */
+if (Program.cpu.deviceName.match(/^OMAP5430$/) &&
+        Program.cpu.attrs.cpuCore.match(/^CM4$/)) {
     /* This initializes the MessageQ Transport RPMSG stack:  */
     xdc.loadPackage('ti.ipc.ipcmgr');
     var BIOS        = xdc.useModule('ti.sysbios.BIOS');
index 051817f653ca78c2c716656333644e9feaf57a3d..79db6f0e38f9b05f2be47572f6a8005d7f4e07be 100644 (file)
@@ -59,7 +59,8 @@ function getLibs(prog)
         return "";  /* nothing to contribute */
     }
 
-    if (prog.platformName.match(/ipu/)) {
+    BIOS = xdc.module('ti.sysbios.BIOS');
+    if ((BIOS != undefined) && BIOS.smpEnabled) {
         smp = "_smp";
     }
 
index 60ce92bbd201c8f7b7b39e1fb25335438b59aad3..e24a9c8f31d208584c45c505e6601c24671d4dfc 100644 (file)
@@ -34,7 +34,7 @@
  */
 
 var SysMin = this;
-var Core = null;
+var Core = undefined;
 
 /*
  *  ======== module$static$init ========
@@ -42,7 +42,15 @@ var Core = null;
 function module$static$init(obj, params)
 {
     var segname = Program.sectMap[".tracebuf"];
+    if (segname == undefined) {
+        this.$logError(".tracebuf section not found in Program.sectMap", this);
+    }
+
     var segment = Program.cpu.memoryMap[segname];
+    if (segment == undefined) {
+        this.$logError(".tracebuf section found, but not in " +
+                "Program.cpu.memoryMap", this);
+    }
 
     if (params.bufSize > segment.len) {
         this.$logError("bufSize 0x" + Number(params.bufSize).toString(16) +
@@ -56,7 +64,7 @@ function module$static$init(obj, params)
                        + " = 0x" + Number(this.LINEBUFSIZE).toString(16), this);
     }
 
-    if (Program.platformName.match(/ipu/)) {
+    if (Core != undefined) {
         obj.lineBuffers.length = Core.numCores;
     }
     else {
@@ -89,9 +97,7 @@ function module$static$init(obj, params)
  */
 function module$use(obj, params)
 {
-    if (Program.platformName.match(/ipu/)) {
-        Core = xdc.module("ti.sysbios.hal.Core");
-    }
+    Core = xdc.useModule("ti.sysbios.hal.Core");
 }
 
 /*
index ef39be840aa0260e4e99284bb3e74c03a558ccbe..2569eaebc4ba135c6618b4ae7d687af20ced0301 100644 (file)
@@ -51,7 +51,8 @@ function getLibs(prog)
         return "";  /* nothing to contribute */
     }
 
-    if (prog.platformName.match(/ipu/)) {
+    BIOS = xdc.module('ti.sysbios.BIOS');
+    if ((BIOS != undefined) && BIOS.smpEnabled) {
         smp = "_smp";
     }