This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Flushing the d-cache (was Re: BFD relocations)
Greetings!
Daniel Jacobowitz <drow@mvista.com> writes:
> On Mon, Jun 10, 2002 at 06:35:02PM -0400, Camm Maguire wrote:
> > Greetings! Thank you all once again. To finalize this issue for gcl,
> > could you perhaps guide me as to the following:
> >
> > 1) Is there a central place where I can find the analogous
> > data-cache-flushing assembly instructions for the Debian supported
> > architectures? Barring that, decentralized places?
>
> Glibc. Under sysdeps/<arch>/. Good luck.
>
OK, here are two proposals -- comments from the experts most welcome!
These are basically working, but not completely yet, still get some
SIGILL's.
arm:
#define CLEAR_CACHE do {\
void *v=memory->cfd.cfd_start,*ve=v+memory->cfd.cfd_size; \
for (;v<ve;v+=16) { \
register unsigned long _beg __asm ("a1") = (unsigned long)(v); \
register unsigned long _end __asm ("a2") = (unsigned long)(v+16);\
register unsigned long _flg __asm ("a3") = 0; \
__asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \
: /* no outputs */ \
: /* no inputs */ \
: "a1"); \
}\
} while (0)
m68k:
#include <asm/cachectl.h>
#define CLEAR_CACHE do {\
void *v=memory->cfd.cfd_start,*ve=v+memory->cfd.cfd_size; \
for (;v<ve;v+=16) \
sys_cacheflush(v,FLUSH_SCOPE_LINE,FLUSH_CACHE_DATA,16);\
} while(0)
> --
> Daniel Jacobowitz Carnegie Mellon University
> MontaVista Software Debian GNU/Linux Developer
>
>
--
Camm Maguire camm@enhanced.com
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah