Index: /branches/fault_tolerance/platforms/tsar_generic_iob/arch.py
===================================================================
--- /branches/fault_tolerance/platforms/tsar_generic_iob/arch.py	(revision 735)
+++ /branches/fault_tolerance/platforms/tsar_generic_iob/arch.py	(revision 736)
@@ -41,4 +41,5 @@
     ### define architecture constants
 
+    distptabs      = 1
     nb_ttys        = 1
     nb_nics        = 2
@@ -115,17 +116,17 @@
 
     boot_mapping_vbase   = 0x00000000      # ident
-    boot_mapping_size    = 0x00010000      # 64 Kbytes
-
-    boot_code_vbase      = 0x00010000      # ident
+    boot_mapping_size    = 0x00040000      # 256 Kbytes
+
+    boot_code_vbase      = 0x00040000      # ident
     boot_code_size       = 0x00020000      # 128 Kbytes
 
-    boot_data_vbase      = 0x00030000      # ident
+    boot_data_vbase      = 0x00060000      # ident
     boot_data_size       = 0x00010000      # 64 Kbytes
 
-    boot_buffer_vbase    = 0x00040000      # ident
+    boot_buffer_vbase    = 0x00070000      # ident
     boot_buffer_size     = 0x00060000      # 384 Kbytes
 
-    boot_stack_vbase     = 0x000A0000      # ident
-    boot_stack_size      = 0x00050000      # 320 Kbytes
+    boot_stack_vbase     = 0x03F00000      # ident
+    boot_stack_size      = 0x00100000      # 1 Mbytes
 
     ### define kernel vsegs base addresses
@@ -202,15 +203,15 @@
             ram = mapping.addRam( 'RAM', base = ram_base + offset, size = ram_size )
 
+            mmc = mapping.addPeriph( 'MMC', base = mmc_base + offset, size = mmc_size,
+                                     ptype = 'MMC' )
+
+            dma = mapping.addPeriph( 'DMA', base = dma_base + offset, size = dma_size,
+                                     ptype = 'DMA', channels = nb_procs )
+
+            xcu = mapping.addPeriph( 'XCU', base = xcu_base + offset, size = xcu_size,
+                                     ptype = 'XCU', channels = nb_procs * irq_per_proc, arg = 16 )
+
             rom = mapping.addPeriph( 'ROM', base = rom_base + offset, size = rom_size,
                                      ptype = 'ROM' )
-
-            mmc = mapping.addPeriph( 'MMC', base = mmc_base + offset, size = mmc_size,
-                                     ptype = 'MMC' )
-
-            dma = mapping.addPeriph( 'DMA', base = dma_base + offset, size = dma_size,
-                                     ptype = 'DMA', channels = nb_procs )
-
-            xcu = mapping.addPeriph( 'XCU', base = xcu_base + offset, size = xcu_size,
-                                     ptype = 'XCU', channels = nb_procs * irq_per_proc, arg = 16 )
 
             # MMC IRQ replicated in all clusters
@@ -240,6 +241,24 @@
     ### global vsegs for kernel
 
-    mapping.addGlobal( 'seg_kernel_code'   , kernel_code_vbase   , kernel_code_size   , 'CXW_',
-                       vtype = 'ELF'   , x = 0, y = 0, pseg = 'RAM', binpath = 'build/kernel/kernel.elf' )
+    if distptabs:
+        for x in xrange( x_size ):
+            for y in xrange( y_size ):
+                cluster_xy = (x << y_width) + y;
+
+                mapping.addGlobal( 'seg_kernel_code', kernel_code_vbase, kernel_code_size,
+                                   'CXW_', vtype = 'ELF', x = x , y = y , pseg = 'RAM',
+                                   binpath = 'build/kernel/kernel.elf', local = True )
+
+                mapping.addGlobal( 'seg_kernel_init', kernel_init_vbase, kernel_init_size,
+                                   'CXW_', vtype = 'ELF', x = x , y = y , pseg = 'RAM',
+                                   binpath = 'build/kernel/kernel.elf', local = True )
+    else:
+        mapping.addGlobal( 'seg_kernel_code', kernel_code_vbase, kernel_code_size,
+                           'CXW_', vtype = 'ELF', x = 0 , y = 0 , pseg = 'RAM',
+                           binpath = 'build/kernel/kernel.elf' )
+
+        mapping.addGlobal( 'seg_kernel_init', kernel_init_vbase, kernel_init_size,
+                           'CXW_', vtype = 'ELF', x = 0 , y = 0 , pseg = 'RAM',
+                           binpath = 'build/kernel/kernel.elf' )
 
     mapping.addGlobal( 'seg_kernel_data'   , kernel_data_vbase   , kernel_data_size   , 'C_W_',
@@ -247,7 +266,4 @@
 
     mapping.addGlobal( 'seg_kernel_uncdata', kernel_uncdata_vbase, kernel_uncdata_size, '__W_',
-                       vtype = 'ELF'   , x = 0, y = 0, pseg = 'RAM', binpath = 'build/kernel/kernel.elf' )
-
-    mapping.addGlobal( 'seg_kernel_init'   , kernel_init_vbase   , kernel_init_size   , 'CXW_',
                        vtype = 'ELF'   , x = 0, y = 0, pseg = 'RAM', binpath = 'build/kernel/kernel.elf' )
 
Index: /branches/fault_tolerance/platforms/tsar_generic_iob/top.cpp
===================================================================
--- /branches/fault_tolerance/platforms/tsar_generic_iob/top.cpp	(revision 735)
+++ /branches/fault_tolerance/platforms/tsar_generic_iob/top.cpp	(revision 736)
@@ -45,7 +45,6 @@
 // - IOPIC HWI[7:4]     connected to IRQ_CMA_TX[3:0]]
 // - IOPIC HWI[8]       connected to IRQ_BDEV
-// - IOPIC HWI[15:9]    unused       (grounded)
-// - IOPIC HWI[23:16]   connected to IRQ_TTY_RX[7:0]]
-// - IOPIC HWI[31:24]   connected to IRQ_TTY_TX[7:0]]   TBD
+// - IOPIC HWI[9]       connected to IRQ_TTY_RX[0]
+// - IOPIC HWI[31:9]    unused       (grounded)
 //
 // Besides the external peripherals, each cluster contains on XICU component,
