Index: /trunk/platforms/tsar_generic_iob/arch.py
===================================================================
--- /trunk/platforms/tsar_generic_iob/arch.py	(revision 974)
+++ /trunk/platforms/tsar_generic_iob/arch.py	(revision 975)
@@ -221,24 +221,24 @@
                                      arg0 = 32, arg1 = 32, arg2 = 32 )
 
-            mapping.addIrq( xcu, index = 0, isrtype = 'ISR_MMC' )
-            mapping.addIrq( xcu, index = 1, isrtype = 'ISR_MWR' )
-
-            mapping.addPeriph( 'MMC', base = mmc_base + offset, 
-                                     size = mmc_size, ptype = 'MMC' )
+            mapping.addPeriph( 'MMC', base = mmc_base + offset,
+                               size = mmc_size, ptype = 'MMC' )
 
             if ( mwr_type == 'GCD' ):
-                mapping.addPeriph( 'MWR', base = mwr_base + offset,
-                                   size = mwr_size, ptype = 'MWR', subtype = 'GCD',
-                                   arg0 = 2, arg1 = 1, arg2 = 1, arg3 = 0 )  
+                mwr = mapping.addPeriph( 'MWR', base = mwr_base + offset,
+                                         size = mwr_size, ptype = 'MWR', subtype = 'GCD',
+                                         arg0 = 2, arg1 = 1, arg2 = 1, arg3 = 0 )
 
             if ( mwr_type == 'DCT' ):
-                mapping.addPeriph( 'MWR', base = mwr_base + offset,
-                                   size = mwr_size, ptype = 'MWR', subtype = 'DCT',
-                                   arg0 = 1, arg1 = 1, arg2 = 1, arg3 = 0 )  
+                mwr = mapping.addPeriph( 'MWR', base = mwr_base + offset,
+                                         size = mwr_size, ptype = 'MWR', subtype = 'DCT',
+                                         arg0 = 1, arg1 = 1, arg2 = 1, arg3 = 0 )
 
             if ( mwr_type == 'CPY' ):
-                mapping.addPeriph( 'MWR', base = mwr_base + offset,
-                                   size = mwr_size, ptype = 'MWR', subtype = 'CPY',
-                                   arg0 = 1, arg1 = 1, arg2 = 1, arg3 = 0 )  
+                mwr = mapping.addPeriph( 'MWR', base = mwr_base + offset,
+                                         size = mwr_size, ptype = 'MWR', subtype = 'CPY',
+                                         arg0 = 1, arg1 = 1, arg2 = 1, arg3 = 0 )
+
+            mapping.addIrq( xcu, index = 0, src = mmc, isrtype = 'ISR_MMC' )
+            mapping.addIrq( xcu, index = 1, src = mwr, isrtype = 'ISR_MWR' )
 
             for p in xrange ( nb_procs ):
@@ -272,14 +272,22 @@
                                          ptype = 'PIC', channels = 32 )
 
-                mapping.addIrq( pic, index = 0,  isrtype = 'ISR_NIC_RX', channel = 0 )
-                mapping.addIrq( pic, index = 1,  isrtype = 'ISR_NIC_RX', channel = 1 )
-
-                mapping.addIrq( pic, index = 2,  isrtype = 'ISR_NIC_TX', channel = 0 )
-                mapping.addIrq( pic, index = 3,  isrtype = 'ISR_NIC_TX', channel = 1 )
-
-                mapping.addIrq( pic, index = 4,  isrtype = 'ISR_CMA'   , channel = 0 )
-                mapping.addIrq( pic, index = 5,  isrtype = 'ISR_CMA'   , channel = 1 )
-                mapping.addIrq( pic, index = 6,  isrtype = 'ISR_CMA'   , channel = 2 )
-                mapping.addIrq( pic, index = 7,  isrtype = 'ISR_CMA'   , channel = 3 )
+                mapping.addIrq( pic, index = 0, src = nic,
+                                isrtype = 'ISR_NIC_RX', channel = 0 )
+                mapping.addIrq( pic, index = 1, src = nic,
+                                isrtype = 'ISR_NIC_RX', channel = 1 )
+
+                mapping.addIrq( pic, index = 2, src = nic,
+                                isrtype = 'ISR_NIC_TX', channel = 0 )
+                mapping.addIrq( pic, index = 3, src = nic,
+                                isrtype = 'ISR_NIC_TX', channel = 1 )
+
+                mapping.addIrq( pic, index = 4, src = cma,
+                                isrtype = 'ISR_CMA', channel = 0 )
+                mapping.addIrq( pic, index = 5, src = cma,
+                                isrtype = 'ISR_CMA', channel = 1 )
+                mapping.addIrq( pic, index = 6, src = cma,
+                                isrtype = 'ISR_CMA', channel = 2 )
+                mapping.addIrq( pic, index = 7, src = cma,
+                                isrtype = 'ISR_CMA', channel = 3 )
 
                 if ( ioc_type == 'BDV' ): isr_ioc = 'ISR_BDV'
@@ -287,14 +295,22 @@
                 if ( ioc_type == 'SDC' ): isr_ioc = 'ISR_SDC'
 
-                mapping.addIrq( pic, index = 8,  isrtype = isr_ioc     , channel = 0 )
-
-                mapping.addIrq( pic, index = 16, isrtype = 'ISR_TTY_RX', channel = 0 )
-                mapping.addIrq( pic, index = 17, isrtype = 'ISR_TTY_RX', channel = 1 )
-                mapping.addIrq( pic, index = 18, isrtype = 'ISR_TTY_RX', channel = 2 )
-                mapping.addIrq( pic, index = 19, isrtype = 'ISR_TTY_RX', channel = 3 )
-                mapping.addIrq( pic, index = 20, isrtype = 'ISR_TTY_RX', channel = 4 )
-                mapping.addIrq( pic, index = 21, isrtype = 'ISR_TTY_RX', channel = 5 )
-                mapping.addIrq( pic, index = 22, isrtype = 'ISR_TTY_RX', channel = 6 )
-                mapping.addIrq( pic, index = 23, isrtype = 'ISR_TTY_RX', channel = 7 )
+                mapping.addIrq( pic, index = 8, src = ioc,
+                                isrtype = isr_ioc, channel = 0 )
+                mapping.addIrq( pic, index = 16, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 0 )
+                mapping.addIrq( pic, index = 17, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 1 )
+                mapping.addIrq( pic, index = 18, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 2 )
+                mapping.addIrq( pic, index = 19, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 3 )
+                mapping.addIrq( pic, index = 20, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 4 )
+                mapping.addIrq( pic, index = 21, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 5 )
+                mapping.addIrq( pic, index = 22, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 6 )
+                mapping.addIrq( pic, index = 23, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 7 )
 
 
Index: /trunk/platforms/tsar_generic_leti/arch.py
===================================================================
--- /trunk/platforms/tsar_generic_leti/arch.py	(revision 974)
+++ /trunk/platforms/tsar_generic_leti/arch.py	(revision 975)
@@ -217,5 +217,5 @@
                                          arg0 = 16, arg1 = 16, arg2 = 16 )
 
-                mapping.addIrq( xcu, index = 8, isrtype = 'ISR_MMC' )
+                mapping.addIrq( xcu, index = 8, src = mmc, isrtype = 'ISR_MMC' )
 
                 for p in xrange ( nb_procs ):
@@ -244,30 +244,45 @@
                                          ptype = 'PIC', channels = 32 )
 
-                mapping.addIrq( pic, index = 0 , isrtype = 'ISR_NIC_RX', channel = 0 )
-                mapping.addIrq( pic, index = 1 , isrtype = 'ISR_NIC_RX', channel = 1 )
-
-                mapping.addIrq( pic, index = 2 , isrtype = 'ISR_NIC_TX', channel = 0 )
-                mapping.addIrq( pic, index = 3 , isrtype = 'ISR_NIC_TX', channel = 1 )
-
-                mapping.addIrq( pic, index = 4 , isrtype = 'ISR_CMA'   , channel = 0 )
-                mapping.addIrq( pic, index = 5 , isrtype = 'ISR_CMA'   , channel = 1 )
-                mapping.addIrq( pic, index = 6 , isrtype = 'ISR_CMA'   , channel = 2 )
-                mapping.addIrq( pic, index = 7 , isrtype = 'ISR_CMA'   , channel = 3 )
-
-                if ( ioc_type == 'BDV' ):
-                    mapping.addIrq( pic, index = 8 , isrtype = 'ISR_BDV'   , channel = 0 )
-                if ( ioc_type == 'HBA' ):
-                    mapping.addIrq( pic, index = 8 , isrtype = 'ISR_HBA'   , channel = 0 )
-                if ( ioc_type == 'SDC' ):
-                    mapping.addIrq( pic, index = 8 , isrtype = 'ISR_SDC'   , channel = 0 )
-
-                mapping.addIrq( pic, index = 16, isrtype = 'ISR_TTY_RX', channel = 0 )
-                mapping.addIrq( pic, index = 17, isrtype = 'ISR_TTY_RX', channel = 1 )
-                mapping.addIrq( pic, index = 18, isrtype = 'ISR_TTY_RX', channel = 2 )
-                mapping.addIrq( pic, index = 19, isrtype = 'ISR_TTY_RX', channel = 3 )
-                mapping.addIrq( pic, index = 20, isrtype = 'ISR_TTY_RX', channel = 4 )
-                mapping.addIrq( pic, index = 21, isrtype = 'ISR_TTY_RX', channel = 5 )
-                mapping.addIrq( pic, index = 22, isrtype = 'ISR_TTY_RX', channel = 6 )
-                mapping.addIrq( pic, index = 23, isrtype = 'ISR_TTY_RX', channel = 7 )
+                mapping.addIrq( pic, index = 0, src = nic,
+                                isrtype = 'ISR_NIC_RX', channel = 0 )
+                mapping.addIrq( pic, index = 1, src = nic,
+                                isrtype = 'ISR_NIC_RX', channel = 1 )
+                mapping.addIrq( pic, index = 2, src = nic,
+                                isrtype = 'ISR_NIC_TX', channel = 0 )
+                mapping.addIrq( pic, index = 3, src = nic,
+                                isrtype = 'ISR_NIC_TX', channel = 1 )
+                mapping.addIrq( pic, index = 4, src = cma,
+                                isrtype = 'ISR_CMA', channel = 0 )
+                mapping.addIrq( pic, index = 5, src = cma,
+                                isrtype = 'ISR_CMA', channel = 1 )
+                mapping.addIrq( pic, index = 6, src = cma,
+                                isrtype = 'ISR_CMA', channel = 2 )
+                mapping.addIrq( pic, index = 7, src = cma,
+                                isrtype = 'ISR_CMA', channel = 3 )
+
+                if   ( ioc_type == 'BDV' ): isr_type = 'ISR_BDV'
+                elif ( ioc_type == 'HBA' ): isr_type = 'ISR_HBA'
+                elif ( ioc_type == 'SDC' ): isr_type = 'ISR_SDC'
+
+                if ( ioc_type != 'RDK' ):
+                    mapping.addIrq( pic, index = 8, src = ioc,
+                                    isrtype = isr_type, channel = 0 )
+
+                mapping.addIrq( pic, index = 16, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 0 )
+                mapping.addIrq( pic, index = 17, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 1 )
+                mapping.addIrq( pic, index = 18, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 2 )
+                mapping.addIrq( pic, index = 19, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 3 )
+                mapping.addIrq( pic, index = 20, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 4 )
+                mapping.addIrq( pic, index = 21, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 5 )
+                mapping.addIrq( pic, index = 22, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 6 )
+                mapping.addIrq( pic, index = 23, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 7 )
 
     ###################################
Index: /trunk/platforms/tsar_generic_mwmr/arch.py
===================================================================
--- /trunk/platforms/tsar_generic_mwmr/arch.py	(revision 974)
+++ /trunk/platforms/tsar_generic_mwmr/arch.py	(revision 975)
@@ -57,5 +57,6 @@
           nb_procs  = 2,
           nb_ttys   = 1,
-          fbf_width = 128 ):
+          fbf_width = 128,
+          ioc_type  = 'BDV' ):
 
     ### define architecture constants
@@ -219,6 +220,8 @@
                                      arg0 = 32, arg1 = 32, arg2 = 32, arg3 = 16 )
 
-            mapping.addIrq( xcu, index = 0, isrtype = 'ISR_MMC' )
-            mapping.addIrq( xcu, index = 1, isrtype = 'ISR_MWR' , channel = 2 )
+            mapping.addIrq( xcu, index = 0, src = mmc,
+                            isrtype = 'ISR_MMC' )
+            mapping.addIrq( xcu, index = 1, src = mwr,
+                            isrtype = 'ISR_MWR' , channel = 2 )
 
             for p in xrange ( nb_procs ):
@@ -252,25 +255,42 @@
                                          ptype = 'PIC', channels = 32 )
 
-                mapping.addIrq( pic, index = 0,  isrtype = 'ISR_NIC_RX', channel = 0 )
-                mapping.addIrq( pic, index = 1,  isrtype = 'ISR_NIC_RX', channel = 1 )
-
-                mapping.addIrq( pic, index = 2,  isrtype = 'ISR_NIC_TX', channel = 0 )
-                mapping.addIrq( pic, index = 3,  isrtype = 'ISR_NIC_TX', channel = 1 )
-
-                mapping.addIrq( pic, index = 4,  isrtype = 'ISR_CMA'   , channel = 0 )
-                mapping.addIrq( pic, index = 5,  isrtype = 'ISR_CMA'   , channel = 1 )
-                mapping.addIrq( pic, index = 6,  isrtype = 'ISR_CMA'   , channel = 2 )
-                mapping.addIrq( pic, index = 7,  isrtype = 'ISR_CMA'   , channel = 3 )
-
-                mapping.addIrq( pic, index = 8,  isrtype = 'ISR_BDV'   , channel = 0 )
-
-                mapping.addIrq( pic, index = 16, isrtype = 'ISR_TTY_RX', channel = 0 )
-                mapping.addIrq( pic, index = 17, isrtype = 'ISR_TTY_RX', channel = 1 )
-                mapping.addIrq( pic, index = 18, isrtype = 'ISR_TTY_RX', channel = 2 )
-                mapping.addIrq( pic, index = 19, isrtype = 'ISR_TTY_RX', channel = 3 )
-                mapping.addIrq( pic, index = 20, isrtype = 'ISR_TTY_RX', channel = 4 )
-                mapping.addIrq( pic, index = 21, isrtype = 'ISR_TTY_RX', channel = 5 )
-                mapping.addIrq( pic, index = 22, isrtype = 'ISR_TTY_RX', channel = 6 )
-                mapping.addIrq( pic, index = 23, isrtype = 'ISR_TTY_RX', channel = 7 )
+                mapping.addIrq( pic, index = 0, src = nic,
+                                isrtype = 'ISR_NIC_RX', channel = 0 )
+                mapping.addIrq( pic, index = 1, src = nic,
+                                isrtype = 'ISR_NIC_RX', channel = 1 )
+
+                mapping.addIrq( pic, index = 2, src = nic,
+                                isrtype = 'ISR_NIC_TX', channel = 0 )
+                mapping.addIrq( pic, index = 3, src = nic,
+                                isrtype = 'ISR_NIC_TX', channel = 1 )
+
+                mapping.addIrq( pic, index = 4, src = cma,
+                                isrtype = 'ISR_CMA', channel = 0 )
+                mapping.addIrq( pic, index = 5, src = cma,
+                                isrtype = 'ISR_CMA', channel = 1 )
+                mapping.addIrq( pic, index = 6, src = cma,
+                                isrtype = 'ISR_CMA', channel = 2 )
+                mapping.addIrq( pic, index = 7, src = cma,
+                                isrtype = 'ISR_CMA', channel = 3 )
+
+                mapping.addIrq( pic, index = 8, src = bdv,
+                                isrtype = 'ISR_BDV', channel = 0 )
+
+                mapping.addIrq( pic, index = 16, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 0 )
+                mapping.addIrq( pic, index = 17, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 1 )
+                mapping.addIrq( pic, index = 18, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 2 )
+                mapping.addIrq( pic, index = 19, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 3 )
+                mapping.addIrq( pic, index = 20, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 4 )
+                mapping.addIrq( pic, index = 21, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 5 )
+                mapping.addIrq( pic, index = 22, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 6 )
+                mapping.addIrq( pic, index = 23, src = tty,
+                                isrtype = 'ISR_TTY_RX', channel = 7 )
 
 
Index: /trunk/platforms/tsar_mono_fpga/arch.py
===================================================================
--- /trunk/platforms/tsar_mono_fpga/arch.py	(revision 974)
+++ /trunk/platforms/tsar_mono_fpga/arch.py	(revision 975)
@@ -33,5 +33,6 @@
           nb_procs  = 2,
           nb_ttys   = 1,
-          fbf_width = 480 ):
+          fbf_width = 480,
+          ioc_type  = 'BDV' ):
 
     ### define architecture constants
@@ -165,5 +166,5 @@
                              ptype = 'MMC' )
 
-    mapping.addIrq( xcu, index = 8 , isrtype = 'ISR_MMC' )
+    mapping.addIrq( xcu, index = 8 , src = mmc, isrtype = 'ISR_MMC' )
 
     for p in xrange ( nb_procs ): mapping.addProc( 0, 0, p )
@@ -172,10 +173,10 @@
                              ptype = 'IOC', subtype = 'BDV' )
 
-    mapping.addIrq( xcu, index = 9 , isrtype = 'ISR_BDV' )
+    mapping.addIrq( xcu, index = 9 , src = bdv, isrtype = 'ISR_BDV' )
 
     tty = mapping.addPeriph( 'TTY0', base = tty_base, size = tty_size,
                              ptype = 'TTY', channels = nb_ttys )
 
-    mapping.addIrq( xcu, index = 10, isrtype = 'ISR_TTY_RX' )
+    mapping.addIrq( xcu, index = 10, src = tty, isrtype = 'ISR_TTY_RX' )
 
     rom = mapping.addPeriph( 'ROM', base = rom_base, size = rom_size,
