Changeset 213 for soft


Ignore:
Timestamp:
Aug 26, 2012, 8:16:34 PM (12 years ago)
Author:
karaoui
Message:

fixing the case where NB_DMA_MAX==0
updating the libsrl.

Location:
soft/giet_vm
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/libs/libsrl/srl_args.h

    r178 r213  
    44
    55
    6 #define SRL_GET_MWMR(port)      APP_GET_ARG(port, VOBJ_TYPE_MWMR)
     6#define SRL_GET_MWMR(port)      (srl_mwmr_t) APP_GET_ARG(port, VOBJ_TYPE_MWMR)
    77#define SRL_GET_BARRIER(port)   APP_GET_ARG(port, VOBJ_TYPE_BARRIER)
    88#define SRL_GET_LOCK(port)      APP_GET_ARG(port, VOBJ_TYPE_LOCK)
    9 #define SRL_GET_BUFFER(port)    APP_GET_ARG(port, VOBJ_TYPE_BUFFER)
     9//#define SRL_GET_MEMSPACE(port)  APP_GET_ARG(port, VOBJ_TYPE_BUFFER) TODO
     10#define SRL_GET_MEMSPACE        #error "SRL_GET_MEMSPACE is not implemented"//
    1011
    1112
    12 /* port, APP_NAME, TASK, #task_name, alias */
    13 # define SRL_GET_ARG(task_name, port, type)                                                         \
     13# define SRL_GET_VBASE(task_name, port, type)                                                         \
    1414({                                                                                                  \
    15     srl_mwmr_t  _mwmr;                                                                              \
    16     if( giet_vobj_get_vbase( APP_NAME , alias_##task_name.port, type, (unsigned int*)&_mwmr ) )     \
     15    unsigned int  vbase;                                                                           \
     16    if( giet_vobj_get_vbase( APP_NAME , alias_##task_name.port, type, &vbase ) )                    \
    1717    {                                                                                               \
    1818        srl_log_printf( NONE, "\n[ERROR] in "#task_name" task :\n");                                \
    1919        srl_log_printf( NONE, "          undefined port <"#port"> for channel(%s): %d\n",           \
    20                                                                 alias_##task_name.port,_mwmr);      \
    21         srl_log_printf( TRACE, "*** &"#port" = %x\n\n", (unsigned int)_mwmr );                      \
     20                                                                alias_##task_name.port,vbase);      \
     21        srl_log_printf( TRACE, "*** &"#port" = %x\n\n", vbase );                                    \
    2222        srl_exit();                                                                                 \
    2323    }else                                                                                           \
    2424        srl_log_printf( TRACE, "%s:%d: arg of %s for %s,from %s; &"#port" = %x\n\n",                \
    25                             __FILE__, __LINE__, APP_NAME, #task_name,#port, (unsigned int)_mwmr );  \
    26     _mwmr;\
     25                            __FILE__, __LINE__, APP_NAME, #task_name,#port, vbase );                \
     26    vbase;\
    2727})
    2828
  • soft/giet_vm/libs/libsrl/srl_mwmr.h

    r178 r213  
    66typedef  mwmr_channel_t* srl_mwmr_t;
    77
    8 #define srl_mwmr_write(a, b, c) mwmr_write(a, b, c)
    9 #define srl_mwmr_read(a, b, c) mwmr_read(a, b, c) 
     8#define srl_mwmr_write(a, b, c) mwmr_write(a, (unsigned int*) b, (unsigned int)c)
     9#define srl_mwmr_read(a, b, c) mwmr_read(a, (unsigned int*) b, (unsigned int)c) 
    1010
    1111
  • soft/giet_vm/sys/drivers.c

    r207 r213  
    715715
    716716//+1: for the case where the NB_DMAS_MAX == 0
    717 in_unckdata unsigned int                        _dma_lock[(NB_DMAS_MAX+1) * NB_CLUSTERS]
    718                                        = { [0 ... ((NB_DMAS_MAX+1) * NB_CLUSTERS)-1] = 0 };
    719 
    720 in_unckdata volatile unsigned int       _dma_done[(NB_DMAS_MAX+1) * NB_CLUSTERS]
    721                                        = { [0 ... ((NB_DMAS_MAX+1) * NB_CLUSTERS)-1] = 0 };
    722 
    723 in_unckdata volatile unsigned int       _dma_status[(NB_DMAS_MAX+1) * NB_CLUSTERS];
     717#if NB_DMAS_MAX > 0
     718in_unckdata unsigned int                        _dma_lock[NB_DMAS_MAX * NB_CLUSTERS]
     719                                       = { [0 ... ((NB_DMAS_MAX) * NB_CLUSTERS)-1] = 0 };
     720
     721in_unckdata volatile unsigned int       _dma_done[NB_DMAS_MAX * NB_CLUSTERS]
     722                                       = { [0 ... (NB_DMAS_MAX * NB_CLUSTERS)-1] = 0 };
     723
     724in_unckdata volatile unsigned int       _dma_status[NB_DMAS_MAX * NB_CLUSTERS];
    724725
    725726in_unckdata unsigned int                        _dma_iommu_ix1 = 1;
    726727
    727 in_unckdata unsigned int            _dma_iommu_npages[(NB_DMAS_MAX+1) * NB_CLUSTERS];
     728in_unckdata unsigned int            _dma_iommu_npages[NB_DMAS_MAX * NB_CLUSTERS];
     729#endif
    728730
    729731//////////////////////////////////////////////////////////////////////////////////
     
    733735                             unsigned int       channel_id )
    734736{
     737#if NB_DMAS_MAX > 0
    735738    // parameters checking
    736739    if ( cluster_id >= NB_CLUSTERS ) return 1;
     
    743746    dma_address[channel_id*DMA_SPAN + DMA_RESET] = 0;                   
    744747    return 0;
     748#else
     749    return -1;
     750#endif
    745751}
    746752//////////////////////////////////////////////////////////////////////////////////
     
    751757                              unsigned int* status )
    752758{
     759#if NB_DMAS_MAX > 0
    753760    // parameters checking
    754761    if ( cluster_id >= NB_CLUSTERS ) return 1;
     
    761768    *status = dma_address[channel_id*DMA_SPAN + DMA_LEN];
    762769    return 0;
     770#else
     771    return -1;
     772#endif
    763773}
    764774
     
    852862                             unsigned int   length )
    853863{
     864#if NB_DMAS_MAX > 0
    854865    unsigned int        ko;                             // unsuccessfull V2P translation
    855866    unsigned int        flags;                  // protection flags
     
    9961007   
    9971008    return 0;
     1009
     1010#else //NB_DMAS_MAX == 0
     1011    return -1;
     1012#endif
    9981013
    9991014//////////////////////////////////////////////////////////////////////////////////
     
    10421057unsigned int _fb_completed()
    10431058{
     1059#if NB_DMAS_MAX > 0
    10441060    unsigned int task_id = _get_current_task_id();
    10451061    unsigned int dma_id  = _get_context_slot( task_id, CTX_FBDMA_ID );
     
    10791095
    10801096    return _dma_status[dma_id];
    1081 }
    1082 
     1097
     1098#else //NB_DMAS_MAX == 0
     1099
     1100    return -1;
     1101
     1102#endif
     1103}
     1104
  • soft/giet_vm/sys/irq_handler.c

    r207 r213  
    9090void _isr_dma( unsigned int channel_id )
    9191{
     92#if NB_DMAS_MAX > 0
    9293    // compute cluster_id
    9394    unsigned int cluster_id = _procid()/NB_PROCS_MAX;
     
    119120    // release DMA channel
    120121    _dma_done[dma_global_id] = 1; 
     122#else
     123    _puts("[GIET ERROR] NB_DMAS_MAX is set to zero\n");
     124
     125#endif
    121126}
    122127
Note: See TracChangeset for help on using the changeset viewer.