This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]