* Claudiu Zissulescu <claudiu.zissule...@synopsys.com> [2018-04-06 11:00:14 
+0200]:

> Clear the instruction cache from `beg' to `end'.  This makes an inline
> system call to SYS_cacheflush.
> 
> gcc/
> 2017-03-28  Claudiu Zissulescu  <claz...@synopsys.com>
> 
>       * config/arc/linux.h (CLEAR_INSN_CACHE): Define.


Looks good.

Thanks,
Andrew

> ---
>  gcc/config/arc/linux.h | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/gcc/config/arc/linux.h b/gcc/config/arc/linux.h
> index 4e87dfe..96d548e 100644
> --- a/gcc/config/arc/linux.h
> +++ b/gcc/config/arc/linux.h
> @@ -109,3 +109,17 @@ along with GCC; see the file COPYING3.  If not see
>  /* Build attribute: procedure call standard.  */
>  #undef ATTRIBUTE_PCS
>  #define ATTRIBUTE_PCS 3
> +
> +/* Clear the instruction cache from `beg' to `end'.  This makes an
> +   inline system call to SYS_cacheflush.  */
> +#undef CLEAR_INSN_CACHE
> +#define CLEAR_INSN_CACHE(beg, end)                                   \
> +{                                                                    \
> +  register unsigned long _beg __asm ("r0") = (unsigned long) (beg);  \
> +  register unsigned long _end __asm ("r1") = (unsigned long) (end);  \
> +  register unsigned long _xtr __asm ("r2") = 0;                              
> \
> +  register unsigned long _scno __asm ("r8") = 244;                   \
> +  __asm __volatile ("trap_s 0                ; sys_cache_sync"               
> \
> +                 : "=r" (_beg)                                       \
> +                 : "0" (_beg), "r" (_end), "r" (_xtr), "r" (_scno)); \
> +}
> -- 
> 1.9.1
> 

Reply via email to