Como limpar e invalidar o cache do processador ARM v7 do Modo de Usuário no Linux 2.6.35
entei limpar e invalidar o cache do processador ARM v7 para a linha de instruções, porque os códigos de instruções podem mudar na execuçã
Para alcançar o efeito, tentei 2 variantes. Aqui estão eles
Eu usei o GCC__Limpar cache(, mas não deu o resultado necessário. Os códigos de instruções no cache não foram alterados.
Procurei um código-fonte para o GCC e encontrei o arquivo uclinux-eabi.h onde encontrei o próximo código para limpar o cache:
/* 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 ("a1") = (unsigned long) (BEG); \
register unsigned long _end __asm ("a2") = (unsigned long) (END); \
register unsigned long _flg __asm ("a3") = 0; \
register unsigned long _scno __asm ("r7") = 0xf0002; \
__asm __volatile \
( \
"swi 0x0 @ sys_cacheflush" \
: "=r" (_beg) \
: "0" (_beg), "r" (_end), "r" (_flg), "r" (_scno)); \
}
Esta variante também não deu o resultad
Talvez alguém saiba o que eu faço de errado?