sh.opt (minline-ic_invalidate): New option.
* sh.opt (minline-ic_invalidate): New option. (musermode): Adjust comment. * sh.c (sh_initialize_trampoline): Emit library call unless is set; if it is set, don't emit library call if we can use icbi instead. * sh.md (ic_invalidate_line, ic_invalidate_line_sh4a): Also use icbi for TARGET_SH4_300. * t-sh (LIB1ASMFUNCS_CACHE): Set. * doc/invoke.texi: Document -minline-ic_invalidate; Update -musermode documentation. From-SVN: r119314
This commit is contained in:
parent
6db2889286
commit
dc557046cf
|
@ -1,3 +1,16 @@
|
|||
2006-11-29 J"orn Rennecke <joern.rennecke@st.com>
|
||||
|
||||
* sh.opt (minline-ic_invalidate): New option.
|
||||
(musermode): Adjust comment.
|
||||
* sh.c (sh_initialize_trampoline): Emit library call unless
|
||||
is set; if it is set, don't emit library call if we can use icbi
|
||||
instead.
|
||||
* sh.md (ic_invalidate_line, ic_invalidate_line_sh4a): Also use
|
||||
icbi for TARGET_SH4_300.
|
||||
* t-sh (LIB1ASMFUNCS_CACHE): Set.
|
||||
* doc/invoke.texi: Document -minline-ic_invalidate; Update
|
||||
-musermode documentation.
|
||||
|
||||
2006-11-29 Jim Tison <jtison@us.ibm.com>
|
||||
|
||||
* gthr-tpf.h (__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION,
|
||||
|
|
|
@ -9597,7 +9597,8 @@ sh_initialize_trampoline (rtx tramp, rtx fnaddr, rtx cxt)
|
|||
emit_move_insn (adjust_address (tramp_mem, SImode, 12), fnaddr);
|
||||
if (TARGET_HARVARD)
|
||||
{
|
||||
if (TARGET_USERMODE)
|
||||
if (!TARGET_INLINE_IC_INVALIDATE
|
||||
|| !(TARGET_SH4A_ARCH || TARGET_SH4_300) && TARGET_USERMODE)
|
||||
emit_library_call (function_symbol (NULL, "__ic_invalidate",
|
||||
FUNCTION_ORDINARY),
|
||||
0, VOIDmode, 1, tramp, SImode);
|
||||
|
|
|
@ -5153,7 +5153,7 @@ label:
|
|||
emit_insn (gen_ic_invalidate_line_compact (operands[0], operands[1]));
|
||||
DONE;
|
||||
}
|
||||
else if (TARGET_SH4A_ARCH)
|
||||
else if (TARGET_SH4A_ARCH || TARGET_SH4_300)
|
||||
{
|
||||
emit_insn (gen_ic_invalidate_line_sh4a (operands[0]));
|
||||
DONE;
|
||||
|
@ -5181,7 +5181,7 @@ label:
|
|||
(define_insn "ic_invalidate_line_sh4a"
|
||||
[(unspec_volatile [(match_operand:SI 0 "register_operand" "r")]
|
||||
UNSPEC_ICACHE)]
|
||||
"TARGET_SH4A_ARCH"
|
||||
"TARGET_SH4A_ARCH || TARGET_SH4_300"
|
||||
"ocbwb\\t@%0\;synco\;icbi\\t@%0"
|
||||
[(set_attr "length" "16")
|
||||
(set_attr "type" "cwb")])
|
||||
|
|
|
@ -268,6 +268,10 @@ mindexed-addressing
|
|||
Target Report Mask(ALLOW_INDEXED_ADDRESS) Condition(SUPPORT_ANY_SH5_32MEDIA)
|
||||
Enable the use of the indexed addressing mode for SHmedia32/SHcompact
|
||||
|
||||
minline-ic_invalidate
|
||||
Target Report Var(TARGET_INLINE_IC_INVALIDATE)
|
||||
inline code to invalidate instruction cache entries after setting up nested function trampolines
|
||||
|
||||
minvalid-symbols
|
||||
Target Report Mask(INVALID_SYMBOLS) Condition(SUPPORT_ANY_SH5)
|
||||
Assume symbols might be invalid
|
||||
|
@ -316,7 +320,7 @@ Cost to assume for a multiply insn
|
|||
|
||||
musermode
|
||||
Target Report RejectNegative Mask(USERMODE)
|
||||
Generate library function call to invalidate instruction cache entries after fixing trampoline
|
||||
Don't generate privileged-mode only code; implies -mno-inline-ic_invalidate if the inline code would not work in user mode.
|
||||
|
||||
;; We might want to enable this by default for TARGET_HARD_SH4, because
|
||||
;; zero-offset branches have zero latency. Needs some benchmarking.
|
||||
|
|
|
@ -7,6 +7,7 @@ LIB1ASMFUNCS = _ashiftrt _ashiftrt_n _ashiftlt _lshiftrt _movmem \
|
|||
_movmem_i4 _mulsi3 _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \
|
||||
_div_table _udiv_qrnnd_16 \
|
||||
$(LIB1ASMFUNCS_CACHE)
|
||||
LIB1ASMFUNCS_CACHE = _ic_invalidate _ic_invalidate_array
|
||||
|
||||
# We want fine grained libraries, so use the new code to build the
|
||||
# floating point emulation libraries.
|
||||
|
|
|
@ -709,7 +709,7 @@ See RS/6000 and PowerPC Options.
|
|||
-m5-compact -m5-compact-nofpu @gol
|
||||
-mb -ml -mdalign -mrelax @gol
|
||||
-mbigtable -mfmovd -mhitachi -mrenesas -mno-renesas -mnomacsave @gol
|
||||
-mieee -misize -mpadstruct -mspace @gol
|
||||
-mieee -misize -minline-ic_invalidate -mpadstruct -mspace @gol
|
||||
-mprefergot -musermode -multcost=@var{number} -mdiv=@var{strategy} @gol
|
||||
-mdivsi3_libfunc=@var{name} @gol
|
||||
-madjust-unroll -mindexed-addressing -mgettrcost=@var{number} -mpt-fixed @gol
|
||||
|
@ -12458,6 +12458,19 @@ comparisons of NANs / infinities incurs extra overhead in every
|
|||
floating point comparison, therefore the default is set to
|
||||
@option{-ffinite-math-only}.
|
||||
|
||||
@item -minline-ic_invalidate
|
||||
@opindex minline-ic_invalidate
|
||||
Inline code to invalidate instruction cache entries after setting up
|
||||
nested function trampolines.
|
||||
This option has no effect if -musermode is in effect and the selected
|
||||
code generation option (e.g. -m4) does not allow the use of the icbi
|
||||
instruction.
|
||||
If the selected code generation option does not allow the use of the icbi
|
||||
instruction, and -musermode is not in effect, the inlined code will
|
||||
manipulate the instruction cache address array directly with an associative
|
||||
write. This not only requires privileged mode, but it will also
|
||||
fail if the cache line had been mapped via the TLB and has become unmapped.
|
||||
|
||||
@item -misize
|
||||
@opindex misize
|
||||
Dump instruction size and location in the assembly code.
|
||||
|
@ -12478,10 +12491,9 @@ the Global Offset Table instead of the Procedure Linkage Table.
|
|||
|
||||
@item -musermode
|
||||
@opindex musermode
|
||||
Generate a library function call to invalidate instruction cache
|
||||
entries, after fixing up a trampoline. This library function call
|
||||
doesn't assume it can write to the whole memory address space. This
|
||||
is the default when the target is @code{sh-*-linux*}.
|
||||
Don't generate privileged mode only code; implies -mno-inline-ic_invalidate
|
||||
if the inlined code would not work in user mode.
|
||||
This is the default when the target is @code{sh-*-linux*}.
|
||||
|
||||
@item -multcost=@var{number}
|
||||
@opindex multcost=@var{number}
|
||||
|
|
Loading…
Reference in New Issue