merge of '7393275c6ccce67cadeb49d4afb3459e56edf8a9'
[vuplus_openembedded] / packages / gcc / gcc-4.3.0 / arm-thumb-cache.patch
1 --- gcc-4.1.1/gcc/config/arm/linux-gas.h-       2005-06-25 03:22:41.000000000 +0200
2 +++ gcc-4.1.1/gcc/config/arm/linux-gas.h        2006-06-18 10:23:46.000000000 +0200
3 @@ -44,6 +44,7 @@
4  
5  /* Clear the instruction cache from `beg' to `end'.  This makes an
6     inline system call to SYS_cacheflush.  */
7 +#if !defined(__thumb__)
8  #define CLEAR_INSN_CACHE(BEG, END)                                     \
9  {                                                                      \
10    register unsigned long _beg __asm ("a1") = (unsigned long) (BEG);    \
11 @@ -53,3 +54,18 @@
12                     : "=r" (_beg)                                       \
13                     : "0" (_beg), "r" (_end), "r" (_flg));              \
14  }
15 +#else
16 +#define CLEAR_INSN_CACHE(BEG, END)                                     \
17 +{                                                                      \
18 +  register unsigned long _beg __asm ("a1") = (unsigned long) (BEG);    \
19 +  register unsigned long _end __asm ("a2") = (unsigned long) (END);    \
20 +  register unsigned long _flg __asm ("a3") = 0;                                \
21 +  register unsigned long _swi __asm ("a4") = 0xf0002;                  \
22 +  __asm __volatile ("push      {r7}\n"                                 \
23 +               "       mov     r7,a4\n"                                \
24 +               "       swi     0       @ sys_cacheflush\n"             \
25 +               "       pop     {r7}\n"                                 \
26 +                   : "=r" (_beg)                                       \
27 +                   : "0" (_beg), "r" (_end), "r" (_flg), "r" (_swi));  \
28 +}
29 +#endif