Changeset 558 for soft


Ignore:
Timestamp:
Apr 13, 2015, 5:30:16 PM (9 years ago)
Author:
alain
Message:

Introducing new syscalls to handle MWMR compliant coprocessors.

Location:
soft/giet_vm/giet_libs
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/giet_libs/stdio.c

    r550 r558  
    8080///////////////////////////////////////////////////
    8181void giet_coproc_alloc( unsigned int   coproc_type,
    82                         unsigned int*  coproc_info,
    83                         unsigned int*  cluster_xy )
     82                        unsigned int*  coproc_info )
    8483{
    8584    if ( sys_call( SYSCALL_COPROC_ALLOC,
    8685                   coproc_type,
    8786                   (unsigned int)coproc_info,
    88                    (unsigned int)cluster_xy,
    89                    0 ) ) 
     87                   0, 0 ) ) 
    9088        giet_exit("error in giet_coproc_alloc()");
    9189}
    9290
    93 ///////////////////////////////////////////////////
    94 void giet_coproc_release( unsigned int cluster_xy )
     91/////////////////////////////////////////////////////////
     92void giet_coproc_release( unsigned int coproc_reg_index )
    9593{
    9694    if ( sys_call( SYSCALL_COPROC_RELEASE,
    97                    cluster_xy,
     95                   coproc_reg_index,
    9896                   0, 0, 0 ) ) 
    9997        giet_exit("error in giet_coproc_release()");
     
    10199
    102100//////////////////////////////////////////////////////////////////
    103 void giet_coproc_channel_init( unsigned int            cluster_xy,
    104                                unsigned int            channel,
     101void giet_coproc_channel_init( unsigned int            channel,
    105102                               giet_coproc_channel_t*  desc )
    106103{
    107104    if ( sys_call( SYSCALL_COPROC_CHANNEL_INIT,
    108                    cluster_xy,
    109105                   channel,
    110106                   (unsigned int)desc,
    111                    0 ) )
    112         giet_exit("error in giet_coproc_channel_init");
    113 }
    114 
    115 ////////////////////////////////////////////////////////////
    116 void giet_coproc_channel_start( unsigned int     cluster_xy,
    117                                 unsigned int     channel )
    118 {
    119     if ( sys_call( SYSCALL_COPROC_CHANNEL_START,
    120                    cluster_xy,
    121                    channel,
    122107                   0, 0 ) )
    123         giet_exit("error in giet_coproc_channel_start");
    124 }
    125 
    126 ///////////////////////////////////////////////////////////
    127 void giet_coproc_channel_stop( unsigned int     cluster_xy,
    128                                unsigned int     channel )
    129 {
    130     if ( sys_call( SYSCALL_COPROC_CHANNEL_STOP,
    131                    cluster_xy,
    132                    channel,
    133                    0, 0 ) )
    134         giet_exit("error in giet_coproc_channel_stop");
    135 }
    136 
    137 /////////////////////////////////////////////////////////
    138 void giet_coproc_completed( unsigned int     cluster_xy )
     108        giet_exit("error in giet_coproc_channel_init()");
     109}
     110
     111/////////////////////////////////////////////////////
     112void giet_coproc_run( unsigned int coproc_reg_index )
     113{
     114    if ( sys_call( SYSCALL_COPROC_RUN,
     115                   coproc_reg_index,
     116                   0, 0, 0 ) )
     117        giet_exit("error in giet_coproc_run()");
     118}
     119
     120////////////////////////////
     121void giet_coproc_completed()
    139122{
    140123    if ( sys_call( SYSCALL_COPROC_COMPLETED,
    141                    cluster_xy,
    142                    0, 0, 0 ) )
     124                   0, 0, 0, 0 ) )
    143125        giet_exit("error in giet_coproc_completed");
    144 }
    145 
    146 ///////////////////////////////////////////////////////////
    147 void giet_coproc_register_set( unsigned int     cluster_xy,
    148                                unsigned int     index,
    149                                unsigned int     value )
    150 {
    151     if ( sys_call( SYSCALL_COPROC_REGISTER_SET,
    152                    cluster_xy,
    153                    index,
    154                    value,
    155                    0 ) )
    156         giet_exit("error in giet_coproc_register_set");
    157 }
    158 
    159 ///////////////////////////////////////////////////////////
    160 void giet_coproc_register_get( unsigned int     cluster_xy,
    161                                unsigned int     index,
    162                                unsigned int*    value )
    163 {
    164     if ( sys_call( SYSCALL_COPROC_REGISTER_SET,
    165                    cluster_xy,
    166                    index,
    167                    (unsigned int)value,
    168                    0 ) )
    169         giet_exit("error in giet_coproc_register_get");
    170126}
    171127
  • soft/giet_vm/giet_libs/stdio.h

    r550 r558  
    7575//                                   0x36
    7676//                                   0x37
    77 #define SYSCALL_COPROC_REGISTER_GET  0x38
    78 #define SYSCALL_COPROC_REGISTER_SET  0x39
    79 #define SYSCALL_COPROC_RELEASE       0x3A
     77//                                   0x38
     78//                                   0x39
     79//                                   0x3A
    8080#define SYSCALL_COPROC_COMPLETED     0x3B
    8181#define SYSCALL_COPROC_ALLOC         0x3C
    8282#define SYSCALL_COPROC_CHANNEL_INIT  0x3D
    83 #define SYSCALL_COPROC_CHANNEL_START 0x3E
    84 #define SYSCALL_COPROC_CHANNEL_STOP  0x3F
     83#define SYSCALL_COPROC_RUN          0x3E
     84#define SYSCALL_COPROC_RELEASE       0x3F
    8585
    8686////////////////////////////////////////////////////////////////////////////
     
    175175
    176176extern void giet_coproc_alloc( unsigned int   coproc_type,
    177                                unsigned int*  coproc_info,
    178                                unsigned int*  cluster_xy );
    179 
    180 extern void giet_coproc_release( unsigned int cluster_xy );
    181 
    182 extern void giet_coproc_channel_init( unsigned int            cluster_xy,
    183                                       unsigned int            channel,
     177                               unsigned int*  coproc_info );
     178
     179extern void giet_coproc_release( unsigned int coproc_reg_index );
     180
     181extern void giet_coproc_channel_init( unsigned int            channel,
    184182                                      giet_coproc_channel_t*  desc );
    185183
    186 extern void giet_coproc_channel_start( unsigned int    cluster_xy,
    187                                        unsigned int    channel );
    188 
    189 extern void giet_coproc_channel_stop ( unsigned int    cluster_xy,
    190                                        unsigned int    channel );
    191 
    192 extern void giet_coproc_completed( unsigned int cluster_xy );
    193 
    194 extern void giet_coproc_register_set( unsigned int     cluster_xy,
    195                                       unsigned int     reg_index,
    196                                       unsigned int     value );
    197 
    198 extern void giet_coproc_register_get( unsigned int     cluster_xy,
    199                                       unsigned int     reg_index,
    200                                       unsigned int*    buffer );
     184extern void giet_coproc_run( unsigned int coproc_reg_index );
     185
     186extern void giet_coproc_completed();
    201187
    202188//////////////////////////////////////////////////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.