Ignore:
Timestamp:
Jan 30, 2014, 5:32:13 PM (10 years ago)
Author:
cfuguet
Message:

Modifications in GIET_VM:

  • Supporting platforms with more than one IRQ per processor from the XICU.

When this is the case, the IRQ per processor can be signalled
by the XCU peripheric number of channels on the XML file.

The xml_parser will generate a constant on the hard_config.h
file, called IRQ_PER_PROCESSOR and this constant will be use
by the GIET_VM to create accordingly the irq masks on the
ICU

File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/giet_kernel/kernel_init.c

    r274 r281  
    261261#endif
    262262
    263     // GIET-VM consraint : only one IRQ type per irq_id
     263    // GIET-VM constraint : only one IRQ type per irq_id
    264264    if ( hwi_mask & swi_mask & pti_mask )
    265265    {
     
    268268    }
    269269
     270
     271    // The ICU output index is computed as the local processor id multiplied by
     272    // the number of ICU outputs connected to each processor.
     273    int icu_out_index = local_pid * IRQ_PER_PROCESSOR;
     274
    270275#if USE_XICU
    271     _xcu_set_mask(cluster_xy, local_pid, hwi_mask, IRQ_TYPE_HWI); // set HWI_MASK
    272     _xcu_set_mask(cluster_xy, local_pid, swi_mask, IRQ_TYPE_SWI); // set SWI_MASK
    273     _xcu_set_mask(cluster_xy, local_pid, pti_mask, IRQ_TYPE_PTI); // set PTI_MASK
     276    _xcu_set_mask(cluster_xy, icu_out_index, hwi_mask, IRQ_TYPE_HWI); // set HWI_MASK
     277    _xcu_set_mask(cluster_xy, icu_out_index, swi_mask, IRQ_TYPE_SWI); // set SWI_MASK
     278    _xcu_set_mask(cluster_xy, icu_out_index, pti_mask, IRQ_TYPE_PTI); // set PTI_MASK
    274279#else
    275     _icu_set_mask(cluster_xy, local_pid, (hwi_mask | pti_mask | swi_mask) );   
     280    _icu_set_mask(cluster_xy, icu_out_index, (hwi_mask | pti_mask | swi_mask) );   
    276281#endif
    277282
Note: See TracChangeset for help on using the changeset viewer.