Commit 8a66e987 by Joseph Myers Committed by Joseph Myers

lib1funcs.asm (__clear_cache): Define if L_clear_cache.

	* config/arm/lib1funcs.asm (__clear_cache): Define if
	L_clear_cache.
	* config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
	error if used.
	* config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.

From-SVN: r147956
parent b45d2719
2009-05-28 Joseph Myers <joseph@codesourcery.com>
* config/arm/lib1funcs.asm (__clear_cache): Define if
L_clear_cache.
* config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
error if used.
* config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
2009-05-28 Richard Guenther <rguenther@suse.de> 2009-05-28 Richard Guenther <rguenther@suse.de>
* tree-ssa-alias.c (ao_ref_init): New function. * tree-ssa-alias.c (ao_ref_init): New function.
......
...@@ -1096,6 +1096,27 @@ LSYM(Lover12): ...@@ -1096,6 +1096,27 @@ LSYM(Lover12):
FUNC_END div0 FUNC_END div0
#endif /* L_dvmd_lnx */ #endif /* L_dvmd_lnx */
#ifdef L_clear_cache
#if defined __ARM_EABI__ && defined __linux__
@ EABI GNU/Linux call to cacheflush syscall.
FUNC_START clear_cache
push {r7}
#if __ARM_ARCH__ >= 7 || defined(__ARM_ARCH_6T2__)
movw r7, #2
movt r7, #0xf
#else
mov r7, #0xf0000
add r7, r7, #2
#endif
mov r2, #0
swi 0
pop {r7}
RET
FUNC_END clear_cache
#else
#error "This is only for ARM EABI GNU/Linux"
#endif
#endif /* L_clear_cache */
/* ------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------ */
/* Dword shift operations. */ /* Dword shift operations. */
/* All the following Dword shift variants rely on the fact that /* All the following Dword shift variants rely on the fact that
......
...@@ -72,16 +72,8 @@ ...@@ -72,16 +72,8 @@
do not use -lfloat. */ do not use -lfloat. */
#undef LIBGCC_SPEC #undef LIBGCC_SPEC
/* Clear the instruction cache from `beg' to `end'. This makes an /* Clear the instruction cache from `beg' to `end'. This is
inline system call to SYS_cacheflush. */ implemented in lib1funcs.asm, so ensure an error if this definition
is used. */
#undef CLEAR_INSN_CACHE #undef CLEAR_INSN_CACHE
#define CLEAR_INSN_CACHE(BEG, END) \ #define CLEAR_INSN_CACHE(BEG, END) not used
{ \
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 0 @ sys_cacheflush" \
: "=r" (_beg) \
: "0" (_beg), "r" (_end), "r" (_flg), "r" (_scno)); \
}
...@@ -24,8 +24,8 @@ TARGET_LIBGCC2_CFLAGS = -fPIC ...@@ -24,8 +24,8 @@ TARGET_LIBGCC2_CFLAGS = -fPIC
MULTILIB_OPTIONS = MULTILIB_OPTIONS =
MULTILIB_DIRNAMES = MULTILIB_DIRNAMES =
# Use a version of div0 which raises SIGFPE. # Use a version of div0 which raises SIGFPE, and a special __clear_cache.
LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx _clear_cache
# Multilib the standard Linux files. Don't include crti.o or crtn.o, # Multilib the standard Linux files. Don't include crti.o or crtn.o,
# which are provided by glibc. # which are provided by glibc.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment