Ignore:
Timestamp:
Jun 25, 2014, 2:19:37 PM (10 years ago)
Author:
cfuguet
Message:

giet_vm optimizations:

  • Several modifications in GIET_VM in order to support compilation with GCC optimizations (-O2) activated.
  • Adding missing volatile in some global variables.
  • Using ioread and iowrite utility functions in peripheral drivers which prevent GCC to remove writes or reads in hardware memory mapped registers.
  • Code refactoring of stdio printf functions. Now, shr_printf and tty_printf function reuse the same function body. The only difference is that shr_printf wraps printf function call with TTY get lock and release lock.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/giet_common/utils.c

    r344 r345  
    4444// Code taken from MutekH.
    4545///////////////////////////////////////////////////////////////////////////////////
    46 inline void* _memcpy( void*        dest,     // dest buffer vbase
    47                       const void*  source,   // source buffer vbase
    48                       unsigned int size )    // bytes
     46inline void* memcpy( void*        dest,     // dest buffer vbase
     47                     const void*  source,   // source buffer vbase
     48                     unsigned int size )    // bytes
    4949{
    5050    unsigned int* idst = (unsigned int*)dest;
     
    7474// Fill a byte string with a byte value.
    7575//////////////////////////////////////////////////////////////////////////////////
    76 inline void * _memset( void*        dest,
    77                        int          value,
    78                        unsigned int count )
     76inline void * memset( void*        dest,
     77                      int          value,
     78                      unsigned int count )
    7979{
    8080    // word-by-word copy
     
    119119// Processor suicide: infinite loop 
    120120//////////////////////////////////////////////////////////////////////////////////
     121__attribute__((noreturn))
    121122inline void _exit()
    122123{
     
    251252inline void _it_disable( unsigned int * save_sr_ptr)
    252253{
    253     unsigned int sr;
     254    unsigned int sr = 0;
    254255    asm volatile( "li      $3,        0xFFFFFFFE    \n"
    255256                  "mfc0    %0,        $12           \n"
    256257                  "and     $3,        $3,   %0      \n" 
    257258                  "mtc0    $3,        $12           \n"
    258                   : "=r"(sr)
     259                  : "+r"(sr)
    259260                  :
    260                   : "$3", "memory" );
     261                  : "$3" );
    261262    *save_sr_ptr = sr;
    262263}
     
    292293    asm volatile ( "mtc2     %0,     $0            \n"
    293294                   :
    294                    :"r" (val) );
     295                   :"r" (val)
     296                   :"memory" );
    295297}
    296298//////////////////////////////////////////////////////////////////////////////
     
    301303    asm volatile ( "mtc2     %0,     $1             \n"
    302304                   :
    303                    :"r" (val) );
     305                   :"r" (val)
     306                   :"memory" );
    304307}
    305308//////////////////////////////////////////////////////////////////////////////
     
    369372
    370373                  "mtc2   $2,     $1                 \n"     /* restore MMU_MODE */
     374                  "sync                              \n"
    371375                  :
    372376                  : "r" (value), "r" (lsb), "r" (msb)
     
    516520            :
    517521            :"r"(plock), "r"(delay)
    518             :"$2", "$3", "$4");
     522            :"$2", "$3", "$4", "memory");
    519523#else
    520524
     
    532536            :
    533537            :"r"(plock)
    534             :"$2", "$3");
     538            :"$2", "$3", "memory");
    535539#endif
    536540
Note: See TracChangeset for help on using the changeset viewer.