6791469314
2019-01-09 Sandra Loosemore <sandra@codesourcery.com> PR other/16615 [1/5] contrib/ * mklog: Mechanically replace "can not" with "cannot". gcc/ * Makefile.in: Mechanically replace "can not" with "cannot". * alias.c: Likewise. * builtins.c: Likewise. * calls.c: Likewise. * cgraph.c: Likewise. * cgraph.h: Likewise. * cgraphclones.c: Likewise. * cgraphunit.c: Likewise. * combine-stack-adj.c: Likewise. * combine.c: Likewise. * common/config/i386/i386-common.c: Likewise. * config/aarch64/aarch64.c: Likewise. * config/alpha/sync.md: Likewise. * config/arc/arc.c: Likewise. * config/arc/predicates.md: Likewise. * config/arm/arm-c.c: Likewise. * config/arm/arm.c: Likewise. * config/arm/arm.h: Likewise. * config/arm/arm.md: Likewise. * config/arm/cortex-r4f.md: Likewise. * config/csky/csky.c: Likewise. * config/csky/csky.h: Likewise. * config/darwin-f.c: Likewise. * config/epiphany/epiphany.md: Likewise. * config/i386/i386.c: Likewise. * config/i386/sol2.h: Likewise. * config/m68k/m68k.c: Likewise. * config/mcore/mcore.h: Likewise. * config/microblaze/microblaze.md: Likewise. * config/mips/20kc.md: Likewise. * config/mips/sb1.md: Likewise. * config/nds32/nds32.c: Likewise. * config/nds32/predicates.md: Likewise. * config/pa/pa.c: Likewise. * config/rs6000/e300c2c3.md: Likewise. * config/rs6000/rs6000.c: Likewise. * config/s390/s390.h: Likewise. * config/sh/sh.c: Likewise. * config/sh/sh.md: Likewise. * config/spu/vmx2spu.h: Likewise. * cprop.c: Likewise. * dbxout.c: Likewise. * df-scan.c: Likewise. * doc/cfg.texi: Likewise. * doc/extend.texi: Likewise. * doc/fragments.texi: Likewise. * doc/gty.texi: Likewise. * doc/invoke.texi: Likewise. * doc/lto.texi: Likewise. * doc/md.texi: Likewise. * doc/objc.texi: Likewise. * doc/rtl.texi: Likewise. * doc/tm.texi: Likewise. * dse.c: Likewise. * emit-rtl.c: Likewise. * emit-rtl.h: Likewise. * except.c: Likewise. * expmed.c: Likewise. * expr.c: Likewise. * fold-const.c: Likewise. * genautomata.c: Likewise. * gimple-fold.c: Likewise. * hard-reg-set.h: Likewise. * ifcvt.c: Likewise. * ipa-comdats.c: Likewise. * ipa-cp.c: Likewise. * ipa-devirt.c: Likewise. * ipa-fnsummary.c: Likewise. * ipa-icf.c: Likewise. * ipa-inline-transform.c: Likewise. * ipa-inline.c: Likewise. * ipa-polymorphic-call.c: Likewise. * ipa-profile.c: Likewise. * ipa-prop.c: Likewise. * ipa-pure-const.c: Likewise. * ipa-reference.c: Likewise. * ipa-split.c: Likewise. * ipa-visibility.c: Likewise. * ipa.c: Likewise. * ira-build.c: Likewise. * ira-color.c: Likewise. * ira-conflicts.c: Likewise. * ira-costs.c: Likewise. * ira-int.h: Likewise. * ira-lives.c: Likewise. * ira.c: Likewise. * ira.h: Likewise. * loop-invariant.c: Likewise. * loop-unroll.c: Likewise. * lower-subreg.c: Likewise. * lra-assigns.c: Likewise. * lra-constraints.c: Likewise. * lra-eliminations.c: Likewise. * lra-lives.c: Likewise. * lra-remat.c: Likewise. * lra-spills.c: Likewise. * lra.c: Likewise. * lto-cgraph.c: Likewise. * lto-streamer-out.c: Likewise. * postreload-gcse.c: Likewise. * predict.c: Likewise. * profile-count.h: Likewise. * profile.c: Likewise. * recog.c: Likewise. * ree.c: Likewise. * reload.c: Likewise. * reload1.c: Likewise. * reorg.c: Likewise. * resource.c: Likewise. * rtl.def: Likewise. * rtl.h: Likewise. * rtlanal.c: Likewise. * sched-deps.c: Likewise. * sched-ebb.c: Likewise. * sched-rgn.c: Likewise. * sel-sched-ir.c: Likewise. * sel-sched.c: Likewise. * shrink-wrap.c: Likewise. * simplify-rtx.c: Likewise. * symtab.c: Likewise. * target.def: Likewise. * toplev.c: Likewise. * tree-call-cdce.c: Likewise. * tree-cfg.c: Likewise. * tree-complex.c: Likewise. * tree-core.h: Likewise. * tree-eh.c: Likewise. * tree-inline.c: Likewise. * tree-loop-distribution.c: Likewise. * tree-nrv.c: Likewise. * tree-profile.c: Likewise. * tree-sra.c: Likewise. * tree-ssa-alias.c: Likewise. * tree-ssa-dce.c: Likewise. * tree-ssa-dom.c: Likewise. * tree-ssa-forwprop.c: Likewise. * tree-ssa-loop-im.c: Likewise. * tree-ssa-loop-ivcanon.c: Likewise. * tree-ssa-loop-ivopts.c: Likewise. * tree-ssa-loop-niter.c: Likewise. * tree-ssa-phionlycprop.c: Likewise. * tree-ssa-phiopt.c: Likewise. * tree-ssa-propagate.c: Likewise. * tree-ssa-threadedge.c: Likewise. * tree-ssa-threadupdate.c: Likewise. * tree-ssa-uninit.c: Likewise. * tree-ssanames.c: Likewise. * tree-streamer-out.c: Likewise. * tree.c: Likewise. * tree.h: Likewise. * vr-values.c: Likewise. gcc/ada/ * exp_ch9.adb: Mechanically replace "can not" with "cannot". * libgnat/s-regpat.ads: Likewise. * par-ch4.adb: Likewise. * set_targ.adb: Likewise. * types.ads: Likewise. gcc/cp/ * cp-tree.h: Mechanically replace "can not" with "cannot". * parser.c: Likewise. * pt.c: Likewise. gcc/fortran/ * class.c: Mechanically replace "can not" with "cannot". * decl.c: Likewise. * expr.c: Likewise. * gfc-internals.texi: Likewise. * intrinsic.texi: Likewise. * invoke.texi: Likewise. * io.c: Likewise. * match.c: Likewise. * parse.c: Likewise. * primary.c: Likewise. * resolve.c: Likewise. * symbol.c: Likewise. * trans-array.c: Likewise. * trans-decl.c: Likewise. * trans-intrinsic.c: Likewise. * trans-stmt.c: Likewise. gcc/go/ * go-backend.c: Mechanically replace "can not" with "cannot". * go-gcc.cc: Likewise. gcc/lto/ * lto-partition.c: Mechanically replace "can not" with "cannot". * lto-symtab.c: Likewise. * lto.c: Likewise. gcc/objc/ * objc-act.c: Mechanically replace "can not" with "cannot". libbacktrace/ * backtrace.h: Mechanically replace "can not" with "cannot". libgcc/ * config/c6x/libunwind.S: Mechanically replace "can not" with "cannot". * config/tilepro/atomic.h: Likewise. * config/vxlib-tls.c: Likewise. * generic-morestack-thread.c: Likewise. * generic-morestack.c: Likewise. * mkmap-symver.awk: Likewise. libgfortran/ * caf/single.c: Mechanically replace "can not" with "cannot". * io/unit.c: Likewise. libobjc/ * class.c: Mechanically replace "can not" with "cannot". * objc/runtime.h: Likewise. * sendmsg.c: Likewise. liboffloadmic/ * include/coi/common/COIResult_common.h: Mechanically replace "can not" with "cannot". * include/coi/source/COIBuffer_source.h: Likewise. libstdc++-v3/ * include/ext/bitmap_allocator.h: Mechanically replace "can not" with "cannot". From-SVN: r267783
134 lines
3.3 KiB
ArmAsm
134 lines
3.3 KiB
ArmAsm
.text
|
|
.macro do_call fn
|
|
#ifdef _TMS320C6400_PLUS
|
|
callp .s2 (\fn), B3
|
|
#elif defined(_TMS320C6400)
|
|
call .s2 (\fn)
|
|
addkpc .s2 9f, B3, 0
|
|
nop 4
|
|
9f:
|
|
#else
|
|
call .s2 (\fn)
|
|
mhkl .s2 9f, B3
|
|
mhkh .s2 9f, B3
|
|
nop 3
|
|
9f:
|
|
#endif
|
|
.endm
|
|
.align 2
|
|
.global restore_core_regs
|
|
.type restore_core_regs, STT_FUNC
|
|
restore_core_regs:
|
|
mv .s2x A4, B4
|
|
ldw .d1t1 *+A4[0], A0
|
|
|| ldw .d2t2 *++B4[16], B0
|
|
ldw .d1t1 *+A4[1], A1
|
|
|| ldw .d2t2 *+B4[1], B1
|
|
ldw .d1t1 *+A4[2], A2
|
|
|| ldw .d2t2 *+B4[2], B2
|
|
ldw .d1t1 *+A4[3], A3
|
|
|| ldw .d2t2 *+B4[3], B3
|
|
;; Base registers are loaded later
|
|
ldw .d1t1 *+A4[5], A5
|
|
|| ldw .d2t2 *+B4[5], B5
|
|
ldw .d1t1 *+A4[6], A6
|
|
|| ldw .d2t2 *+B4[6], B6
|
|
ldw .d1t1 *+A4[7], A7
|
|
|| ldw .d2t2 *+B4[7], B7
|
|
ldw .d1t1 *+A4[8], A8
|
|
|| ldw .d2t2 *+B4[8], B8
|
|
ldw .d1t1 *+A4[9], A9
|
|
|| ldw .d2t2 *+B4[9], B9
|
|
;; load PC into B10 so that it is ready for the branch
|
|
ldw .d2t2 *+B4[16], B10
|
|
ldw .d1t1 *+A4[11], A11
|
|
|| ldw .d2t2 *+B4[11], B11
|
|
ldw .d1t1 *+A4[12], A12
|
|
|| ldw .d2t2 *+B4[12], B12
|
|
ldw .d1t1 *+A4[13], A13
|
|
|| ldw .d2t2 *+B4[13], B13
|
|
ldw .d1t1 *+A4[14], A14
|
|
|| ldw .d2t2 *+B4[14], B14
|
|
;; Loads have 4 delay slots. Take advantage of this to restore the
|
|
;; scratch registers and stack pointer before the base registers
|
|
;; disappear. We also need to make sure no interrupts occur,
|
|
;; so put the whole thing in the delay slots of a dummy branch
|
|
;; We cannot move the ret earlier as that would cause it to occur
|
|
;; before the last load completes
|
|
b .s1 (1f)
|
|
ldw .d1t1 *+A4[4], A4
|
|
|| ldw .d2t2 *+B4[4], B4
|
|
ldw .d1t1 *+A4[15], A15
|
|
|| ldw .d2t2 *+B4[15], B15
|
|
ret .s2 B10
|
|
ldw .d1t1 *+A4[10], A10
|
|
|| ldw .d2t2 *+B4[10], B10
|
|
nop 1
|
|
1:
|
|
nop 3
|
|
.size restore_core_regs, . - restore_core_regs
|
|
|
|
.macro UNWIND_WRAPPER name argreg argside
|
|
.global \name
|
|
.type \name, STT_FUNC
|
|
\name:
|
|
# Create saved register state: flags,A0-A15,B0-B15,PC = 136 bytes.
|
|
# Plus 4 (rounded to 8) for saving return.
|
|
addk .s2 -144, B15
|
|
stw .d2t1 A0, *+B15[2]
|
|
stw .d2t1 A1, *+B15[3]
|
|
stw .d2t1 A2, *+B15[4]
|
|
stw .d2t1 A3, *+B15[5]
|
|
stw .d2t1 A4, *+B15[6]
|
|
stw .d2t1 A5, *+B15[7]
|
|
stw .d2t1 A6, *+B15[8]
|
|
stw .d2t1 A7, *+B15[9]
|
|
stw .d2t1 A8, *+B15[10]
|
|
stw .d2t1 A9, *+B15[11]
|
|
stw .d2t1 A10, *+B15[12]
|
|
stw .d2t1 A11, *+B15[13]
|
|
stw .d2t1 A12, *+B15[14]
|
|
stw .d2t1 A13, *+B15[15]
|
|
stw .d2t1 A14, *+B15[16]
|
|
stw .d2t1 A15, *+B15[17]
|
|
mv .s1x B15, A0
|
|
addk .s1 144, A0
|
|
stw .d2t2 B0, *+B15[18]
|
|
stw .d2t2 B1, *+B15[19]
|
|
stw .d2t2 B2, *+B15[20]
|
|
stw .d2t2 B3, *+B15[21]
|
|
stw .d2t2 B4, *+B15[22]
|
|
stw .d2t2 B5, *+B15[23]
|
|
stw .d2t2 B6, *+B15[24]
|
|
stw .d2t2 B7, *+B15[25]
|
|
stw .d2t2 B8, *+B15[26]
|
|
stw .d2t2 B9, *+B15[27]
|
|
stw .d2t2 B10, *+B15[28]
|
|
stw .d2t2 B11, *+B15[29]
|
|
stw .d2t2 B12, *+B15[30]
|
|
stw .d2t2 B13, *+B15[31]
|
|
stw .d2t2 B14, *+B15[32]
|
|
stw .d2t1 A0, *+B15[33]
|
|
stw .d2t1 A0, *+B15[34]
|
|
# Zero demand saved flags
|
|
mvk .s1 0, A0
|
|
stw .d2t1 A0, *+B15[1]
|
|
# Save return address, setup additional argument and call function
|
|
stw .d2t2 B3, *+B15[35]
|
|
add .d\argside B15, 4, \argreg
|
|
do_call __gnu\name
|
|
# Restore stack and return
|
|
ldw .d2t2 *+B15[35], B3
|
|
addk .s2 144, B15
|
|
nop 3
|
|
ret .s2 B3
|
|
nop 5
|
|
.size \name, . - \name
|
|
.endm
|
|
|
|
UNWIND_WRAPPER _Unwind_RaiseException B4 2
|
|
UNWIND_WRAPPER _Unwind_Resume B4 2
|
|
UNWIND_WRAPPER _Unwind_Resume_or_Rethrow B4 2
|
|
UNWIND_WRAPPER _Unwind_ForcedUnwind B6 2
|
|
UNWIND_WRAPPER _Unwind_Backtrace A6 1x
|