Index: trunk/platforms/almos-tsar-mipsel/top.cpp
===================================================================
--- trunk/platforms/almos-tsar-mipsel/top.cpp	(revision 609)
+++ trunk/platforms/almos-tsar-mipsel/top.cpp	(revision 613)
@@ -265,5 +265,5 @@
    size_t   yfb              = FBUF_Y_SIZE;        // frameBuffer lines number
    size_t   fb_mode          = 420;
-   size_t   memc_size        = RAM_SIZE;
+   size_t   ram_size         = RAM_SIZE;
    size_t   blk_size         = BDEV_SECTOR_SIZE;
    size_t   l1_i_ways        = L1_IWAYS;
@@ -274,4 +274,9 @@
    size_t   memc_ways        = MEMC_WAYS;
    size_t   xram_latency     = XRAM_LATENCY;
+   size_t   ram_base         = RAM_BASE;
+   size_t   xicu_base        = XICU_BASE;
+   size_t   mdma_base        = MDMA_BASE;
+   size_t   memc_base        = MEMC_BASE;
+   bool     isRamSizeSet     = false;
    size_t   cluster_io_id;                         // index of cluster containing IOs
    struct   timeval t1,t2;
@@ -312,5 +317,6 @@
          else if((strcmp(argv[n], "-MEMSZ") == 0) && (n+1 < argc))
          {
-            memc_size = atoi(argv[n+1]);
+            ram_size = atoi(argv[n+1]);
+            isRamSizeSet = true;
          }
          else if((strcmp(argv[n], "-MCWAYS") == 0) && (n+1 < argc))
@@ -461,5 +467,5 @@
     std::cout << " - MEMC_WAYS        = " << memc_ways << std::endl;
     std::cout << " - MEMC_SETS        = " << memc_sets << std::endl;
-    std::cout << " - RAM_SIZE         = " << memc_size << std::endl;
+    std::cout << " - RAM_SIZE         = " << ram_size << std::endl;
     std::cout << " - RAM_LATENCY      = " << xram_latency << std::endl;
     std::cout << " - MAX_FROZEN       = " << frozen_cycles << std::endl;
@@ -512,5 +518,14 @@
    else                y_width = 4;
 
-   cluster_io_id = 0xbfc00000 >> (vci_address_width - x_width - y_width); // index of cluster containing IOs
+   if((xmax == 1) && (ymax == 1))
+   {
+      cluster_io_id = 0;
+      ram_size      = (isRamSizeSet == true) ? ram_size : 0x8000000;
+      xicu_base     = 0x80f00000;
+      memc_base     = 0x80f40000;
+      mdma_base     = 0x80f30000;
+   }
+   else
+      cluster_io_id = 0xbfc00000 >> (vci_address_width - x_width - y_width); // index of cluster containing IOs
 
    /////////////////////
@@ -519,5 +534,5 @@
 
    // internal network
-   MappingTable maptabd(vci_address_width, 
+   MappingTable maptabd(vci_address_width,
                         IntTab(x_width + y_width, 16 - x_width - y_width), 
                         IntTab(x_width + y_width, vci_srcid_width - x_width - y_width), 
@@ -534,20 +549,20 @@
          std::ostringstream    si;
          si << "seg_xicu_" << x << "_" << y;
-         maptabd.add(Segment(si.str(), XICU_BASE + offset, XICU_SIZE, 
+         maptabd.add(Segment(si.str(), xicu_base + offset, XICU_SIZE, 
                   IntTab(cluster(x,y),XICU_TGTID), false));
 
          std::ostringstream    sd;
          sd << "seg_mdma_" << x << "_" << y;
-         maptabd.add(Segment(sd.str(), MDMA_BASE + offset, MDMA_SIZE, 
+         maptabd.add(Segment(sd.str(), mdma_base + offset, MDMA_SIZE, 
                   IntTab(cluster(x,y),MDMA_TGTID), false));
 
          std::ostringstream    sh;
          sh << "seg_ram_" << x << "_" << y;
-         maptabd.add(Segment(sh.str(), RAM_BASE + offset, memc_size, 
+         maptabd.add(Segment(sh.str(), RAM_BASE + offset, ram_size, 
                   IntTab(cluster(x,y),MEMC_TGTID), true));
 
          std::ostringstream    sconf;
          sconf << "seg_memc_config_" << x << "_" << y;
-         maptabd.add(Segment(sconf.str(), MEMC_BASE + offset, MEMC_SIZE, 
+         maptabd.add(Segment(sconf.str(), memc_base + offset, RAM_SIZE, 
                              IntTab(cluster(x,y),MEMC_TGTID), true, true));
 
@@ -592,5 +607,5 @@
 
          maptabx.add(Segment(sh.str(), RAM_BASE + offset, 
-                     memc_size, IntTab(cluster(x,y)), false));
+                     ram_size, IntTab(cluster(x,y)), false));
       }
    }
