diff options
author | cvs2svn <> | 2013-07-21 23:30:20 +0400 |
---|---|---|
committer | cvs2svn <> | 2013-07-21 23:30:20 +0400 |
commit | eade66b2022b145a3cec19caf30543261b723535 (patch) | |
tree | dd3f3f943ce90329e46db90a77f1320b50d9c32e /libgloss/m32r/m32r-stub.c | |
parent | 463cca40bd7721c1bf36f69371e45a43c06f3d42 (diff) |
This commit was manufactured by cvs2svn to create tag 'cygwin-cygwin-1_7_22-release
1_7_22-release'.
Sprout from master 2013-07-21 19:30:19 UTC Corinna Vinschen <corinna@vinschen.de> ' * new-features.sgml (ov-new1.7.22): Add GetCommandLine and regcomp'
Cherrypick from master 2013-07-08 13:16:08 UTC Tristan Gingold <gingold@adacore.com> '2013-07-08 Tristan Gingold <gingold@adacore.com>':
ChangeLog
configure
include/cgen/ChangeLog
include/cgen/basic-ops.h
include/coff/ChangeLog
include/coff/rs6000.h
include/elf/ChangeLog
include/elf/mips.h
include/opcode/ChangeLog
include/opcode/mips.h
Cherrypick from cygnus 1999-05-03 07:29:06 UTC Richard Henderson <rth@redhat.com> '19990502 sourceware import':
README
config/mt-d30v
config/mt-ospace
etc/add-log.el
etc/add-log.vi
etc/configbuild.ein
etc/configbuild.fig
etc/configbuild.jin
etc/configbuild.tin
etc/configdev.ein
etc/configdev.fig
etc/configdev.jin
etc/configdev.tin
include/coff/sym.h
makefile.vms
Delete:
COPYING3
COPYING3.LIB
config.rpath
configure.ac
djunpack.bat
libgloss/ChangeLog
libgloss/Makefile.in
libgloss/README
libgloss/aarch64/Makefile.in
libgloss/aarch64/_exit.c
libgloss/aarch64/_kill.c
libgloss/aarch64/aclocal.m4
libgloss/aarch64/configure
libgloss/aarch64/configure.in
libgloss/aarch64/cpu-init/Makefile.in
libgloss/aarch64/cpu-init/aclocal.m4
libgloss/aarch64/cpu-init/configure
libgloss/aarch64/cpu-init/configure.in
libgloss/aarch64/cpu-init/rdimon-aem-el3.S
libgloss/aarch64/crt0.S
libgloss/aarch64/elf-aem-validation.specs
libgloss/aarch64/elf-aem-ve.specs
libgloss/aarch64/elf-rdimon.specs
libgloss/aarch64/libcfunc.c
libgloss/aarch64/svc.h
libgloss/aarch64/syscalls.c
libgloss/acinclude.m4
libgloss/aclocal.m4
libgloss/arm/Makefile.in
libgloss/arm/_exit.c
libgloss/arm/_kill.c
libgloss/arm/aclocal.m4
libgloss/arm/arm.h
libgloss/arm/coff-iq80310.specs
libgloss/arm/coff-pid.specs
libgloss/arm/coff-rdimon.specs
libgloss/arm/coff-rdpmon.specs
libgloss/arm/coff-redboot.ld
libgloss/arm/coff-redboot.specs
libgloss/arm/configure
libgloss/arm/configure.in
libgloss/arm/crt0.S
libgloss/arm/elf-iq80310.specs
libgloss/arm/elf-linux.specs
libgloss/arm/elf-pid.specs
libgloss/arm/elf-rdimon.specs
libgloss/arm/elf-rdpmon.specs
libgloss/arm/elf-redboot.ld
libgloss/arm/elf-redboot.specs
libgloss/arm/libcfunc.c
libgloss/arm/linux-crt0.c
libgloss/arm/linux-syscall.h
libgloss/arm/linux-syscalls0.S
libgloss/arm/linux-syscalls1.c
libgloss/arm/redboot-crt0.S
libgloss/arm/redboot-syscalls.c
libgloss/arm/swi.h
libgloss/arm/syscall.h
libgloss/arm/syscalls.c
libgloss/arm/trap.S
libgloss/bfin/Makefile.in
libgloss/bfin/_exit.c
libgloss/bfin/aclocal.m4
libgloss/bfin/basiccrt.S
libgloss/bfin/bf504.ld
libgloss/bfin/bf506.ld
libgloss/bfin/bf512.ld
libgloss/bfin/bf514.ld
libgloss/bfin/bf516.ld
libgloss/bfin/bf518.ld
libgloss/bfin/bf522.ld
libgloss/bfin/bf523.ld
libgloss/bfin/bf524.ld
libgloss/bfin/bf525.ld
libgloss/bfin/bf526.ld
libgloss/bfin/bf527.ld
libgloss/bfin/bf531.ld
libgloss/bfin/bf532.ld
libgloss/bfin/bf533.ld
libgloss/bfin/bf534.ld
libgloss/bfin/bf536.ld
libgloss/bfin/bf537.ld
libgloss/bfin/bf538.ld
libgloss/bfin/bf539.ld
libgloss/bfin/bf542.ld
libgloss/bfin/bf544.ld
libgloss/bfin/bf547.ld
libgloss/bfin/bf548.ld
libgloss/bfin/bf549.ld
libgloss/bfin/bf561.ld
libgloss/bfin/bf561a.ld
libgloss/bfin/bf561b.ld
libgloss/bfin/bf561m.ld
libgloss/bfin/bf592.ld
libgloss/bfin/bf606.ld
libgloss/bfin/bf606c0.ld
libgloss/bfin/bf606c1.ld
libgloss/bfin/bf606m.ld
libgloss/bfin/bf607.ld
libgloss/bfin/bf607c0.ld
libgloss/bfin/bf607c1.ld
libgloss/bfin/bf607m.ld
libgloss/bfin/bf608.ld
libgloss/bfin/bf608c0.ld
libgloss/bfin/bf608c1.ld
libgloss/bfin/bf608m.ld
libgloss/bfin/bf609.ld
libgloss/bfin/bf609c0.ld
libgloss/bfin/bf609c1.ld
libgloss/bfin/bf609m.ld
libgloss/bfin/bfin-common-mc.ld
libgloss/bfin/bfin-common-mc0.ld
libgloss/bfin/bfin-common-sc.ld
libgloss/bfin/clear_cache_range.c
libgloss/bfin/configure
libgloss/bfin/configure.in
libgloss/bfin/crt0.S
libgloss/bfin/include/blackfin.h
libgloss/bfin/include/builtins.h
libgloss/bfin/include/ccblkfn.h
libgloss/bfin/include/cdefBF504.h
libgloss/bfin/include/cdefBF504F.h
libgloss/bfin/include/cdefBF506F.h
libgloss/bfin/include/cdefBF50x_base.h
libgloss/bfin/include/cdefBF512.h
libgloss/bfin/include/cdefBF514.h
libgloss/bfin/include/cdefBF516.h
libgloss/bfin/include/cdefBF518.h
libgloss/bfin/include/cdefBF51x_base.h
libgloss/bfin/include/cdefBF522.h
libgloss/bfin/include/cdefBF523.h
libgloss/bfin/include/cdefBF524.h
libgloss/bfin/include/cdefBF525.h
libgloss/bfin/include/cdefBF526.h
libgloss/bfin/include/cdefBF527.h
libgloss/bfin/include/cdefBF52x_base.h
libgloss/bfin/include/cdefBF531.h
libgloss/bfin/include/cdefBF532.h
libgloss/bfin/include/cdefBF533.h
libgloss/bfin/include/cdefBF534.h
libgloss/bfin/include/cdefBF535.h
libgloss/bfin/include/cdefBF536.h
libgloss/bfin/include/cdefBF537.h
libgloss/bfin/include/cdefBF538.h
libgloss/bfin/include/cdefBF539.h
libgloss/bfin/include/cdefBF53x.h
libgloss/bfin/include/cdefBF542.h
libgloss/bfin/include/cdefBF542M.h
libgloss/bfin/include/cdefBF544.h
libgloss/bfin/include/cdefBF544M.h
libgloss/bfin/include/cdefBF547.h
libgloss/bfin/include/cdefBF547M.h
libgloss/bfin/include/cdefBF548.h
libgloss/bfin/include/cdefBF548M.h
libgloss/bfin/include/cdefBF549.h
libgloss/bfin/include/cdefBF549M.h
libgloss/bfin/include/cdefBF54x_base.h
libgloss/bfin/include/cdefBF561.h
libgloss/bfin/include/cdefBF592-A.h
libgloss/bfin/include/cdefBF59x_base.h
libgloss/bfin/include/cdefBF606.h
libgloss/bfin/include/cdefBF607.h
libgloss/bfin/include/cdefBF608.h
libgloss/bfin/include/cdefBF609.h
libgloss/bfin/include/cdef_LPBlackfin.h
libgloss/bfin/include/cdefblackfin.h
libgloss/bfin/include/cplb.h
libgloss/bfin/include/cplbtab.h
libgloss/bfin/include/defBF504.h
libgloss/bfin/include/defBF504F.h
libgloss/bfin/include/defBF506F.h
libgloss/bfin/include/defBF50x_base.h
libgloss/bfin/include/defBF512.h
libgloss/bfin/include/defBF514.h
libgloss/bfin/include/defBF516.h
libgloss/bfin/include/defBF518.h
libgloss/bfin/include/defBF51x_base.h
libgloss/bfin/include/defBF522.h
libgloss/bfin/include/defBF523.h
libgloss/bfin/include/defBF524.h
libgloss/bfin/include/defBF525.h
libgloss/bfin/include/defBF526.h
libgloss/bfin/include/defBF527.h
libgloss/bfin/include/defBF52x_base.h
libgloss/bfin/include/defBF531.h
libgloss/bfin/include/defBF532.h
libgloss/bfin/include/defBF533.h
libgloss/bfin/include/defBF534.h
libgloss/bfin/include/defBF535.h
libgloss/bfin/include/defBF536.h
libgloss/bfin/include/defBF537.h
libgloss/bfin/include/defBF538.h
libgloss/bfin/include/defBF539.h
libgloss/bfin/include/defBF542.h
libgloss/bfin/include/defBF542M.h
libgloss/bfin/include/defBF544.h
libgloss/bfin/include/defBF544M.h
libgloss/bfin/include/defBF547.h
libgloss/bfin/include/defBF547M.h
libgloss/bfin/include/defBF548.h
libgloss/bfin/include/defBF548M.h
libgloss/bfin/include/defBF549.h
libgloss/bfin/include/defBF549M.h
libgloss/bfin/include/defBF54x_base.h
libgloss/bfin/include/defBF561.h
libgloss/bfin/include/defBF592-A.h
libgloss/bfin/include/defBF59x_base.h
libgloss/bfin/include/defBF606.h
libgloss/bfin/include/defBF607.h
libgloss/bfin/include/defBF608.h
libgloss/bfin/include/defBF609.h
libgloss/bfin/include/def_LPBlackfin.h
libgloss/bfin/include/defblackfin.h
libgloss/bfin/include/sys/_adi_platform.h
libgloss/bfin/include/sys/anomaly_macros_rtl.h
libgloss/bfin/include/sys/excause.h
libgloss/bfin/include/sys/exception.h
libgloss/bfin/include/sys/mc_typedef.h
libgloss/bfin/include/sys/platform.h
libgloss/bfin/include/sys/pll.h
libgloss/bfin/include/sysreg.h
libgloss/bfin/syscalls.c
libgloss/close.c
libgloss/config/default.mh
libgloss/config/default.mt
libgloss/config/dos.mh
libgloss/config/mips.mt
libgloss/config/mn10200.mt
libgloss/config/mn10300.mt
libgloss/config/ppc.mh
libgloss/config/xc16x.mt
libgloss/configure
libgloss/configure.in
libgloss/cr16/Makefile.in
libgloss/cr16/_exit.c
libgloss/cr16/_getenv.c
libgloss/cr16/_rename.c
libgloss/cr16/aclocal.m4
libgloss/cr16/close.c
libgloss/cr16/configure
libgloss/cr16/configure.in
libgloss/cr16/crt1.S
libgloss/cr16/crti.S
libgloss/cr16/crtn.S
libgloss/cr16/dvz_hndl.c
libgloss/cr16/flg_hndl.c
libgloss/cr16/fstat.c
libgloss/cr16/getpid.c
libgloss/cr16/iad_hndl.c
libgloss/cr16/intable.c
libgloss/cr16/isatty.c
libgloss/cr16/kill.c
libgloss/cr16/lseek.c
libgloss/cr16/open.c
libgloss/cr16/putnum.c
libgloss/cr16/read.c
libgloss/cr16/sbrk.c
libgloss/cr16/sim.ld
libgloss/cr16/stat.c
libgloss/cr16/svc_hndl.c
libgloss/cr16/sys/syscall.h
libgloss/cr16/time.c
libgloss/cr16/und_hndl.c
libgloss/cr16/unlink.c
libgloss/cr16/write.c
libgloss/cris/Makefile.in
libgloss/cris/aclocal.m4
libgloss/cris/configure
libgloss/cris/configure.in
libgloss/cris/crt0.S
libgloss/cris/crti.c
libgloss/cris/crtn.c
libgloss/cris/gensyscalls
libgloss/cris/irqtable.S
libgloss/cris/lcrt0.c
libgloss/cris/linunistd.h
libgloss/cris/outbyte.c
libgloss/cris/setup.S
libgloss/crx/Makefile.in
libgloss/crx/_exit.c
libgloss/crx/_getenv.c
libgloss/crx/_rename.c
libgloss/crx/aclocal.m4
libgloss/crx/close.c
libgloss/crx/configure
libgloss/crx/configure.in
libgloss/crx/crt0.S
libgloss/crx/crti.S
libgloss/crx/crtn.S
libgloss/crx/dvz_hndl.c
libgloss/crx/flg_hndl.c
libgloss/crx/fstat.c
libgloss/crx/getpid.c
libgloss/crx/iad_hndl.c
libgloss/crx/intable.c
libgloss/crx/isatty.c
libgloss/crx/kill.c
libgloss/crx/lseek.c
libgloss/crx/open.c
libgloss/crx/putnum.c
libgloss/crx/read.c
libgloss/crx/sbrk.c
libgloss/crx/sim.ld
libgloss/crx/stat.c
libgloss/crx/svc_hndl.c
libgloss/crx/time.c
libgloss/crx/und_hndl.c
libgloss/crx/unlink.c
libgloss/crx/write.c
libgloss/d30v/Makefile.in
libgloss/d30v/aclocal.m4
libgloss/d30v/configure
libgloss/d30v/configure.in
libgloss/d30v/crt0.S
libgloss/d30v/inbyte.c
libgloss/d30v/outbyte.c
libgloss/d30v/syscalls.c
libgloss/debug.c
libgloss/debug.h
libgloss/doc/Makefile.in
libgloss/doc/configure
libgloss/doc/configure.in
libgloss/doc/porting.texi
libgloss/epiphany/Makefile.in
libgloss/epiphany/_exit.S
libgloss/epiphany/_exit.c
libgloss/epiphany/_isatty.c
libgloss/epiphany/access.c
libgloss/epiphany/aclocal.m4
libgloss/epiphany/close.c
libgloss/epiphany/config.h.in
libgloss/epiphany/configure
libgloss/epiphany/configure.in
libgloss/epiphany/crt0.S
libgloss/epiphany/environ.c
libgloss/epiphany/epiphany-config.h
libgloss/epiphany/epiphany-ivthandlers.S
libgloss/epiphany/epiphany-syscalls.c
libgloss/epiphany/epiphany-syscalls.h
libgloss/epiphany/execve.c
libgloss/epiphany/fork.c
libgloss/epiphany/fstat.c
libgloss/epiphany/getpid.c
libgloss/epiphany/gettimeofday.c
libgloss/epiphany/kill.c
libgloss/epiphany/link.c
libgloss/epiphany/lseek.c
libgloss/epiphany/open.c
libgloss/epiphany/read.c
libgloss/epiphany/sbrk.c
libgloss/epiphany/stat.c
libgloss/epiphany/times.c
libgloss/epiphany/unlink.c
libgloss/epiphany/wait.c
libgloss/epiphany/write.c
libgloss/fr30/Makefile.in
libgloss/fr30/aclocal.m4
libgloss/fr30/configure
libgloss/fr30/configure.in
libgloss/fr30/crt0.s
libgloss/fr30/syscalls.c
libgloss/frv/Makefile.in
libgloss/frv/aclocal.m4
libgloss/frv/configure
libgloss/frv/configure.in
libgloss/frv/crt0.S
libgloss/frv/fstat.c
libgloss/frv/getpid.c
libgloss/frv/isatty.c
libgloss/frv/kill.c
libgloss/frv/print.c
libgloss/frv/putnum.c
libgloss/frv/sbrk.c
libgloss/frv/sim-close.S
libgloss/frv/sim-exit.S
libgloss/frv/sim-inbyte.c
libgloss/frv/sim-lseek.S
libgloss/frv/sim-open.S
libgloss/frv/sim-read.S
libgloss/frv/sim-time.c
libgloss/frv/sim-unlink.S
libgloss/frv/sim-write.S
libgloss/frv/stat.c
libgloss/fstat.c
libgloss/getpid.c
libgloss/glue.h
libgloss/hp74x/Makefile.in
libgloss/hp74x/README
libgloss/hp74x/aclocal.m4
libgloss/hp74x/checksum.c
libgloss/hp74x/configure
libgloss/hp74x/configure.in
libgloss/hp74x/crt0.s
libgloss/hp74x/debugger.h
libgloss/hp74x/debugger.s
libgloss/hp74x/diagnose.h
libgloss/hp74x/hppa-defs.h
libgloss/hp74x/hppa.ld
libgloss/hp74x/io.c
libgloss/hp74x/iva_table.h
libgloss/hp74x/iva_table.s
libgloss/hp74x/pa_stub.c
libgloss/hp74x/test.c
libgloss/i386/Makefile.in
libgloss/i386/aclocal.m4
libgloss/i386/configure
libgloss/i386/configure.in
libgloss/i386/cygmon-crt0.S
libgloss/i386/cygmon-gmon.c
libgloss/i386/cygmon-gmon.h
libgloss/i386/cygmon-salib.c
libgloss/i386/cygmon-syscall.h
libgloss/i386/cygmon.ld
libgloss/i960/Makefile.in
libgloss/i960/aclocal.m4
libgloss/i960/asm.h
libgloss/i960/configure
libgloss/i960/configure.in
libgloss/i960/crt0.c
libgloss/i960/mon-read.c
libgloss/i960/mon-syscalls.S
libgloss/i960/mon-write.c
libgloss/i960/mon960.c
libgloss/i960/mon960.ld
libgloss/i960/syscall.h
libgloss/iq2000/Makefile.in
libgloss/iq2000/_exit.c
libgloss/iq2000/access.c
libgloss/iq2000/aclocal.m4
libgloss/iq2000/chmod.c
libgloss/iq2000/chown.c
libgloss/iq2000/close.c
libgloss/iq2000/configure
libgloss/iq2000/configure.in
libgloss/iq2000/creat.c
libgloss/iq2000/crt0.S
libgloss/iq2000/crt1.c
libgloss/iq2000/execv.c
libgloss/iq2000/execve.c
libgloss/iq2000/fork.c
libgloss/iq2000/fstat.c
libgloss/iq2000/getpid.c
libgloss/iq2000/gettime.c
libgloss/iq2000/isatty.c
libgloss/iq2000/kill.c
libgloss/iq2000/lseek.c
libgloss/iq2000/open.c
libgloss/iq2000/pipe.c
libgloss/iq2000/read.c
libgloss/iq2000/sbrk.c
libgloss/iq2000/sim.ld
libgloss/iq2000/stat.c
libgloss/iq2000/test.c
libgloss/iq2000/time.c
libgloss/iq2000/times.c
libgloss/iq2000/trap.c
libgloss/iq2000/trap.h
libgloss/iq2000/unlink.c
libgloss/iq2000/utime.c
libgloss/iq2000/wait.c
libgloss/iq2000/write.c
libgloss/isatty.c
libgloss/kill.c
libgloss/libnosys/Makefile.in
libgloss/libnosys/_exit.c
libgloss/libnosys/acconfig.h
libgloss/libnosys/aclocal.m4
libgloss/libnosys/chown.c
libgloss/libnosys/close.c
libgloss/libnosys/config.h.in
libgloss/libnosys/configure
libgloss/libnosys/configure.in
libgloss/libnosys/environ.c
libgloss/libnosys/errno.c
libgloss/libnosys/execve.c
libgloss/libnosys/fork.c
libgloss/libnosys/fstat.c
libgloss/libnosys/getpid.c
libgloss/libnosys/gettod.c
libgloss/libnosys/isatty.c
libgloss/libnosys/kill.c
libgloss/libnosys/link.c
libgloss/libnosys/lseek.c
libgloss/libnosys/open.c
libgloss/libnosys/read.c
libgloss/libnosys/readlink.c
libgloss/libnosys/sbrk.c
libgloss/libnosys/stat.c
libgloss/libnosys/symlink.c
libgloss/libnosys/times.c
libgloss/libnosys/unlink.c
libgloss/libnosys/wait.c
libgloss/libnosys/warning.h
libgloss/libnosys/write.c
libgloss/lm32/Makefile.in
libgloss/lm32/aclocal.m4
libgloss/lm32/configure
libgloss/lm32/configure.in
libgloss/lm32/crt0.S
libgloss/lm32/isatty.c
libgloss/lm32/scall.S
libgloss/lm32/sim.ld
libgloss/lseek.c
libgloss/m32c/Makefile.in
libgloss/m32c/abort.S
libgloss/m32c/aclocal.m4
libgloss/m32c/argv.S
libgloss/m32c/argvlen.S
libgloss/m32c/chdir.S
libgloss/m32c/chmod.S
libgloss/m32c/close.S
libgloss/m32c/configure
libgloss/m32c/configure.in
libgloss/m32c/crt0.S
libgloss/m32c/crtn.S
libgloss/m32c/exit.S
libgloss/m32c/fstat.S
libgloss/m32c/genscript
libgloss/m32c/getpid.S
libgloss/m32c/gettimeofday.S
libgloss/m32c/heaptop.S
libgloss/m32c/isatty.S
libgloss/m32c/kill.S
libgloss/m32c/link.S
libgloss/m32c/lseek.S
libgloss/m32c/m32c.tmpl
libgloss/m32c/m32csys.h
libgloss/m32c/open.S
libgloss/m32c/read.S
libgloss/m32c/sample.c
libgloss/m32c/sbrk.c
libgloss/m32c/stat.S
libgloss/m32c/time.S
libgloss/m32c/times.S
libgloss/m32c/unlink.S
libgloss/m32c/utime.S
libgloss/m32c/varvects.S
libgloss/m32c/varvects.h
libgloss/m32c/write.S
libgloss/m32r/Makefile.in
libgloss/m32r/aclocal.m4
libgloss/m32r/chmod.c
libgloss/m32r/close.c
libgloss/m32r/configure
libgloss/m32r/configure.in
libgloss/m32r/crt0.S
libgloss/m32r/eit.h
libgloss/m32r/eva-stub.ld
libgloss/m32r/eva.ld
libgloss/m32r/exit.c
libgloss/m32r/fstat.c
libgloss/m32r/getpid.c
libgloss/m32r/isatty.c
libgloss/m32r/kill.c
libgloss/m32r/lseek.c
libgloss/m32r/m32r-lib.c
libgloss/m32r/m32r-stub.c
libgloss/m32r/mon.specs
libgloss/m32r/open.c
libgloss/m32r/raise.c
libgloss/m32r/read.c
libgloss/m32r/sbrk.c
libgloss/m32r/stat.c
libgloss/m32r/trap0.S
libgloss/m32r/trapmon0.c
libgloss/m32r/unlink.c
libgloss/m32r/utime.c
libgloss/m32r/write.c
libgloss/m68hc11/Makefile.in
libgloss/m68hc11/aclocal.m4
libgloss/m68hc11/configure
libgloss/m68hc11/configure.in
libgloss/m68hc11/crt0.S
libgloss/m68hc11/sci-inout.S
libgloss/m68hc11/sim-valid-m68hc11.ld
libgloss/m68hc11/sim-valid-m68hc12.ld
libgloss/m68hc11/syscalls.c
libgloss/m68k/Makefile.in
libgloss/m68k/README
libgloss/m68k/aclocal.m4
libgloss/m68k/asm.h
libgloss/m68k/bcc.ld
libgloss/m68k/cf-crt0.S
libgloss/m68k/cf-crt1.c
libgloss/m68k/cf-exit.c
libgloss/m68k/cf-hosted.S
libgloss/m68k/cf-isrs.c
libgloss/m68k/cf-isv.S
libgloss/m68k/cf-sbrk.c
libgloss/m68k/cf.sc
libgloss/m68k/configure
libgloss/m68k/configure.in
libgloss/m68k/cpu32bug.S
libgloss/m68k/cpu32bug.h
libgloss/m68k/crt0.S
libgloss/m68k/dtor.C
libgloss/m68k/fido-_exit.c
libgloss/m68k/fido-crt0.S
libgloss/m68k/fido-handler.c
libgloss/m68k/fido-hosted.S
libgloss/m68k/fido-sbrk.c
libgloss/m68k/fido.h
libgloss/m68k/fido.sc
libgloss/m68k/fido_profiling.h
libgloss/m68k/idp-inbyte.c
libgloss/m68k/idp-outbyte.c
libgloss/m68k/idp.ld
libgloss/m68k/idpgdb.ld
libgloss/m68k/io-close.c
libgloss/m68k/io-exit.c
libgloss/m68k/io-fstat.c
libgloss/m68k/io-gdb.c
libgloss/m68k/io-gettimeofday.c
libgloss/m68k/io-isatty.c
libgloss/m68k/io-lseek.c
libgloss/m68k/io-open.c
libgloss/m68k/io-read.c
libgloss/m68k/io-rename.c
libgloss/m68k/io-stat.c
libgloss/m68k/io-system.c
libgloss/m68k/io-time.c
libgloss/m68k/io-unlink.c
libgloss/m68k/io-write.c
libgloss/m68k/io.h
libgloss/m68k/leds.c
libgloss/m68k/leds.h
libgloss/m68k/mc68681reg.h
libgloss/m68k/mc68ec.c
libgloss/m68k/mvme-stub.c
libgloss/m68k/mvme.S
libgloss/m68k/mvme135-asm.S
libgloss/m68k/mvme135.ld
libgloss/m68k/mvme162.ld
libgloss/m68k/mvme162lx-asm.S
libgloss/m68k/sbc5204.ld
libgloss/m68k/sbc5206.ld
libgloss/m68k/sim-abort.c
libgloss/m68k/sim-crt0.S
libgloss/m68k/sim-errno.c
libgloss/m68k/sim-funcs.c
libgloss/m68k/sim-inbyte.c
libgloss/m68k/sim-print.c
libgloss/m68k/sim-sbrk.c
libgloss/m68k/sim.ld
libgloss/m68k/simulator.S
libgloss/m68k/test.c
libgloss/mcore/Makefile.in
libgloss/mcore/aclocal.m4
libgloss/mcore/close.c
libgloss/mcore/cmb-exit.c
libgloss/mcore/cmb-inbyte.c
libgloss/mcore/cmb-outbyte.c
libgloss/mcore/configure
libgloss/mcore/configure.in
libgloss/mcore/crt0.S
libgloss/mcore/elf-cmb.ld
libgloss/mcore/elf-cmb.specs
libgloss/mcore/fstat.c
libgloss/mcore/getpid.c
libgloss/mcore/kill.c
libgloss/mcore/lseek.c
libgloss/mcore/open.c
libgloss/mcore/pe-cmb.ld
libgloss/mcore/pe-cmb.specs
libgloss/mcore/print.c
libgloss/mcore/putnum.c
libgloss/mcore/raise.c
libgloss/mcore/read.c
libgloss/mcore/sbrk.c
libgloss/mcore/stat.c
libgloss/mcore/syscalls.S
libgloss/mcore/unlink.c
libgloss/mcore/write.c
libgloss/mep/Makefile.in
libgloss/mep/aclocal.m4
libgloss/mep/configure
libgloss/mep/configure.in
libgloss/mep/crt0.S
libgloss/mep/crtn.S
libgloss/mep/default.ld
libgloss/mep/fmax.ld
libgloss/mep/gcov-io.h
libgloss/mep/gmap_default.ld
libgloss/mep/h_reset.c
libgloss/mep/handlers.c
libgloss/mep/isatty.c
libgloss/mep/mep-bb.c
libgloss/mep/mep-gmon.c
libgloss/mep/min.ld
libgloss/mep/read.c
libgloss/mep/sbrk.c
libgloss/mep/sdram-crt0.S
libgloss/mep/sim-crt0.S
libgloss/mep/sim-crtn.S
libgloss/mep/simnovec-crt0.S
libgloss/mep/simple.ld
libgloss/mep/simsdram-crt0.S
libgloss/mep/syscalls.S
libgloss/mep/write.c
libgloss/microblaze/Makefile.in
libgloss/microblaze/_exception_handler.S
libgloss/microblaze/_hw_exception_handler.S
libgloss/microblaze/_interrupt_handler.S
libgloss/microblaze/_program_clean.S
libgloss/microblaze/_program_init.S
libgloss/microblaze/configure
libgloss/microblaze/configure.in
libgloss/microblaze/crt0.S
libgloss/microblaze/crt1.S
libgloss/microblaze/crt2.S
libgloss/microblaze/crt3.S
libgloss/microblaze/crt4.S
libgloss/microblaze/crtinit.S
libgloss/microblaze/pgcrtinit.S
libgloss/microblaze/sbrk.c
libgloss/microblaze/sim-crtinit.S
libgloss/microblaze/sim-pgcrtinit.S
libgloss/microblaze/timer.c
libgloss/microblaze/xil_malloc.c
libgloss/microblaze/xil_printf.c
libgloss/microblaze/xil_sbrk.c
libgloss/microblaze/xilinx.ld
libgloss/mips/Makefile.in
libgloss/mips/aclocal.m4
libgloss/mips/array-io.c
libgloss/mips/array.ld
libgloss/mips/cfe.c
libgloss/mips/cfe.ld
libgloss/mips/cfe_api.c
libgloss/mips/cfe_api.h
libgloss/mips/cfe_api_int.h
libgloss/mips/cfe_error.h
libgloss/mips/cfe_mem.c
libgloss/mips/cma101.c
libgloss/mips/configure
libgloss/mips/configure.in
libgloss/mips/crt0.S
libgloss/mips/crt0_cfe.S
libgloss/mips/crt0_cygmon.S
libgloss/mips/cygmon.c
libgloss/mips/ddb-kseg0.ld
libgloss/mips/ddb.ld
libgloss/mips/dtor.C
libgloss/mips/dve.ld
libgloss/mips/dvemon.c
libgloss/mips/entry.S
libgloss/mips/idt.ld
libgloss/mips/idt32.ld
libgloss/mips/idt64.ld
libgloss/mips/idtecoff.ld
libgloss/mips/idtmon.S
libgloss/mips/jmr3904-io.c
libgloss/mips/jmr3904app-java.ld
libgloss/mips/jmr3904app.ld
libgloss/mips/jmr3904dram-java.ld
libgloss/mips/jmr3904dram.ld
libgloss/mips/lsi.ld
libgloss/mips/lsipmon.S
libgloss/mips/mti32.ld
libgloss/mips/mti64.ld
libgloss/mips/mti64_64.ld
libgloss/mips/mti64_n32.ld
libgloss/mips/nullmon.c
libgloss/mips/nullmon.ld
libgloss/mips/pmon.S
libgloss/mips/pmon.ld
libgloss/mips/regs.S
libgloss/mips/sde32.ld
libgloss/mips/sde64.ld
libgloss/mips/syscalls.c
libgloss/mips/test.c
libgloss/mips/vr4300.S
libgloss/mips/vr5xxx.S
libgloss/mn10200/Makefile.in
libgloss/mn10200/_exit.c
libgloss/mn10200/access.c
libgloss/mn10200/aclocal.m4
libgloss/mn10200/chmod.c
libgloss/mn10200/chown.c
libgloss/mn10200/close.c
libgloss/mn10200/configure
libgloss/mn10200/configure.in
libgloss/mn10200/creat.c
libgloss/mn10200/crt0.S
libgloss/mn10200/crt1.c
libgloss/mn10200/eval.ld
libgloss/mn10200/execv.c
libgloss/mn10200/execve.c
libgloss/mn10200/fork.c
libgloss/mn10200/fstat.c
libgloss/mn10200/getpid.c
libgloss/mn10200/gettime.c
libgloss/mn10200/isatty.c
libgloss/mn10200/kill.c
libgloss/mn10200/lseek.c
libgloss/mn10200/open.c
libgloss/mn10200/pipe.c
libgloss/mn10200/read.c
libgloss/mn10200/sbrk.c
libgloss/mn10200/sim.ld
libgloss/mn10200/stat.c
libgloss/mn10200/test.c
libgloss/mn10200/time.c
libgloss/mn10200/times.c
libgloss/mn10200/trap.S
libgloss/mn10200/trap.h
libgloss/mn10200/unlink.c
libgloss/mn10200/utime.c
libgloss/mn10200/wait.c
libgloss/mn10200/write.c
libgloss/mn10300/Makefile.in
libgloss/mn10300/_exit.c
libgloss/mn10300/access.c
libgloss/mn10300/aclocal.m4
libgloss/mn10300/asb2303.ld
libgloss/mn10300/asb2305.ld
libgloss/mn10300/chmod.c
libgloss/mn10300/chown.c
libgloss/mn10300/close.c
libgloss/mn10300/configure
libgloss/mn10300/configure.in
libgloss/mn10300/creat.c
libgloss/mn10300/crt0-eval.S
libgloss/mn10300/crt0.S
libgloss/mn10300/crt0_cygmon.S
libgloss/mn10300/crt0_redboot.S
libgloss/mn10300/crt1.c
libgloss/mn10300/cygmon.c
libgloss/mn10300/eval.ld
libgloss/mn10300/execv.c
libgloss/mn10300/execve.c
libgloss/mn10300/fork.c
libgloss/mn10300/fstat.c
libgloss/mn10300/getpid.c
libgloss/mn10300/gettime.c
libgloss/mn10300/isatty.c
libgloss/mn10300/kill.c
libgloss/mn10300/lseek.c
libgloss/mn10300/open.c
libgloss/mn10300/pipe.c
libgloss/mn10300/read.c
libgloss/mn10300/sbrk.c
libgloss/mn10300/sim.ld
libgloss/mn10300/stat.c
libgloss/mn10300/test.c
libgloss/mn10300/time.c
libgloss/mn10300/times.c
libgloss/mn10300/trap.S
libgloss/mn10300/trap.h
libgloss/mn10300/unlink.c
libgloss/mn10300/utime.c
libgloss/mn10300/wait.c
libgloss/mn10300/write.c
libgloss/moxie/Makefile.in
libgloss/moxie/aclocal.m4
libgloss/moxie/configure
libgloss/moxie/configure.in
libgloss/moxie/crt0.S
libgloss/moxie/fstat.c
libgloss/moxie/getpid.c
libgloss/moxie/isatty.c
libgloss/moxie/kill.c
libgloss/moxie/moxie-elf-common.ld
libgloss/moxie/print.c
libgloss/moxie/putnum.c
libgloss/moxie/qemu-time.c
libgloss/moxie/qemu-write.c
libgloss/moxie/qemu.ld
libgloss/moxie/sbrk.c
libgloss/moxie/sim-close.S
libgloss/moxie/sim-exit.S
libgloss/moxie/sim-inbyte.c
libgloss/moxie/sim-lseek.S
libgloss/moxie/sim-lseek.c
libgloss/moxie/sim-open.S
libgloss/moxie/sim-read.S
libgloss/moxie/sim-time.c
libgloss/moxie/sim-unlink.S
libgloss/moxie/sim-write.S
libgloss/moxie/sim.ld
libgloss/moxie/stat.c
libgloss/msp430/Makefile.in
libgloss/msp430/cio.c
libgloss/msp430/cio.h
libgloss/msp430/configure
libgloss/msp430/configure.in
libgloss/msp430/crt0.S
libgloss/msp430/crtn.S
libgloss/msp430/gcrt0.S
libgloss/msp430/memmodel.h
libgloss/msp430/msp430-sim.ld
libgloss/msp430/msp430.ld
libgloss/msp430/msp430F5438A-l.ld
libgloss/msp430/msp430F5438A-s.ld
libgloss/msp430/msp430xl-sim.ld
libgloss/msp430/nosyscalls.S
libgloss/msp430/sbrk.c
libgloss/msp430/syscalls.S
libgloss/msp430/write.c
libgloss/mt/16-002.ld
libgloss/mt/16-003.ld
libgloss/mt/64-001.ld
libgloss/mt/Makefile.in
libgloss/mt/access.c
libgloss/mt/aclocal.m4
libgloss/mt/chmod.c
libgloss/mt/close.c
libgloss/mt/configure
libgloss/mt/configure.in
libgloss/mt/crt0-16-002.S
libgloss/mt/crt0-16-003.S
libgloss/mt/crt0-64-001.S
libgloss/mt/crt0-ms2.S
libgloss/mt/crt0.S
libgloss/mt/exit-16-002.c
libgloss/mt/exit-16-003.c
libgloss/mt/exit-64-001.c
libgloss/mt/exit-ms2.c
libgloss/mt/exit.c
libgloss/mt/fstat.c
libgloss/mt/getpid.c
libgloss/mt/gettime.c
libgloss/mt/isatty.c
libgloss/mt/kill.c
libgloss/mt/lseek.c
libgloss/mt/ms2.ld
libgloss/mt/open.c
libgloss/mt/read.c
libgloss/mt/sbrk.c
libgloss/mt/startup-16-002.S
libgloss/mt/startup-16-003.S
libgloss/mt/startup-64-001.S
libgloss/mt/startup-ms2.S
libgloss/mt/stat.c
libgloss/mt/time.c
libgloss/mt/times.c
libgloss/mt/trap.S
libgloss/mt/trap.h
libgloss/mt/unlink.c
libgloss/mt/utime.c
libgloss/mt/write.c
libgloss/nds32/Makefile.in
libgloss/nds32/aclocal.m4
libgloss/nds32/configure
libgloss/nds32/configure.in
libgloss/nds32/crt0.S
libgloss/nds32/crt1.S
libgloss/nds32/syscall_argv.S
libgloss/nds32/syscall_argvlen.S
libgloss/nds32/syscall_chdir.S
libgloss/nds32/syscall_chmod.S
libgloss/nds32/syscall_close.S
libgloss/nds32/syscall_exit.S
libgloss/nds32/syscall_extra.h
libgloss/nds32/syscall_fstat.S
libgloss/nds32/syscall_getpid.S
libgloss/nds32/syscall_gettimeofday.S
libgloss/nds32/syscall_isatty.S
libgloss/nds32/syscall_kill.S
libgloss/nds32/syscall_link.S
libgloss/nds32/syscall_lseek.S
libgloss/nds32/syscall_open.S
libgloss/nds32/syscall_read.S
libgloss/nds32/syscall_rename.S
libgloss/nds32/syscall_sbrk.S
libgloss/nds32/syscall_stat.S
libgloss/nds32/syscall_system.S
libgloss/nds32/syscall_time.S
libgloss/nds32/syscall_times.S
libgloss/nds32/syscall_unlink.S
libgloss/nds32/syscall_utime.S
libgloss/nds32/syscall_write.S
libgloss/open.c
libgloss/pa/Makefile.in
libgloss/pa/README
libgloss/pa/aclocal.m4
libgloss/pa/configure
libgloss/pa/configure.in
libgloss/pa/crt0.S
libgloss/pa/hp-milli.s
libgloss/pa/op50n-io.S
libgloss/pa/op50n.h
libgloss/pa/op50n.ld
libgloss/pa/op50nled.c
libgloss/pa/setjmp.S
libgloss/pa/test.c
libgloss/pa/w89k-io.c
libgloss/pa/w89k.h
libgloss/pa/w89k.ld
libgloss/print.c
libgloss/putnum.c
libgloss/read.c
libgloss/rl78/Makefile.in
libgloss/rl78/abort.S
libgloss/rl78/argv.S
libgloss/rl78/argvlen.S
libgloss/rl78/chdir.S
libgloss/rl78/chmod.S
libgloss/rl78/close.S
libgloss/rl78/configure
libgloss/rl78/configure.in
libgloss/rl78/crt0.S
libgloss/rl78/crtn.S
libgloss/rl78/exit.S
libgloss/rl78/fstat.S
libgloss/rl78/gcrt0.S
libgloss/rl78/getpid.S
libgloss/rl78/gettimeofday.S
libgloss/rl78/isatty.S
libgloss/rl78/kill.S
libgloss/rl78/link.S
libgloss/rl78/lseek.S
libgloss/rl78/mcount.c
libgloss/rl78/open.S
libgloss/rl78/read.S
libgloss/rl78/rl78-sim.ld
libgloss/rl78/rl78-sys.h
libgloss/rl78/rl78.ld
libgloss/rl78/sbrk.c
libgloss/rl78/stat.S
libgloss/rl78/time.S
libgloss/rl78/times.S
libgloss/rl78/unlink.S
libgloss/rl78/utime.S
libgloss/rl78/write.c
libgloss/rs6000/Makefile.in
libgloss/rs6000/aclocal.m4
libgloss/rs6000/ads-exit.S
libgloss/rs6000/ads-io.c
libgloss/rs6000/ads.ld
libgloss/rs6000/configure
libgloss/rs6000/configure.in
libgloss/rs6000/crt0.S
libgloss/rs6000/mbx-exit.c
libgloss/rs6000/mbx-inbyte.c
libgloss/rs6000/mbx-outbyte.c
libgloss/rs6000/mbx-print.c
libgloss/rs6000/mbx.ld
libgloss/rs6000/mbx.specs
libgloss/rs6000/mcount.S
libgloss/rs6000/mvme-errno.c
libgloss/rs6000/mvme-exit.S
libgloss/rs6000/mvme-inbyte.S
libgloss/rs6000/mvme-outbyte.S
libgloss/rs6000/mvme-print.c
libgloss/rs6000/mvme-read.c
libgloss/rs6000/sim-abort.c
libgloss/rs6000/sim-crt0.S
libgloss/rs6000/sim-errno.c
libgloss/rs6000/sim-getrusage.S
libgloss/rs6000/sim-inbyte.c
libgloss/rs6000/sim-print.c
libgloss/rs6000/sim-sbrk.c
libgloss/rs6000/sim-times.c
libgloss/rs6000/simulator.S
libgloss/rs6000/sol-cfuncs.c
libgloss/rs6000/sol-syscall.S
libgloss/rs6000/test.c
libgloss/rs6000/xil-crt0.S
libgloss/rs6000/xilinx.ld
libgloss/rs6000/xilinx440.ld
libgloss/rs6000/yellowknife.ld
libgloss/rx/Makefile.in
libgloss/rx/abort.S
libgloss/rx/argv.S
libgloss/rx/argvlen.S
libgloss/rx/chdir.S
libgloss/rx/chmod.S
libgloss/rx/close.S
libgloss/rx/configure
libgloss/rx/configure.in
libgloss/rx/crt0.S
libgloss/rx/crtn.S
libgloss/rx/exit.S
libgloss/rx/fstat.S
libgloss/rx/gcrt0.S
libgloss/rx/getpid.S
libgloss/rx/gettimeofday.S
libgloss/rx/heaptop.S
libgloss/rx/isatty.S
libgloss/rx/kill.S
libgloss/rx/link.S
libgloss/rx/lseek.S
libgloss/rx/mcount.c
libgloss/rx/open.S
libgloss/rx/read.S
libgloss/rx/rx-sim.ld
libgloss/rx/rx.ld
libgloss/rx/rxsys.h
libgloss/rx/sbrk.c
libgloss/rx/sigprocmask.S
libgloss/rx/sleep.S
libgloss/rx/stat.S
libgloss/rx/time.S
libgloss/rx/times.S
libgloss/rx/unlink.S
libgloss/rx/utime.S
libgloss/rx/write.S
libgloss/sbrk.c
libgloss/sh/sh1lcevb.ld
libgloss/sh/sh2lcevb.ld
libgloss/sh/sh3bb.ld
libgloss/sh/sh3lcevb.ld
libgloss/sparc/Makefile.in
libgloss/sparc/aclocal.m4
libgloss/sparc/asm.h
libgloss/sparc/cache.c
libgloss/sparc/configure
libgloss/sparc/configure.in
libgloss/sparc/crt0-701.S
libgloss/sparc/crt0.S
libgloss/sparc/cygmon-crt0.S
libgloss/sparc/cygmon-salib.c
libgloss/sparc/cygmon-sparc64-ld.src
libgloss/sparc/cygmon.ld.src
libgloss/sparc/dtor.C
libgloss/sparc/elfsim.ld
libgloss/sparc/erc32-crt0.S
libgloss/sparc/erc32-io.c
libgloss/sparc/erc32-stub.c
libgloss/sparc/erc32.ld
libgloss/sparc/ex930.ld
libgloss/sparc/ex931.ld
libgloss/sparc/ex934.ld
libgloss/sparc/fixctors.c
libgloss/sparc/libsys/Makefile.in
libgloss/sparc/libsys/_exit.S
libgloss/sparc/libsys/aclocal.m4
libgloss/sparc/libsys/cerror.S
libgloss/sparc/libsys/configure
libgloss/sparc/libsys/configure.in
libgloss/sparc/libsys/isatty.c
libgloss/sparc/libsys/libsys-crt0.S
libgloss/sparc/libsys/sbrk.S
libgloss/sparc/libsys/syscall.h
libgloss/sparc/libsys/syscallasm.h
libgloss/sparc/libsys/template.S
libgloss/sparc/libsys/template_r.S
libgloss/sparc/salib-701.c
libgloss/sparc/salib.c
libgloss/sparc/slite.h
libgloss/sparc/sparc-stub.c
libgloss/sparc/sparc86x.ld
libgloss/sparc/sparcl-stub.c
libgloss/sparc/sparclet-stub.c
libgloss/sparc/sparclite.h
libgloss/sparc/sysc-701.c
libgloss/sparc/syscalls.c
libgloss/sparc/test.c
libgloss/sparc/traps.S
libgloss/sparc/tsc701.ld
libgloss/sparc_leon/Makefile.in
libgloss/sparc_leon/_exit.c
libgloss/sparc_leon/aclocal.m4
libgloss/sparc_leon/amba.c
libgloss/sparc_leon/amba_dbg.c
libgloss/sparc_leon/amba_driver.c
libgloss/sparc_leon/amba_scan.c
libgloss/sparc_leon/asm-leon/amba.h
libgloss/sparc_leon/asm-leon/asmmacro.h
libgloss/sparc_leon/asm-leon/clock.h
libgloss/sparc_leon/asm-leon/contextswitch.h
libgloss/sparc_leon/asm-leon/elfmacro.h
libgloss/sparc_leon/asm-leon/head.h
libgloss/sparc_leon/asm-leon/irq.h
libgloss/sparc_leon/asm-leon/jiffies.h
libgloss/sparc_leon/asm-leon/lambapp.h
libgloss/sparc_leon/asm-leon/lambapp_devs.h
libgloss/sparc_leon/asm-leon/leon.h
libgloss/sparc_leon/asm-leon/leon3.h
libgloss/sparc_leon/asm-leon/leonbare_debug.h
libgloss/sparc_leon/asm-leon/leonbare_kernel.h
libgloss/sparc_leon/asm-leon/leonbare_kernel_queue.h
libgloss/sparc_leon/asm-leon/leoncompat.h
libgloss/sparc_leon/asm-leon/leondbg.h
libgloss/sparc_leon/asm-leon/leonstack.h
libgloss/sparc_leon/asm-leon/liblocks.h
libgloss/sparc_leon/asm-leon/linkage.h
libgloss/sparc_leon/asm-leon/param.h
libgloss/sparc_leon/asm-leon/queue.h
libgloss/sparc_leon/asm-leon/spinlock.h
libgloss/sparc_leon/asm-leon/stack.h
libgloss/sparc_leon/asm-leon/time.h
libgloss/sparc_leon/asm-leon/timer.h
libgloss/sparc_leon/asm-leon/types.h
libgloss/sparc_leon/asm-leon/winmacros.h
libgloss/sparc_leon/bdinit.S
libgloss/sparc_leon/busscan.S
libgloss/sparc_leon/cacheA.S
libgloss/sparc_leon/catch_interrupt.c
libgloss/sparc_leon/catch_interrupt_mvt.c
libgloss/sparc_leon/catch_interrupt_pending.c
libgloss/sparc_leon/catch_interrupt_svt.c
libgloss/sparc_leon/configure
libgloss/sparc_leon/configure.in
libgloss/sparc_leon/console.c
libgloss/sparc_leon/console_dbg.c
libgloss/sparc_leon/console_init.c
libgloss/sparc_leon/contextswitch.c
libgloss/sparc_leon/contextswitch_asm.S
libgloss/sparc_leon/crt0.S
libgloss/sparc_leon/crti.S
libgloss/sparc_leon/crtn.S
libgloss/sparc_leon/etrap.S
libgloss/sparc_leon/etrap_fast.S
libgloss/sparc_leon/fpu.S
libgloss/sparc_leon/gettimeofday.c
libgloss/sparc_leon/initcalls.c
libgloss/sparc_leon/io.c
libgloss/sparc_leon/irqinstall.S
libgloss/sparc_leon/irqtrap.S
libgloss/sparc_leon/irqtrap_fast.S
libgloss/sparc_leon/jiffies.c
libgloss/sparc_leon/kernel.c
libgloss/sparc_leon/kernel_context.S
libgloss/sparc_leon/kernel_debug.c
libgloss/sparc_leon/kernel_debug_var.c
libgloss/sparc_leon/kernel_mm.c
libgloss/sparc_leon/kernel_mutex.c
libgloss/sparc_leon/kernel_queue.c
libgloss/sparc_leon/kernel_sched.c
libgloss/sparc_leon/kernel_thread.c
libgloss/sparc_leon/lcpuinit.S
libgloss/sparc_leon/locore.S
libgloss/sparc_leon/locore_atexit.c
libgloss/sparc_leon/locore_clean.S
libgloss/sparc_leon/locore_mvt.S
libgloss/sparc_leon/locore_mvt_reset.S
libgloss/sparc_leon/locore_svt.S
libgloss/sparc_leon/locore_svt_reset.S
libgloss/sparc_leon/locore_svtdisp.S
libgloss/sparc_leon/locore_var.S
libgloss/sparc_leon/locore_var_svt.S
libgloss/sparc_leon/mmu_asm.S
libgloss/sparc_leon/mutex.c
libgloss/sparc_leon/nocache.S
libgloss/sparc_leon/pnpinit.c
libgloss/sparc_leon/pnpinit_malloc.c
libgloss/sparc_leon/pnpinit_simple.c
libgloss/sparc_leon/regwin.S
libgloss/sparc_leon/regwin_patch.c
libgloss/sparc_leon/regwin_slow.S
libgloss/sparc_leon/regwinflush.S
libgloss/sparc_leon/rtc.c
libgloss/sparc_leon/rtrap.S
libgloss/sparc_leon/rtrap_fast.S
libgloss/sparc_leon/stop.S
libgloss/sparc_leon/timer.c
libgloss/sparc_leon/times.c
libgloss/spu/Makefile.in
libgloss/spu/access.c
libgloss/spu/aclocal.m4
libgloss/spu/chdir.c
libgloss/spu/chmod.c
libgloss/spu/chown.c
libgloss/spu/close.c
libgloss/spu/configure
libgloss/spu/configure.in
libgloss/spu/conv_stat.c
libgloss/spu/crt0.S
libgloss/spu/crti.S
libgloss/spu/crtn.S
libgloss/spu/dirfuncs.c
libgloss/spu/dup.c
libgloss/spu/dup2.c
libgloss/spu/exit.c
libgloss/spu/fchdir.c
libgloss/spu/fchmod.c
libgloss/spu/fchown.c
libgloss/spu/fdatasync.c
libgloss/spu/fstat.c
libgloss/spu/fsync.c
libgloss/spu/ftruncate.c
libgloss/spu/getcwd.c
libgloss/spu/getitimer.c
libgloss/spu/getpagesize.c
libgloss/spu/getpid.c
libgloss/spu/gettimeofday.c
libgloss/spu/isatty.c
libgloss/spu/jsre.h
libgloss/spu/kill.c
libgloss/spu/lchown.c
libgloss/spu/link.c
libgloss/spu/linux_getpid.c
libgloss/spu/linux_gettid.c
libgloss/spu/linux_syscalls.c
libgloss/spu/lockf.c
libgloss/spu/lseek.c
libgloss/spu/lstat.c
libgloss/spu/mkdir.c
libgloss/spu/mknod.c
libgloss/spu/mkstemp.c
libgloss/spu/mktemp.c
libgloss/spu/mmap_eaddr.c
libgloss/spu/mremap_eaddr.c
libgloss/spu/msync_eaddr.c
libgloss/spu/munmap_eaddr.c
libgloss/spu/nanosleep.c
libgloss/spu/open.c
libgloss/spu/pread.c
libgloss/spu/pwrite.c
libgloss/spu/read.c
libgloss/spu/readlink.c
libgloss/spu/readv.c
libgloss/spu/rmdir.c
libgloss/spu/sbrk.c
libgloss/spu/sched_yield.c
libgloss/spu/setitimer.c
libgloss/spu/shm_open.c
libgloss/spu/shm_unlink.c
libgloss/spu/stat.c
libgloss/spu/symlink.c
libgloss/spu/sync.c
libgloss/spu/syscalls.c
libgloss/spu/times.c
libgloss/spu/truncate.c
libgloss/spu/umask.c
libgloss/spu/unlink.c
libgloss/spu/utime.c
libgloss/spu/utimes.c
libgloss/spu/write.c
libgloss/spu/writev.c
libgloss/stat.c
libgloss/syscall.h
libgloss/testsuite/Makefile.in
libgloss/testsuite/config/hppa.mt
libgloss/testsuite/config/m68k.mt
libgloss/testsuite/config/mips.mt
libgloss/testsuite/config/support.c
libgloss/testsuite/configure.in
libgloss/testsuite/lib/libgloss.exp
libgloss/testsuite/libgloss.all/.gdbinit
libgloss/testsuite/libgloss.all/Makefile.in
libgloss/testsuite/libgloss.all/array.c
libgloss/testsuite/libgloss.all/configure.in
libgloss/testsuite/libgloss.all/div.c
libgloss/testsuite/libgloss.all/double.c
libgloss/testsuite/libgloss.all/float.c
libgloss/testsuite/libgloss.all/func.c
libgloss/testsuite/libgloss.all/io.c
libgloss/testsuite/libgloss.all/math.c
libgloss/testsuite/libgloss.all/memory.c
libgloss/testsuite/libgloss.all/misc.c
libgloss/testsuite/libgloss.all/printf.c
libgloss/testsuite/libgloss.all/struct.c
libgloss/testsuite/libgloss.all/varargs.c
libgloss/testsuite/libgloss.all/varargs2.c
libgloss/tic6x/Makefile.in
libgloss/tic6x/aclocal.m4
libgloss/tic6x/configure
libgloss/tic6x/configure.in
libgloss/tic6x/crt0.S
libgloss/tic6x/getpid.c
libgloss/tic6x/kill.c
libgloss/tic6x/sbrk.c
libgloss/tic6x/syscalls.c
libgloss/unlink.c
libgloss/v850/Makefile.in
libgloss/v850/_exit.c
libgloss/v850/access.c
libgloss/v850/aclocal.m4
libgloss/v850/chmod.c
libgloss/v850/chown.c
libgloss/v850/close.c
libgloss/v850/configure
libgloss/v850/configure.in
libgloss/v850/creat.c
libgloss/v850/crt0.S
libgloss/v850/crt1.c
libgloss/v850/execv.c
libgloss/v850/execve.c
libgloss/v850/fork.c
libgloss/v850/fstat.c
libgloss/v850/getpid.c
libgloss/v850/gettime.c
libgloss/v850/isatty.c
libgloss/v850/kill.c
libgloss/v850/link.c
libgloss/v850/lseek.c
libgloss/v850/open.c
libgloss/v850/pipe.c
libgloss/v850/read.c
libgloss/v850/sbrk.c
libgloss/v850/sim.ld
libgloss/v850/stat.c
libgloss/v850/sys/syscall.h
libgloss/v850/time.c
libgloss/v850/times.c
libgloss/v850/trap.S
libgloss/v850/unlink.c
libgloss/v850/utime.c
libgloss/v850/wait.c
libgloss/v850/write.c
libgloss/wince/Makefile.am
libgloss/wince/Makefile.in
libgloss/wince/aclocal.m4
libgloss/wince/configure
libgloss/wince/configure.in
libgloss/write.c
libgloss/xc16x/Makefile.in
libgloss/xc16x/aclocal.m4
libgloss/xc16x/close.S
libgloss/xc16x/configure
libgloss/xc16x/configure.in
libgloss/xc16x/create.c
libgloss/xc16x/crt0.S
libgloss/xc16x/fstat.S
libgloss/xc16x/getchar1.c
libgloss/xc16x/isatty.c
libgloss/xc16x/lseek.c
libgloss/xc16x/mem-layout.c
libgloss/xc16x/misc.c
libgloss/xc16x/open.c
libgloss/xc16x/read.c
libgloss/xc16x/sbrk.c
libgloss/xc16x/sys/syscall.h
libgloss/xc16x/syscalls.c
libgloss/xc16x/trap_handle.c
libgloss/xc16x/write.c
libgloss/xstormy16/Makefile.in
libgloss/xstormy16/aclocal.m4
libgloss/xstormy16/close.c
libgloss/xstormy16/configure
libgloss/xstormy16/configure.in
libgloss/xstormy16/crt0.s
libgloss/xstormy16/crt0_stub.s
libgloss/xstormy16/crti.s
libgloss/xstormy16/crtn.s
libgloss/xstormy16/eva_app.c
libgloss/xstormy16/eva_app.ld
libgloss/xstormy16/eva_stub.ld
libgloss/xstormy16/fstat.c
libgloss/xstormy16/getpid.c
libgloss/xstormy16/isatty.c
libgloss/xstormy16/kill.c
libgloss/xstormy16/lseek.c
libgloss/xstormy16/open.c
libgloss/xstormy16/sim_high.ld
libgloss/xstormy16/sim_malloc_start.s
libgloss/xstormy16/sim_rom.ld
libgloss/xstormy16/stat.c
libgloss/xstormy16/syscalls.S
libgloss/xstormy16/syscalls.m4
libgloss/xstormy16/unlink.c
libgloss/xstormy16/xstormy16_stub.c
ltgcc.m4
newlib/libc/machine/aarch64/Makefile.am
newlib/libc/machine/aarch64/Makefile.in
newlib/libc/machine/aarch64/aclocal.m4
newlib/libc/machine/aarch64/configure
newlib/libc/machine/aarch64/configure.in
newlib/libc/machine/aarch64/machine/_types.h
newlib/libc/machine/aarch64/memcmp-stub.c
newlib/libc/machine/aarch64/memcmp.S
newlib/libc/machine/aarch64/memcpy-stub.c
newlib/libc/machine/aarch64/memcpy.S
newlib/libc/machine/aarch64/memmove-stub.c
newlib/libc/machine/aarch64/memmove.S
newlib/libc/machine/aarch64/memset-stub.c
newlib/libc/machine/aarch64/memset.S
newlib/libc/machine/aarch64/setjmp.S
newlib/libc/machine/aarch64/strcmp-stub.c
newlib/libc/machine/aarch64/strcmp.S
newlib/libc/machine/aarch64/strlen-stub.c
newlib/libc/machine/aarch64/strlen.S
newlib/libc/machine/aarch64/strncmp-stub.c
newlib/libc/machine/aarch64/strncmp.S
newlib/libc/machine/aarch64/strnlen-stub.c
newlib/libc/machine/aarch64/strnlen.S
newlib/libc/machine/epiphany/Makefile.am
newlib/libc/machine/epiphany/Makefile.in
newlib/libc/machine/epiphany/aclocal.m4
newlib/libc/machine/epiphany/configure
newlib/libc/machine/epiphany/configure.in
newlib/libc/machine/epiphany/machine/stdlib.h
newlib/libc/machine/epiphany/setjmp.S
newlib/libc/machine/msp430/Makefile.am
newlib/libc/machine/msp430/Makefile.in
newlib/libc/machine/msp430/aclocal.m4
newlib/libc/machine/msp430/configure
newlib/libc/machine/msp430/configure.in
newlib/libc/machine/msp430/setjmp.S
newlib/libc/machine/nds32/Makefile.am
newlib/libc/machine/nds32/Makefile.in
newlib/libc/machine/nds32/abort.c
newlib/libc/machine/nds32/aclocal.m4
newlib/libc/machine/nds32/configure
newlib/libc/machine/nds32/configure.in
newlib/libc/machine/nds32/memcpy.S
newlib/libc/machine/nds32/memset.S
newlib/libc/machine/nds32/setjmp.S
newlib/libc/machine/nds32/strcmp.S
newlib/libc/machine/nds32/strcpy.S
newlib/libc/machine/nios2/Makefile.am
newlib/libc/machine/nios2/Makefile.in
newlib/libc/machine/nios2/aclocal.m4
newlib/libc/machine/nios2/configure
newlib/libc/machine/nios2/configure.in
newlib/libc/machine/nios2/setjmp.s
newlib/libc/sys/epiphany/Makefile.am
newlib/libc/sys/epiphany/Makefile.in
newlib/libc/sys/epiphany/aclocal.m4
newlib/libc/sys/epiphany/configure
newlib/libc/sys/epiphany/configure.in
newlib/libc/sys/epiphany/e_printf.c
newlib/libm/machine/aarch64/Makefile.am
newlib/libm/machine/aarch64/Makefile.in
newlib/libm/machine/aarch64/aclocal.m4
newlib/libm/machine/aarch64/configure
newlib/libm/machine/aarch64/configure.in
newlib/libm/machine/aarch64/s_ceil.c
newlib/libm/machine/aarch64/s_floor.c
newlib/libm/machine/aarch64/s_fma.c
newlib/libm/machine/aarch64/s_fmax.c
newlib/libm/machine/aarch64/s_fmin.c
newlib/libm/machine/aarch64/s_llrint.c
newlib/libm/machine/aarch64/s_llround.c
newlib/libm/machine/aarch64/s_lrint.c
newlib/libm/machine/aarch64/s_lround.c
newlib/libm/machine/aarch64/s_nearbyint.c
newlib/libm/machine/aarch64/s_rint.c
newlib/libm/machine/aarch64/s_round.c
newlib/libm/machine/aarch64/s_trunc.c
newlib/libm/machine/aarch64/sf_ceil.c
newlib/libm/machine/aarch64/sf_floor.c
newlib/libm/machine/aarch64/sf_fma.c
newlib/libm/machine/aarch64/sf_fmax.c
newlib/libm/machine/aarch64/sf_fmin.c
newlib/libm/machine/aarch64/sf_llrint.c
newlib/libm/machine/aarch64/sf_llround.c
newlib/libm/machine/aarch64/sf_lrint.c
newlib/libm/machine/aarch64/sf_lround.c
newlib/libm/machine/aarch64/sf_nearbyint.c
newlib/libm/machine/aarch64/sf_rint.c
newlib/libm/machine/aarch64/sf_round.c
newlib/libm/machine/aarch64/sf_trunc.c
newlib/libm/machine/arm/Makefile.am
newlib/libm/machine/arm/Makefile.in
newlib/libm/machine/arm/aclocal.m4
newlib/libm/machine/arm/configure
newlib/libm/machine/arm/configure.in
newlib/libm/machine/arm/s_ceil.c
newlib/libm/machine/arm/s_floor.c
newlib/libm/machine/arm/s_nearbyint.c
newlib/libm/machine/arm/s_rint.c
newlib/libm/machine/arm/s_round.c
newlib/libm/machine/arm/s_trunc.c
newlib/libm/machine/arm/sf_ceil.c
newlib/libm/machine/arm/sf_floor.c
newlib/libm/machine/arm/sf_nearbyint.c
newlib/libm/machine/arm/sf_rint.c
newlib/libm/machine/arm/sf_round.c
newlib/libm/machine/arm/sf_trunc.c
texinfo/texinfo.tex
Diffstat (limited to 'libgloss/m32r/m32r-stub.c')
-rw-r--r-- | libgloss/m32r/m32r-stub.c | 1779 |
1 files changed, 0 insertions, 1779 deletions
diff --git a/libgloss/m32r/m32r-stub.c b/libgloss/m32r/m32r-stub.c deleted file mode 100644 index 4d54f72d6..000000000 --- a/libgloss/m32r/m32r-stub.c +++ /dev/null @@ -1,1779 +0,0 @@ -/**************************************************************************** - - THIS SOFTWARE IS NOT COPYRIGHTED - - HP offers the following for use in the public domain. HP makes no - warranty with regard to the software or it's performance and the - user accepts the software "AS IS" with all faults. - - HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD - TO THIS SOFTWARE INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - -****************************************************************************/ - -/**************************************************************************** - * Header: remcom.c,v 1.34 91/03/09 12:29:49 glenne Exp $ - * - * Module name: remcom.c $ - * Revision: 1.34 $ - * Date: 91/03/09 12:29:49 $ - * Contributor: Lake Stevens Instrument Division$ - * - * Description: low level support for gdb debugger. $ - * - * Considerations: only works on target hardware $ - * - * Written by: Glenn Engel $ - * ModuleState: Experimental $ - * - * NOTES: See Below $ - * - * Modified for M32R by Michael Snyder, Cygnus Support. - * - * To enable debugger support, two things need to happen. One, a - * call to set_debug_traps() is necessary in order to allow any breakpoints - * or error conditions to be properly intercepted and reported to gdb. - * Two, a breakpoint needs to be generated to begin communication. This - * is most easily accomplished by a call to breakpoint(). Breakpoint() - * simulates a breakpoint by executing a trap #1. - * - * The external function exceptionHandler() is - * used to attach a specific handler to a specific M32R vector number. - * It should use the same privilege level it runs at. It should - * install it as an interrupt gate so that interrupts are masked - * while the handler runs. - * - * Because gdb will sometimes write to the stack area to execute function - * calls, this program cannot rely on using the supervisor stack so it - * uses it's own stack area reserved in the int array remcomStack. - * - ************* - * - * The following gdb commands are supported: - * - * command function Return value - * - * g return the value of the CPU registers hex data or ENN - * G set the value of the CPU registers OK or ENN - * - * mAA..AA,LLLL Read LLLL bytes at address AA..AA hex data or ENN - * MAA..AA,LLLL: Write LLLL bytes at address AA.AA OK or ENN - * XAA..AA,LLLL: Write LLLL binary bytes at address OK or ENN - * AA..AA - * - * c Resume at current address SNN ( signal NN) - * cAA..AA Continue at address AA..AA SNN - * - * s Step one instruction SNN - * sAA..AA Step one instruction from AA..AA SNN - * - * k kill - * - * ? What was the last sigval ? SNN (signal NN) - * - * All commands and responses are sent with a packet which includes a - * checksum. A packet consists of - * - * $<packet info>#<checksum>. - * - * where - * <packet info> :: <characters representing the command or response> - * <checksum> :: <two hex digits computed as modulo 256 sum of <packetinfo>> - * - * When a packet is received, it is first acknowledged with either '+' or '-'. - * '+' indicates a successful transfer. '-' indicates a failed transfer. - * - * Example: - * - * Host: Reply: - * $m0,10#2a +$00010203040506070809101112131415#42 - * - ****************************************************************************/ - - -/************************************************************************ - * - * external low-level support routines - */ -extern void putDebugChar (); /* write a single character */ -extern int getDebugChar (); /* read and return a single char */ -extern void exceptionHandler (); /* assign an exception handler */ - -/***************************************************************************** - * BUFMAX defines the maximum number of characters in inbound/outbound buffers - * at least NUMREGBYTES*2 are needed for register packets - */ -#define BUFMAX 400 - -static char initialized; /* boolean flag. != 0 means we've been initialized */ - -int remote_debug; -/* debug > 0 prints ill-formed commands in valid packets & checksum errors */ - -static const unsigned char hexchars[] = "0123456789abcdef"; - -#define NUMREGS 24 - -/* Number of bytes of registers. */ -#define NUMREGBYTES (NUMREGS * 4) -enum regnames -{ R0, R1, R2, R3, R4, R5, R6, R7, - R8, R9, R10, R11, R12, R13, R14, R15, - PSW, CBR, SPI, SPU, BPC, PC, ACCL, ACCH -}; - -enum SYS_calls -{ - SYS_null, - SYS_exit, - SYS_open, - SYS_close, - SYS_read, - SYS_write, - SYS_lseek, - SYS_unlink, - SYS_getpid, - SYS_kill, - SYS_fstat, - SYS_sbrk, - SYS_fork, - SYS_execve, - SYS_wait4, - SYS_link, - SYS_chdir, - SYS_stat, - SYS_utime, - SYS_chown, - SYS_chmod, - SYS_time, - SYS_pipe -}; - -static int registers[NUMREGS]; - -#define STACKSIZE 8096 -static unsigned char remcomInBuffer[BUFMAX]; -static unsigned char remcomOutBuffer[BUFMAX]; -static int remcomStack[STACKSIZE / sizeof (int)]; -static int *stackPtr = &remcomStack[STACKSIZE / sizeof (int) - 1]; - -static unsigned int save_vectors[18]; /* previous exception vectors */ - -/* Indicate to caller of mem2hex or hex2mem that there has been an error. */ -static volatile int mem_err = 0; - -/* Store the vector number here (since GDB only gets the signal - number through the usual means, and that's not very specific). */ -int gdb_m32r_vector = -1; - -#if 0 -#include "syscall.h" /* for SYS_exit, SYS_write etc. */ -#endif - -/* Global entry points: - */ - -extern void handle_exception (int); -extern void set_debug_traps (void); -extern void breakpoint (void); - -/* Local functions: - */ - -static int computeSignal (int); -static void putpacket (unsigned char *); -static unsigned char *getpacket (void); - -static unsigned char *mem2hex (unsigned char *, unsigned char *, int, int); -static unsigned char *hex2mem (unsigned char *, unsigned char *, int, int); -static int hexToInt (unsigned char **, int *); -static unsigned char *bin2mem (unsigned char *, unsigned char *, int, int); -static void stash_registers (void); -static void restore_registers (void); -static int prepare_to_step (int); -static int finish_from_step (void); -static unsigned long crc32 (unsigned char *, int, unsigned long); - -static void gdb_error (char *, char *); -static int gdb_putchar (int), gdb_puts (char *), gdb_write (char *, int); - -static unsigned char *strcpy (unsigned char *, const unsigned char *); -static int strlen (const unsigned char *); - -/* - * This function does all command procesing for interfacing to gdb. - */ - -void -handle_exception (int exceptionVector) -{ - int sigval, stepping; - int addr, length, i; - unsigned char *ptr; - unsigned char buf[16]; - int binary; - - if (!finish_from_step ()) - return; /* "false step": let the target continue */ - - gdb_m32r_vector = exceptionVector; - - if (remote_debug) - { - mem2hex ((unsigned char *) &exceptionVector, buf, 4, 0); - gdb_error ("Handle exception %s, ", buf); - mem2hex ((unsigned char *) ®isters[PC], buf, 4, 0); - gdb_error ("PC == 0x%s\n", buf); - } - - /* reply to host that an exception has occurred */ - sigval = computeSignal (exceptionVector); - - ptr = remcomOutBuffer; - - *ptr++ = 'T'; /* notify gdb with signo, PC, FP and SP */ - *ptr++ = hexchars[sigval >> 4]; - *ptr++ = hexchars[sigval & 0xf]; - - *ptr++ = hexchars[PC >> 4]; - *ptr++ = hexchars[PC & 0xf]; - *ptr++ = ':'; - ptr = mem2hex ((unsigned char *) ®isters[PC], ptr, 4, 0); /* PC */ - *ptr++ = ';'; - - *ptr++ = hexchars[R13 >> 4]; - *ptr++ = hexchars[R13 & 0xf]; - *ptr++ = ':'; - ptr = mem2hex ((unsigned char *) ®isters[R13], ptr, 4, 0); /* FP */ - *ptr++ = ';'; - - *ptr++ = hexchars[R15 >> 4]; - *ptr++ = hexchars[R15 & 0xf]; - *ptr++ = ':'; - ptr = mem2hex ((unsigned char *) ®isters[R15], ptr, 4, 0); /* SP */ - *ptr++ = ';'; - *ptr++ = 0; - - if (exceptionVector == 0) /* simulated SYS call stuff */ - { - mem2hex ((unsigned char *) ®isters[PC], buf, 4, 0); - switch (registers[R0]) - { - case SYS_exit: - gdb_error ("Target program has exited at %s\n", buf); - ptr = remcomOutBuffer; - *ptr++ = 'W'; - sigval = registers[R1] & 0xff; - *ptr++ = hexchars[sigval >> 4]; - *ptr++ = hexchars[sigval & 0xf]; - *ptr++ = 0; - break; - case SYS_open: - gdb_error ("Target attempts SYS_open call at %s\n", buf); - break; - case SYS_close: - gdb_error ("Target attempts SYS_close call at %s\n", buf); - break; - case SYS_read: - gdb_error ("Target attempts SYS_read call at %s\n", buf); - break; - case SYS_write: - if (registers[R1] == 1 || /* write to stdout */ - registers[R1] == 2) /* write to stderr */ - { /* (we can do that) */ - registers[R0] = - gdb_write ((void *) registers[R2], registers[R3]); - return; - } - else - gdb_error ("Target attempts SYS_write call at %s\n", buf); - break; - case SYS_lseek: - gdb_error ("Target attempts SYS_lseek call at %s\n", buf); - break; - case SYS_unlink: - gdb_error ("Target attempts SYS_unlink call at %s\n", buf); - break; - case SYS_getpid: - gdb_error ("Target attempts SYS_getpid call at %s\n", buf); - break; - case SYS_kill: - gdb_error ("Target attempts SYS_kill call at %s\n", buf); - break; - case SYS_fstat: - gdb_error ("Target attempts SYS_fstat call at %s\n", buf); - break; - default: - gdb_error ("Target attempts unknown SYS call at %s\n", buf); - break; - } - } - - putpacket (remcomOutBuffer); - - stepping = 0; - - while (1 == 1) - { - remcomOutBuffer[0] = 0; - ptr = getpacket (); - binary = 0; - switch (*ptr++) - { - default: /* Unknown code. Return an empty reply message. */ - break; - case 'R': - if (hexToInt (&ptr, &addr)) - registers[PC] = addr; - strcpy (remcomOutBuffer, "OK"); - break; - case '!': - strcpy (remcomOutBuffer, "OK"); - break; - case 'X': /* XAA..AA,LLLL:<binary data>#cs */ - binary = 1; - case 'M': /* MAA..AA,LLLL: Write LLLL bytes at address AA.AA return OK */ - /* TRY TO READ '%x,%x:'. IF SUCCEED, SET PTR = 0 */ - { - if (hexToInt (&ptr, &addr)) - if (*(ptr++) == ',') - if (hexToInt (&ptr, &length)) - if (*(ptr++) == ':') - { - mem_err = 0; - if (binary) - bin2mem (ptr, (unsigned char *) addr, length, 1); - else - hex2mem (ptr, (unsigned char *) addr, length, 1); - if (mem_err) - { - strcpy (remcomOutBuffer, "E03"); - gdb_error ("memory fault", ""); - } - else - { - strcpy (remcomOutBuffer, "OK"); - } - ptr = 0; - } - if (ptr) - { - strcpy (remcomOutBuffer, "E02"); - } - } - break; - case 'm': /* mAA..AA,LLLL Read LLLL bytes at address AA..AA */ - /* TRY TO READ %x,%x. IF SUCCEED, SET PTR = 0 */ - if (hexToInt (&ptr, &addr)) - if (*(ptr++) == ',') - if (hexToInt (&ptr, &length)) - { - ptr = 0; - mem_err = 0; - mem2hex ((unsigned char *) addr, remcomOutBuffer, length, - 1); - if (mem_err) - { - strcpy (remcomOutBuffer, "E03"); - gdb_error ("memory fault", ""); - } - } - if (ptr) - { - strcpy (remcomOutBuffer, "E01"); - } - break; - case '?': - remcomOutBuffer[0] = 'S'; - remcomOutBuffer[1] = hexchars[sigval >> 4]; - remcomOutBuffer[2] = hexchars[sigval % 16]; - remcomOutBuffer[3] = 0; - break; - case 'd': - remote_debug = !(remote_debug); /* toggle debug flag */ - break; - case 'g': /* return the value of the CPU registers */ - mem2hex ((unsigned char *) registers, remcomOutBuffer, NUMREGBYTES, - 0); - break; - case 'P': /* set the value of a single CPU register - return OK */ - { - int regno; - - if (hexToInt (&ptr, ®no) && *ptr++ == '=') - if (regno >= 0 && regno < NUMREGS) - { - int stackmode; - - hex2mem (ptr, (unsigned char *) ®isters[regno], 4, 0); - /* - * Since we just changed a single CPU register, let's - * make sure to keep the several stack pointers consistant. - */ - stackmode = registers[PSW] & 0x80; - if (regno == R15) /* stack pointer changed */ - { /* need to change SPI or SPU */ - if (stackmode == 0) - registers[SPI] = registers[R15]; - else - registers[SPU] = registers[R15]; - } - else if (regno == SPU) /* "user" stack pointer changed */ - { - if (stackmode != 0) /* stack in user mode: copy SP */ - registers[R15] = registers[SPU]; - } - else if (regno == SPI) /* "interrupt" stack pointer changed */ - { - if (stackmode == 0) /* stack in interrupt mode: copy SP */ - registers[R15] = registers[SPI]; - } - else if (regno == PSW) /* stack mode may have changed! */ - { /* force SP to either SPU or SPI */ - if (stackmode == 0) /* stack in user mode */ - registers[R15] = registers[SPI]; - else /* stack in interrupt mode */ - registers[R15] = registers[SPU]; - } - strcpy (remcomOutBuffer, "OK"); - break; - } - strcpy (remcomOutBuffer, "E01"); - break; - } - case 'G': /* set the value of the CPU registers - return OK */ - hex2mem (ptr, (unsigned char *) registers, NUMREGBYTES, 0); - strcpy (remcomOutBuffer, "OK"); - break; - case 's': /* sAA..AA Step one instruction from AA..AA(optional) */ - stepping = 1; - case 'c': /* cAA..AA Continue from address AA..AA(optional) */ - /* try to read optional parameter, pc unchanged if no parm */ - if (hexToInt (&ptr, &addr)) - registers[PC] = addr; - - if (stepping) /* single-stepping */ - { - if (!prepare_to_step (0)) /* set up for single-step */ - { - /* prepare_to_step has already emulated the target insn: - Send SIGTRAP to gdb, don't resume the target at all. */ - ptr = remcomOutBuffer; - *ptr++ = 'T'; /* Simulate stopping with SIGTRAP */ - *ptr++ = '0'; - *ptr++ = '5'; - - *ptr++ = hexchars[PC >> 4]; /* send PC */ - *ptr++ = hexchars[PC & 0xf]; - *ptr++ = ':'; - ptr = mem2hex ((unsigned char *) ®isters[PC], ptr, 4, 0); - *ptr++ = ';'; - - *ptr++ = hexchars[R13 >> 4]; /* send FP */ - *ptr++ = hexchars[R13 & 0xf]; - *ptr++ = ':'; - ptr = - mem2hex ((unsigned char *) ®isters[R13], ptr, 4, 0); - *ptr++ = ';'; - - *ptr++ = hexchars[R15 >> 4]; /* send SP */ - *ptr++ = hexchars[R15 & 0xf]; - *ptr++ = ':'; - ptr = - mem2hex ((unsigned char *) ®isters[R15], ptr, 4, 0); - *ptr++ = ';'; - *ptr++ = 0; - - break; - } - } - else /* continuing, not single-stepping */ - { - /* OK, about to do a "continue". First check to see if the - target pc is on an odd boundary (second instruction in the - word). If so, we must do a single-step first, because - ya can't jump or return back to an odd boundary! */ - if ((registers[PC] & 2) != 0) - prepare_to_step (1); - } - - return; - - case 'D': /* Detach */ -#if 0 - /* I am interpreting this to mean, release the board from control - by the remote stub. To do this, I am restoring the original - (or at least previous) exception vectors. - */ - for (i = 0; i < 18; i++) - exceptionHandler (i, save_vectors[i]); - putpacket ("OK"); - return; /* continue the inferior */ -#else - strcpy (remcomOutBuffer, "OK"); - break; -#endif - case 'q': - if (*ptr++ == 'C' && - *ptr++ == 'R' && *ptr++ == 'C' && *ptr++ == ':') - { - unsigned long start, len, our_crc; - - if (hexToInt (&ptr, (int *) &start) && - *ptr++ == ',' && hexToInt (&ptr, (int *) &len)) - { - remcomOutBuffer[0] = 'C'; - our_crc = crc32 ((unsigned char *) start, len, 0xffffffff); - mem2hex ((char *) &our_crc, - &remcomOutBuffer[1], sizeof (long), 0); - } /* else do nothing */ - } /* else do nothing */ - break; - - case 'k': /* kill the program */ - continue; - } /* switch */ - - /* reply to the request */ - putpacket (remcomOutBuffer); - } -} - -/* qCRC support */ - -/* Table used by the crc32 function to calcuate the checksum. */ -static unsigned long crc32_table[256] = { 0, 0 }; - -static unsigned long -crc32 (unsigned char *buf, int len, unsigned long crc) -{ - if (!crc32_table[1]) - { - /* Initialize the CRC table and the decoding table. */ - int i, j; - unsigned long c; - - for (i = 0; i < 256; i++) - { - for (c = i << 24, j = 8; j > 0; --j) - c = c & 0x80000000 ? (c << 1) ^ 0x04c11db7 : (c << 1); - crc32_table[i] = c; - } - } - - while (len--) - { - crc = (crc << 8) ^ crc32_table[((crc >> 24) ^ *buf) & 255]; - buf++; - } - return crc; -} - -static int -hex (unsigned char ch) -{ - if ((ch >= 'a') && (ch <= 'f')) - return (ch - 'a' + 10); - if ((ch >= '0') && (ch <= '9')) - return (ch - '0'); - if ((ch >= 'A') && (ch <= 'F')) - return (ch - 'A' + 10); - return (-1); -} - -/* scan for the sequence $<data>#<checksum> */ - -unsigned char * -getpacket (void) -{ - unsigned char *buffer = &remcomInBuffer[0]; - unsigned char checksum; - unsigned char xmitcsum; - int count; - char ch; - - while (1) - { - /* wait around for the start character, ignore all other characters */ - while ((ch = getDebugChar ()) != '$') - ; - - retry: - checksum = 0; - xmitcsum = -1; - count = 0; - - /* now, read until a # or end of buffer is found */ - while (count < BUFMAX - 1) - { - ch = getDebugChar (); - if (ch == '$') - goto retry; - if (ch == '#') - break; - checksum = checksum + ch; - buffer[count] = ch; - count = count + 1; - } - buffer[count] = 0; - - if (ch == '#') - { - ch = getDebugChar (); - xmitcsum = hex (ch) << 4; - ch = getDebugChar (); - xmitcsum += hex (ch); - - if (checksum != xmitcsum) - { - if (remote_debug) - { - unsigned char buf[16]; - - mem2hex ((unsigned char *) &checksum, buf, 4, 0); - gdb_error ("Bad checksum: my count = %s, ", buf); - mem2hex ((unsigned char *) &xmitcsum, buf, 4, 0); - gdb_error ("sent count = %s\n", buf); - gdb_error (" -- Bad buffer: \"%s\"\n", buffer); - } - putDebugChar ('-'); /* failed checksum */ - } - else - { - putDebugChar ('+'); /* successful transfer */ - - /* if a sequence char is present, reply the sequence ID */ - if (buffer[2] == ':') - { - putDebugChar (buffer[0]); - putDebugChar (buffer[1]); - - return &buffer[3]; - } - - return &buffer[0]; - } - } - } -} - -/* send the packet in buffer. */ - -static void -putpacket (unsigned char *buffer) -{ - unsigned char checksum; - int count; - char ch; - - /* $<packet info>#<checksum>. */ - do - { - putDebugChar ('$'); - checksum = 0; - count = 0; - - while (ch = buffer[count]) - { - putDebugChar (ch); - checksum += ch; - count += 1; - } - putDebugChar ('#'); - putDebugChar (hexchars[checksum >> 4]); - putDebugChar (hexchars[checksum % 16]); - } - while (getDebugChar () != '+'); -} - -/* Address of a routine to RTE to if we get a memory fault. */ - -static void (*volatile mem_fault_routine) () = 0; - -static void -set_mem_err (void) -{ - mem_err = 1; -} - -/* Check the address for safe access ranges. As currently defined, - this routine will reject the "expansion bus" address range(s). - To make those ranges useable, someone must implement code to detect - whether there's anything connected to the expansion bus. */ - -static int -mem_safe (unsigned char *addr) -{ -#define BAD_RANGE_ONE_START ((unsigned char *) 0x600000) -#define BAD_RANGE_ONE_END ((unsigned char *) 0xa00000) -#define BAD_RANGE_TWO_START ((unsigned char *) 0xff680000) -#define BAD_RANGE_TWO_END ((unsigned char *) 0xff800000) - - if (addr < BAD_RANGE_ONE_START) - return 1; /* safe */ - if (addr < BAD_RANGE_ONE_END) - return 0; /* unsafe */ - if (addr < BAD_RANGE_TWO_START) - return 1; /* safe */ - if (addr < BAD_RANGE_TWO_END) - return 0; /* unsafe */ -} - -/* These are separate functions so that they are so short and sweet - that the compiler won't save any registers (if there is a fault - to mem_fault, they won't get restored, so there better not be any - saved). */ -static int -get_char (unsigned char *addr) -{ -#if 1 - if (mem_fault_routine && !mem_safe (addr)) - { - mem_fault_routine (); - return 0; - } -#endif - return *addr; -} - -static void -set_char (unsigned char *addr, unsigned char val) -{ -#if 1 - if (mem_fault_routine && !mem_safe (addr)) - { - mem_fault_routine (); - return; - } -#endif - *addr = val; -} - -/* Convert the memory pointed to by mem into hex, placing result in buf. - Return a pointer to the last char put in buf (null). - If MAY_FAULT is non-zero, then we should set mem_err in response to - a fault; if zero treat a fault like any other fault in the stub. */ - -static unsigned char * -mem2hex (unsigned char *mem, unsigned char *buf, int count, int may_fault) -{ - int i; - unsigned char ch; - - if (may_fault) - mem_fault_routine = set_mem_err; - for (i = 0; i < count; i++) - { - ch = get_char (mem++); - if (may_fault && mem_err) - return (buf); - *buf++ = hexchars[ch >> 4]; - *buf++ = hexchars[ch % 16]; - } - *buf = 0; - if (may_fault) - mem_fault_routine = 0; - return (buf); -} - -/* Convert the hex array pointed to by buf into binary to be placed in mem. - Return a pointer to the character AFTER the last byte written. */ - -static unsigned char * -hex2mem (unsigned char *buf, unsigned char *mem, int count, int may_fault) -{ - int i; - unsigned char ch; - - if (may_fault) - mem_fault_routine = set_mem_err; - for (i = 0; i < count; i++) - { - ch = hex (*buf++) << 4; - ch = ch + hex (*buf++); - set_char (mem++, ch); - if (may_fault && mem_err) - return (mem); - } - if (may_fault) - mem_fault_routine = 0; - return (mem); -} - -/* Convert the binary stream in BUF to memory. - - Gdb will escape $, #, and the escape char (0x7d). - COUNT is the total number of bytes to write into - memory. */ -static unsigned char * -bin2mem (unsigned char *buf, unsigned char *mem, int count, int may_fault) -{ - int i; - unsigned char ch; - - if (may_fault) - mem_fault_routine = set_mem_err; - for (i = 0; i < count; i++) - { - /* Check for any escaped characters. Be paranoid and - only unescape chars that should be escaped. */ - if (*buf == 0x7d) - { - switch (*(buf + 1)) - { - case 0x3: /* # */ - case 0x4: /* $ */ - case 0x5d: /* escape char */ - buf++; - *buf |= 0x20; - break; - default: - /* nothing */ - break; - } - } - - set_char (mem++, *buf++); - - if (may_fault && mem_err) - return mem; - } - - if (may_fault) - mem_fault_routine = 0; - return mem; -} - -/* this function takes the m32r exception vector and attempts to - translate this number into a unix compatible signal value */ - -static int -computeSignal (int exceptionVector) -{ - int sigval; - switch (exceptionVector) - { - case 0: - sigval = 23; - break; /* I/O trap */ - case 1: - sigval = 5; - break; /* breakpoint */ - case 2: - sigval = 5; - break; /* breakpoint */ - case 3: - sigval = 5; - break; /* breakpoint */ - case 4: - sigval = 5; - break; /* breakpoint */ - case 5: - sigval = 5; - break; /* breakpoint */ - case 6: - sigval = 5; - break; /* breakpoint */ - case 7: - sigval = 5; - break; /* breakpoint */ - case 8: - sigval = 5; - break; /* breakpoint */ - case 9: - sigval = 5; - break; /* breakpoint */ - case 10: - sigval = 5; - break; /* breakpoint */ - case 11: - sigval = 5; - break; /* breakpoint */ - case 12: - sigval = 5; - break; /* breakpoint */ - case 13: - sigval = 5; - break; /* breakpoint */ - case 14: - sigval = 5; - break; /* breakpoint */ - case 15: - sigval = 5; - break; /* breakpoint */ - case 16: - sigval = 10; - break; /* BUS ERROR (alignment) */ - case 17: - sigval = 2; - break; /* INTerrupt */ - default: - sigval = 7; - break; /* "software generated" */ - } - return (sigval); -} - -/**********************************************/ -/* WHILE WE FIND NICE HEX CHARS, BUILD AN INT */ -/* RETURN NUMBER OF CHARS PROCESSED */ -/**********************************************/ -static int -hexToInt (unsigned char **ptr, int *intValue) -{ - int numChars = 0; - int hexValue; - - *intValue = 0; - while (**ptr) - { - hexValue = hex (**ptr); - if (hexValue >= 0) - { - *intValue = (*intValue << 4) | hexValue; - numChars++; - } - else - break; - (*ptr)++; - } - return (numChars); -} - -/* - Table of branch instructions: - - 10B6 RTE return from trap or exception - 1FCr JMP jump - 1ECr JL jump and link - 7Fxx BRA branch - FFxxxxxx BRA branch (long) - B09rxxxx BNEZ branch not-equal-zero - Br1rxxxx BNE branch not-equal - 7Dxx BNC branch not-condition - FDxxxxxx BNC branch not-condition (long) - B0Arxxxx BLTZ branch less-than-zero - B0Crxxxx BLEZ branch less-equal-zero - 7Exx BL branch and link - FExxxxxx BL branch and link (long) - B0Drxxxx BGTZ branch greater-than-zero - B0Brxxxx BGEZ branch greater-equal-zero - B08rxxxx BEQZ branch equal-zero - Br0rxxxx BEQ branch equal - 7Cxx BC branch condition - FCxxxxxx BC branch condition (long) - */ - -static int -isShortBranch (unsigned char *instr) -{ - unsigned char instr0 = instr[0] & 0x7F; /* mask off high bit */ - - if (instr0 == 0x10 && instr[1] == 0xB6) /* RTE */ - return 1; /* return from trap or exception */ - - if (instr0 == 0x1E || instr0 == 0x1F) /* JL or JMP */ - if ((instr[1] & 0xF0) == 0xC0) - return 2; /* jump thru a register */ - - if (instr0 == 0x7C || instr0 == 0x7D || /* BC, BNC, BL, BRA */ - instr0 == 0x7E || instr0 == 0x7F) - return 3; /* eight bit PC offset */ - - return 0; -} - -static int -isLongBranch (unsigned char *instr) -{ - if (instr[0] == 0xFC || instr[0] == 0xFD || /* BRA, BNC, BL, BC */ - instr[0] == 0xFE || instr[0] == 0xFF) /* 24 bit relative */ - return 4; - if ((instr[0] & 0xF0) == 0xB0) /* 16 bit relative */ - { - if ((instr[1] & 0xF0) == 0x00 || /* BNE, BEQ */ - (instr[1] & 0xF0) == 0x10) - return 5; - if (instr[0] == 0xB0) /* BNEZ, BLTZ, BLEZ, BGTZ, BGEZ, BEQZ */ - if ((instr[1] & 0xF0) == 0x80 || (instr[1] & 0xF0) == 0x90 || - (instr[1] & 0xF0) == 0xA0 || (instr[1] & 0xF0) == 0xB0 || - (instr[1] & 0xF0) == 0xC0 || (instr[1] & 0xF0) == 0xD0) - return 6; - } - return 0; -} - -/* if address is NOT on a 4-byte boundary, or high-bit of instr is zero, - then it's a 2-byte instruction, else it's a 4-byte instruction. */ - -#define INSTRUCTION_SIZE(addr) \ - ((((int) addr & 2) || (((unsigned char *) addr)[0] & 0x80) == 0) ? 2 : 4) - -static int -isBranch (unsigned char *instr) -{ - if (INSTRUCTION_SIZE (instr) == 2) - return isShortBranch (instr); - else - return isLongBranch (instr); -} - -static int -willBranch (unsigned char *instr, int branchCode) -{ - switch (branchCode) - { - case 0: - return 0; /* not a branch */ - case 1: - return 1; /* RTE */ - case 2: - return 1; /* JL or JMP */ - case 3: /* BC, BNC, BL, BRA (short) */ - case 4: /* BC, BNC, BL, BRA (long) */ - switch (instr[0] & 0x0F) - { - case 0xC: /* Branch if Condition Register */ - return (registers[CBR] != 0); - case 0xD: /* Branch if NOT Condition Register */ - return (registers[CBR] == 0); - case 0xE: /* Branch and Link */ - case 0xF: /* Branch (unconditional) */ - return 1; - default: /* oops? */ - return 0; - } - case 5: /* BNE, BEQ */ - switch (instr[1] & 0xF0) - { - case 0x00: /* Branch if r1 equal to r2 */ - return (registers[instr[0] & 0x0F] == registers[instr[1] & 0x0F]); - case 0x10: /* Branch if r1 NOT equal to r2 */ - return (registers[instr[0] & 0x0F] != registers[instr[1] & 0x0F]); - default: /* oops? */ - return 0; - } - case 6: /* BNEZ, BLTZ, BLEZ, BGTZ, BGEZ ,BEQZ */ - switch (instr[1] & 0xF0) - { - case 0x80: /* Branch if reg equal to zero */ - return (registers[instr[1] & 0x0F] == 0); - case 0x90: /* Branch if reg NOT equal to zero */ - return (registers[instr[1] & 0x0F] != 0); - case 0xA0: /* Branch if reg less than zero */ - return (registers[instr[1] & 0x0F] < 0); - case 0xB0: /* Branch if reg greater or equal to zero */ - return (registers[instr[1] & 0x0F] >= 0); - case 0xC0: /* Branch if reg less than or equal to zero */ - return (registers[instr[1] & 0x0F] <= 0); - case 0xD0: /* Branch if reg greater than zero */ - return (registers[instr[1] & 0x0F] > 0); - default: /* oops? */ - return 0; - } - default: /* oops? */ - return 0; - } -} - -static int -branchDestination (unsigned char *instr, int branchCode) -{ - switch (branchCode) - { - default: - case 0: /* not a branch */ - return 0; - case 1: /* RTE */ - return registers[BPC] & ~3; /* pop BPC into PC */ - case 2: /* JL or JMP */ - return registers[instr[1] & 0x0F] & ~3; /* jump thru a register */ - case 3: /* BC, BNC, BL, BRA (short, 8-bit relative offset) */ - return (((int) instr) & ~3) + ((char) instr[1] << 2); - case 4: /* BC, BNC, BL, BRA (long, 24-bit relative offset) */ - return ((int) instr + - ((((char) instr[1] << 16) | (instr[2] << 8) | (instr[3])) << - 2)); - case 5: /* BNE, BEQ (16-bit relative offset) */ - case 6: /* BNEZ, BLTZ, BLEZ, BGTZ, BGEZ ,BEQZ (ditto) */ - return ((int) instr + ((((char) instr[2] << 8) | (instr[3])) << 2)); - } - - /* An explanatory note: in the last three return expressions, I have - cast the most-significant byte of the return offset to char. - What this accomplishes is sign extension. If the other - less-significant bytes were signed as well, they would get sign - extended too and, if negative, their leading bits would clobber - the bits of the more-significant bytes ahead of them. There are - other ways I could have done this, but sign extension from - odd-sized integers is always a pain. */ -} - -static void -branchSideEffects (unsigned char *instr, int branchCode) -{ - switch (branchCode) - { - case 1: /* RTE */ - return; /* I <THINK> this is already handled... */ - case 2: /* JL (or JMP) */ - case 3: /* BL (or BC, BNC, BRA) */ - case 4: - if ((instr[0] & 0x0F) == 0x0E) /* branch/jump and link */ - registers[R14] = (registers[PC] & ~3) + 4; - return; - default: /* any other branch has no side effects */ - return; - } -} - -static struct STEPPING_CONTEXT -{ - int stepping; /* true when we've started a single-step */ - unsigned long target_addr; /* the instr we're trying to execute */ - unsigned long target_size; /* the size of the target instr */ - unsigned long noop_addr; /* where we've inserted a no-op, if any */ - unsigned long trap1_addr; /* the trap following the target instr */ - unsigned long trap2_addr; /* the trap at a branch destination, if any */ - unsigned short noop_save; /* instruction overwritten by our no-op */ - unsigned short trap1_save; /* instruction overwritten by trap1 */ - unsigned short trap2_save; /* instruction overwritten by trap2 */ - unsigned short continue_p; /* true if NOT returning to gdb after step */ -} stepping; - -/* Function: prepare_to_step - Called from handle_exception to prepare the user program to single-step. - Places a trap instruction after the target instruction, with special - extra handling for branch instructions and for instructions in the - second half-word of a word. - - Returns: True if we should actually execute the instruction; - False if we are going to emulate executing the instruction, - in which case we simply report to GDB that the instruction - has already been executed. */ - -#define TRAP1 0x10f1; /* trap #1 instruction */ -#define NOOP 0x7000; /* noop instruction */ - -static unsigned short trap1 = TRAP1; -static unsigned short noop = NOOP; - -static int -prepare_to_step (continue_p) - int continue_p; /* if this isn't REALLY a single-step (see below) */ -{ - unsigned long pc = registers[PC]; - int branchCode = isBranch ((unsigned char *) pc); - unsigned char *p; - - /* zero out the stepping context - (paranoia -- it should already be zeroed) */ - for (p = (unsigned char *) &stepping; - p < ((unsigned char *) &stepping) + sizeof (stepping); p++) - *p = 0; - - if (branchCode != 0) /* next instruction is a branch */ - { - branchSideEffects ((unsigned char *) pc, branchCode); - if (willBranch ((unsigned char *) pc, branchCode)) - registers[PC] = branchDestination ((unsigned char *) pc, branchCode); - else - registers[PC] = pc + INSTRUCTION_SIZE (pc); - return 0; /* branch "executed" -- just notify GDB */ - } - else if (((int) pc & 2) != 0) /* "second-slot" instruction */ - { - /* insert no-op before pc */ - stepping.noop_addr = pc - 2; - stepping.noop_save = *(unsigned short *) stepping.noop_addr; - *(unsigned short *) stepping.noop_addr = noop; - /* insert trap after pc */ - stepping.trap1_addr = pc + 2; - stepping.trap1_save = *(unsigned short *) stepping.trap1_addr; - *(unsigned short *) stepping.trap1_addr = trap1; - } - else /* "first-slot" instruction */ - { - /* insert trap after pc */ - stepping.trap1_addr = pc + INSTRUCTION_SIZE (pc); - stepping.trap1_save = *(unsigned short *) stepping.trap1_addr; - *(unsigned short *) stepping.trap1_addr = trap1; - } - /* "continue_p" means that we are actually doing a continue, and not - being requested to single-step by GDB. Sometimes we have to do - one single-step before continuing, because the PC is on a half-word - boundary. There's no way to simply resume at such an address. */ - stepping.continue_p = continue_p; - stepping.stepping = 1; /* starting a single-step */ - return 1; -} - -/* Function: finish_from_step - Called from handle_exception to finish up when the user program - returns from a single-step. Replaces the instructions that had - been overwritten by traps or no-ops, - - Returns: True if we should notify GDB that the target stopped. - False if we only single-stepped because we had to before we - could continue (ie. we were trying to continue at a - half-word boundary). In that case don't notify GDB: - just "continue continuing". */ - -static int -finish_from_step (void) -{ - if (stepping.stepping) /* anything to do? */ - { - int continue_p = stepping.continue_p; - unsigned char *p; - - if (stepping.noop_addr) /* replace instr "under" our no-op */ - *(unsigned short *) stepping.noop_addr = stepping.noop_save; - if (stepping.trap1_addr) /* replace instr "under" our trap */ - *(unsigned short *) stepping.trap1_addr = stepping.trap1_save; - if (stepping.trap2_addr) /* ditto our other trap, if any */ - *(unsigned short *) stepping.trap2_addr = stepping.trap2_save; - - for (p = (unsigned char *) &stepping; /* zero out the stepping context */ - p < ((unsigned char *) &stepping) + sizeof (stepping); p++) - *p = 0; - - return !(continue_p); - } - else /* we didn't single-step, therefore this must be a legitimate stop */ - return 1; -} - -struct PSWreg -{ /* separate out the bit flags in the PSW register */ - int pad1:16; - int bsm:1; - int bie:1; - int pad2:5; - int bc:1; - int sm:1; - int ie:1; - int pad3:5; - int c:1; -} *psw; - -/* Upon entry the value for LR to save has been pushed. - We unpush that so that the value for the stack pointer saved is correct. - Upon entry, all other registers are assumed to have not been modified - since the interrupt/trap occured. */ - -asm ("\n\ -stash_registers:\n\ - push r0\n\ - push r1\n\ - seth r1, #shigh(registers)\n\ - add3 r1, r1, #low(registers)\n\ - pop r0 ; r1\n\ - st r0, @(4,r1)\n\ - pop r0 ; r0\n\ - st r0, @r1\n\ - addi r1, #4 ; only add 4 as subsequent saves are `pre inc'\n\ - st r2, @+r1\n\ - st r3, @+r1\n\ - st r4, @+r1\n\ - st r5, @+r1\n\ - st r6, @+r1\n\ - st r7, @+r1\n\ - st r8, @+r1\n\ - st r9, @+r1\n\ - st r10, @+r1\n\ - st r11, @+r1\n\ - st r12, @+r1\n\ - st r13, @+r1 ; fp\n\ - pop r0 ; lr (r14)\n\ - st r0, @+r1\n\ - st sp, @+r1 ; sp contains right value at this point\n\ - mvfc r0, cr0\n\ - st r0, @+r1 ; cr0 == PSW\n\ - mvfc r0, cr1\n\ - st r0, @+r1 ; cr1 == CBR\n\ - mvfc r0, cr2\n\ - st r0, @+r1 ; cr2 == SPI\n\ - mvfc r0, cr3\n\ - st r0, @+r1 ; cr3 == SPU\n\ - mvfc r0, cr6\n\ - st r0, @+r1 ; cr6 == BPC\n\ - st r0, @+r1 ; PC == BPC\n\ - mvfaclo r0\n\ - st r0, @+r1 ; ACCL\n\ - mvfachi r0\n\ - st r0, @+r1 ; ACCH\n\ - jmp lr"); - -/* C routine to clean up what stash_registers did. - It is called after calling stash_registers. - This is separate from stash_registers as we want to do this in C - but doing stash_registers in C isn't straightforward. */ - -static void -cleanup_stash (void) -{ - psw = (struct PSWreg *) ®isters[PSW]; /* fields of PSW register */ - psw->sm = psw->bsm; /* fix up pre-trap values of psw fields */ - psw->ie = psw->bie; - psw->c = psw->bc; - registers[CBR] = psw->bc; /* fix up pre-trap "C" register */ - -#if 0 /* FIXME: Was in previous version. Necessary? - (Remember that we use the "rte" insn to return from the - trap/interrupt so the values of bsm, bie, bc are important. */ - psw->bsm = psw->bie = psw->bc = 0; /* zero post-trap values */ -#endif - - /* FIXME: Copied from previous version. This can probably be deleted - since methinks stash_registers has already done this. */ - registers[PC] = registers[BPC]; /* pre-trap PC */ - - /* FIXME: Copied from previous version. Necessary? */ - if (psw->sm) /* copy R15 into (psw->sm ? SPU : SPI) */ - registers[SPU] = registers[R15]; - else - registers[SPI] = registers[R15]; -} - -asm ("\n\ -restore_and_return:\n\ - seth r0, #shigh(registers+8)\n\ - add3 r0, r0, #low(registers+8)\n\ - ld r2, @r0+ ; restore r2\n\ - ld r3, @r0+ ; restore r3\n\ - ld r4, @r0+ ; restore r4\n\ - ld r5, @r0+ ; restore r5\n\ - ld r6, @r0+ ; restore r6\n\ - ld r7, @r0+ ; restore r7\n\ - ld r8, @r0+ ; restore r8\n\ - ld r9, @r0+ ; restore r9\n\ - ld r10, @r0+ ; restore r10\n\ - ld r11, @r0+ ; restore r11\n\ - ld r12, @r0+ ; restore r12\n\ - ld r13, @r0+ ; restore r13\n\ - ld r14, @r0+ ; restore r14\n\ - ld r15, @r0+ ; restore r15\n\ - ld r1, @r0+ ; restore cr0 == PSW\n\ - mvtc r1, cr0\n\ - ld r1, @r0+ ; restore cr1 == CBR (no-op, because it's read only)\n\ - mvtc r1, cr1\n\ - ld r1, @r0+ ; restore cr2 == SPI\n\ - mvtc r1, cr2\n\ - ld r1, @r0+ ; restore cr3 == SPU\n\ - mvtc r1, cr3\n\ - addi r0, #4 ; skip BPC\n\ - ld r1, @r0+ ; restore cr6 (BPC) == PC\n\ - mvtc r1, cr6\n\ - ld r1, @r0+ ; restore ACCL\n\ - mvtaclo r1\n\ - ld r1, @r0+ ; restore ACCH\n\ - mvtachi r1\n\ - seth r0, #shigh(registers)\n\ - add3 r0, r0, #low(registers)\n\ - ld r1, @(4,r0) ; restore r1\n\ - ld r0, @r0 ; restore r0\n\ - rte"); - -/* General trap handler, called after the registers have been stashed. - NUM is the trap/exception number. */ - -static void -process_exception (int num) -{ - cleanup_stash (); - asm volatile ("\n\ - seth r1, #shigh(stackPtr)\n\ - add3 r1, r1, #low(stackPtr)\n\ - ld r15, @r1 ; setup local stack (protect user stack)\n\ - mv r0, %0\n\ - bl handle_exception\n\ - bl restore_and_return"::"r" (num):"r0", "r1"); -} - -void _catchException0 (); - -asm ("\n\ -_catchException0:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #0\n\ - bl process_exception"); - -void _catchException1 (); - -asm ("\n\ -_catchException1:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - bl cleanup_stash\n\ - seth r1, #shigh(stackPtr)\n\ - add3 r1, r1, #low(stackPtr)\n\ - ld r15, @r1 ; setup local stack (protect user stack)\n\ - seth r1, #shigh(registers + 21*4) ; PC\n\ - add3 r1, r1, #low(registers + 21*4)\n\ - ld r0, @r1\n\ - addi r0, #-4 ; back up PC for breakpoint trap.\n\ - st r0, @r1 ; FIXME: what about bp in right slot?\n\ - ldi r0, #1\n\ - bl handle_exception\n\ - bl restore_and_return"); - -void _catchException2 (); - -asm ("\n\ -_catchException2:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #2\n\ - bl process_exception"); - -void _catchException3 (); - -asm ("\n\ -_catchException3:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #3\n\ - bl process_exception"); - -void _catchException4 (); - -asm ("\n\ -_catchException4:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #4\n\ - bl process_exception"); - -void _catchException5 (); - -asm ("\n\ -_catchException5:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #5\n\ - bl process_exception"); - -void _catchException6 (); - -asm ("\n\ -_catchException6:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #6\n\ - bl process_exception"); - -void _catchException7 (); - -asm ("\n\ -_catchException7:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #7\n\ - bl process_exception"); - -void _catchException8 (); - -asm ("\n\ -_catchException8:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #8\n\ - bl process_exception"); - -void _catchException9 (); - -asm ("\n\ -_catchException9:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #9\n\ - bl process_exception"); - -void _catchException10 (); - -asm ("\n\ -_catchException10:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #10\n\ - bl process_exception"); - -void _catchException11 (); - -asm ("\n\ -_catchException11:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #11\n\ - bl process_exception"); - -void _catchException12 (); - -asm ("\n\ -_catchException12:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #12\n\ - bl process_exception"); - -void _catchException13 (); - -asm ("\n\ -_catchException13:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #13\n\ - bl process_exception"); - -void _catchException14 (); - -asm ("\n\ -_catchException14:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #14\n\ - bl process_exception"); - -void _catchException15 (); - -asm ("\n\ -_catchException15:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #15\n\ - bl process_exception"); - -void _catchException16 (); - -asm ("\n\ -_catchException16:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #16\n\ - bl process_exception"); - -void _catchException17 (); - -asm ("\n\ -_catchException17:\n\ - push lr\n\ - bl stash_registers\n\ - ; Note that at this point the pushed value of `lr' has been popped\n\ - ldi r0, #17\n\ - bl process_exception"); - - -/* this function is used to set up exception handlers for tracing and - breakpoints */ -void -set_debug_traps (void) -{ - /* extern void remcomHandler(); */ - int i; - - for (i = 0; i < 18; i++) /* keep a copy of old vectors */ - if (save_vectors[i] == 0) /* only copy them the first time */ - save_vectors[i] = getExceptionHandler (i); - - stackPtr = &remcomStack[STACKSIZE / sizeof (int) - 1]; - - exceptionHandler (0, _catchException0); - exceptionHandler (1, _catchException1); - exceptionHandler (2, _catchException2); - exceptionHandler (3, _catchException3); - exceptionHandler (4, _catchException4); - exceptionHandler (5, _catchException5); - exceptionHandler (6, _catchException6); - exceptionHandler (7, _catchException7); - exceptionHandler (8, _catchException8); - exceptionHandler (9, _catchException9); - exceptionHandler (10, _catchException10); - exceptionHandler (11, _catchException11); - exceptionHandler (12, _catchException12); - exceptionHandler (13, _catchException13); - exceptionHandler (14, _catchException14); - exceptionHandler (15, _catchException15); - exceptionHandler (16, _catchException16); - /* exceptionHandler (17, _catchException17); */ - - initialized = 1; -} - -/* This function will generate a breakpoint exception. It is used at the - beginning of a program to sync up with a debugger and can be used - otherwise as a quick means to stop program execution and "break" into - the debugger. */ - -#define BREAKPOINT() asm volatile (" trap #2"); - -void -breakpoint (void) -{ - if (initialized) - BREAKPOINT (); -} - -/* STDOUT section: - Stuff pertaining to simulating stdout by sending chars to gdb to be echoed. - Functions: gdb_putchar(char ch) - gdb_puts(char *str) - gdb_write(char *str, int len) - gdb_error(char *format, char *parm) - */ - -/* Function: gdb_putchar(int) - Make gdb write a char to stdout. - Returns: the char */ - -static int -gdb_putchar (int ch) -{ - char buf[4]; - - buf[0] = 'O'; - buf[1] = hexchars[ch >> 4]; - buf[2] = hexchars[ch & 0x0F]; - buf[3] = 0; - putpacket (buf); - return ch; -} - -/* Function: gdb_write(char *, int) - Make gdb write n bytes to stdout (not assumed to be null-terminated). - Returns: number of bytes written */ - -static int -gdb_write (char *data, int len) -{ - char *buf, *cpy; - int i; - - buf = remcomOutBuffer; - buf[0] = 'O'; - i = 0; - while (i < len) - { - for (cpy = buf + 1; - i < len && cpy < buf + sizeof (remcomOutBuffer) - 3; i++) - { - *cpy++ = hexchars[data[i] >> 4]; - *cpy++ = hexchars[data[i] & 0x0F]; - } - *cpy = 0; - putpacket (buf); - } - return len; -} - -/* Function: gdb_puts(char *) - Make gdb write a null-terminated string to stdout. - Returns: the length of the string */ - -static int -gdb_puts (char *str) -{ - return gdb_write (str, strlen (str)); -} - -/* Function: gdb_error(char *, char *) - Send an error message to gdb's stdout. - First string may have 1 (one) optional "%s" in it, which - will cause the optional second string to be inserted. */ - -static void -gdb_error (char *format, char *parm) -{ - char buf[400], *cpy; - int len; - - if (remote_debug) - { - if (format && *format) - len = strlen (format); - else - return; /* empty input */ - - if (parm && *parm) - len += strlen (parm); - - for (cpy = buf; *format;) - { - if (format[0] == '%' && format[1] == 's') /* include second string */ - { - format += 2; /* advance two chars instead of just one */ - while (parm && *parm) - *cpy++ = *parm++; - } - else - *cpy++ = *format++; - } - *cpy = '\0'; - gdb_puts (buf); - } -} - -static unsigned char * -strcpy (unsigned char *dest, const unsigned char *src) -{ - unsigned char *ret = dest; - - if (dest && src) - { - while (*src) - *dest++ = *src++; - *dest = 0; - } - return ret; -} - -static int -strlen (const unsigned char *src) -{ - int ret; - - for (ret = 0; *src; src++) - ret++; - - return ret; -} - -#if 0 -void -exit (code) - int code; -{ - _exit (code); -} - -int -atexit (void *p) -{ - return 0; -} - -void -abort (void) -{ - _exit (1); -} -#endif |