Compare commits

..

402 Commits
5.1 ... 4.7.1

Author SHA1 Message Date
cvs2git
6142b42c41 This commit was manufactured by cvs2svn to create tag 'rtems-4-7-1'.
Sprout from rtems-4-7-branch 2007-04-13 18:29:37 UTC Joel Sherrill <joel.sherrill@OARcorp.com> 'Upgrade to 4.7.1'
Delete:
    Makefile.maint
    contrib/apt-conf/.cvsignore
    contrib/apt-conf/COPYING
    contrib/apt-conf/ChangeLog
    contrib/apt-conf/INSTALL
    contrib/apt-conf/Makefile.am
    contrib/apt-conf/README
    contrib/apt-conf/configure.ac
    contrib/apt-conf/gpg/gpg-pubkey-eac29b6f-3fe1f458
    contrib/apt-conf/rtems-apt-conf.spec.in
    contrib/apt-conf/sources.list.d/rtems-4.6.list
    contrib/apt-conf/sources.list.d/rtems-4.7.list
    contrib/apt-conf/vendors.list.d/rtems.list
    contrib/crossrpms/.cvsignore
    contrib/crossrpms/AUTHORS
    contrib/crossrpms/COPYING
    contrib/crossrpms/ChangeLog
    contrib/crossrpms/Makefile.am
    contrib/crossrpms/NEWS
    contrib/crossrpms/README
    contrib/crossrpms/TODO
    contrib/crossrpms/acinclude.m4
    contrib/crossrpms/autotools/.cvsignore
    contrib/crossrpms/autotools/Makefile.am
    contrib/crossrpms/autotools/autoconf.add
    contrib/crossrpms/autotools/autoconf.am
    contrib/crossrpms/autotools/automake.add
    contrib/crossrpms/autotools/automake.am
    contrib/crossrpms/autotools/target-autoconf.add
    contrib/crossrpms/autotools/target-automake.add
    contrib/crossrpms/binutils/.cvsignore
    contrib/crossrpms/binutils/base-binutils.add
    contrib/crossrpms/binutils/binutils.add
    contrib/crossrpms/binutils/build.add
    contrib/crossrpms/binutils/install.add
    contrib/crossrpms/binutils/prep.add
    contrib/crossrpms/binutils/rpm-install.add
    contrib/crossrpms/binutils/target-binutils.add
    contrib/crossrpms/bootstrap
    contrib/crossrpms/common/clean.add
    contrib/crossrpms/common/common.add
    contrib/crossrpms/configure.ac
    contrib/crossrpms/gcc/base-g77.add
    contrib/crossrpms/gcc/base-gcc.add
    contrib/crossrpms/gcc/base-gcj.add
    contrib/crossrpms/gcc/base-gfortran.add
    contrib/crossrpms/gcc/base-gnat.add
    contrib/crossrpms/gcc/base-newlib.add
    contrib/crossrpms/gcc/build.add
    contrib/crossrpms/gcc/gccnewlib.add
    contrib/crossrpms/gcc/install.add
    contrib/crossrpms/gcc/prep.add
    contrib/crossrpms/gcc/rpm-install.add
    contrib/crossrpms/gcc/target-c++.add
    contrib/crossrpms/gcc/target-g77.add
    contrib/crossrpms/gcc/target-gcc.add
    contrib/crossrpms/gcc/target-gcj.add
    contrib/crossrpms/gcc/target-gfortran.add
    contrib/crossrpms/gcc/target-gnat.add
    contrib/crossrpms/gcc/target-newlib.add
    contrib/crossrpms/gcc/target-objc.add
    contrib/crossrpms/gdb/base-gdb.add
    contrib/crossrpms/gdb/build.add
    contrib/crossrpms/gdb/gdb.add
    contrib/crossrpms/gdb/install.add
    contrib/crossrpms/gdb/prep.add
    contrib/crossrpms/gdb/rpm-install.add
    contrib/crossrpms/gdb/target-gdb.add
    contrib/crossrpms/mkspec.am
    contrib/crossrpms/patches/binutils-2.16.1-rtems-20050708.diff
    contrib/crossrpms/patches/binutils-2.17-rtems4.7-20061021.diff
    contrib/crossrpms/patches/gcc-core-4.0.3-rtems-20060822.diff
    contrib/crossrpms/patches/gcc-core-4.1.1-rtems-20060720.diff
    contrib/crossrpms/patches/gcc-core-4.1.1-rtems-20060908.diff
    contrib/crossrpms/patches/gcc-core-4.1.1-rtems-20060909.diff
    contrib/crossrpms/patches/gcc-core-4.1.1-rtems4.7-20070102.diff
    contrib/crossrpms/patches/gcc-core-4.1.1-rtems4.7-20070405.diff
    contrib/crossrpms/patches/gcc-core-4.1.2-rtems4.7-20070216.diff
    contrib/crossrpms/patches/gdb-6.4-rtems-20060311.diff
    contrib/crossrpms/patches/gdb-6.4-rtems-20060712.diff
    contrib/crossrpms/patches/gdb-6.5-rtems-20060713.diff
    contrib/crossrpms/patches/gdb-6.6-rtems4.7-20070218.diff
    contrib/crossrpms/patches/gdb-6.6-rtems4.7-20070222.diff
    contrib/crossrpms/patches/newlib-1.14.0-rtems4.7-20061019.diff
    contrib/crossrpms/patches/newlib-1.15.0-rtems4.7-20070208.diff
    contrib/crossrpms/rtems4.7/.cvsignore
    contrib/crossrpms/rtems4.7/Makefile.am
    contrib/crossrpms/rtems4.7/arm/.cvsignore
    contrib/crossrpms/rtems4.7/arm/Makefile.am
    contrib/crossrpms/rtems4.7/arm/binutils-sources.add
    contrib/crossrpms/rtems4.7/arm/gcc-sources.add
    contrib/crossrpms/rtems4.7/arm/gdb-sources.add
    contrib/crossrpms/rtems4.7/avr/.cvsignore
    contrib/crossrpms/rtems4.7/avr/Makefile.am
    contrib/crossrpms/rtems4.7/avr/binutils-sources.add
    contrib/crossrpms/rtems4.7/avr/gcc-sources.add
    contrib/crossrpms/rtems4.7/avr/gdb-sources.add
    contrib/crossrpms/rtems4.7/binutils.am
    contrib/crossrpms/rtems4.7/gcc-prep.add
    contrib/crossrpms/rtems4.7/gcc.am
    contrib/crossrpms/rtems4.7/gdb.am
    contrib/crossrpms/rtems4.7/h8300/.cvsignore
    contrib/crossrpms/rtems4.7/h8300/Makefile.am
    contrib/crossrpms/rtems4.7/h8300/binutils-sources.add
    contrib/crossrpms/rtems4.7/h8300/gcc-sources.add
    contrib/crossrpms/rtems4.7/h8300/gdb-sources.add
    contrib/crossrpms/rtems4.7/i386/.cvsignore
    contrib/crossrpms/rtems4.7/i386/Makefile.am
    contrib/crossrpms/rtems4.7/i386/binutils-sources.add
    contrib/crossrpms/rtems4.7/i386/gcc-sources.add
    contrib/crossrpms/rtems4.7/i386/gdb-sources.add
    contrib/crossrpms/rtems4.7/m68k/.cvsignore
    contrib/crossrpms/rtems4.7/m68k/Makefile.am
    contrib/crossrpms/rtems4.7/m68k/binutils-sources.add
    contrib/crossrpms/rtems4.7/m68k/gcc-sources.add
    contrib/crossrpms/rtems4.7/m68k/gdb-sources.add
    contrib/crossrpms/rtems4.7/mips/.cvsignore
    contrib/crossrpms/rtems4.7/mips/Makefile.am
    contrib/crossrpms/rtems4.7/mips/binutils-sources.add
    contrib/crossrpms/rtems4.7/mips/gcc-sources.add
    contrib/crossrpms/rtems4.7/mips/gdb-sources.add
    contrib/crossrpms/rtems4.7/mipstx39/.cvsignore
    contrib/crossrpms/rtems4.7/mipstx39/Makefile.am
    contrib/crossrpms/rtems4.7/mipstx39/gdb-sources.add
    contrib/crossrpms/rtems4.7/powerpc/.cvsignore
    contrib/crossrpms/rtems4.7/powerpc/Makefile.am
    contrib/crossrpms/rtems4.7/powerpc/binutils-sources.add
    contrib/crossrpms/rtems4.7/powerpc/gcc-sources.add
    contrib/crossrpms/rtems4.7/powerpc/gdb-sources.add
    contrib/crossrpms/rtems4.7/sh/.cvsignore
    contrib/crossrpms/rtems4.7/sh/Makefile.am
    contrib/crossrpms/rtems4.7/sh/binutils-sources.add
    contrib/crossrpms/rtems4.7/sh/gcc-sources.add
    contrib/crossrpms/rtems4.7/sh/gdb-sources.add
    contrib/crossrpms/rtems4.7/sparc/.cvsignore
    contrib/crossrpms/rtems4.7/sparc/Makefile.am
    contrib/crossrpms/rtems4.7/sparc/binutils-sources.add
    contrib/crossrpms/rtems4.7/sparc/gcc-sources.add
    contrib/crossrpms/rtems4.7/sparc/gdb-sources.add
    contrib/crossrpms/specstrip
    contrib/mingw/.cvsignore
    contrib/mingw/AUTHORS
    contrib/mingw/COPYING
    contrib/mingw/ChangeLog
    contrib/mingw/README
    contrib/mingw/build-exes.sh
    contrib/mingw/build-rpms.sh
    contrib/mingw/build.sh
    contrib/mingw/rtems-license.rtf
    contrib/mingw/rtems-tools.nsi
    contrib/mingw/rtems.ini
    contrib/mingw/rtems_logo.bmp
    contrib/mingw/targets
    contrib/repo-conf/.cvsignore
    contrib/repo-conf/AUTHORS
    contrib/repo-conf/COPYING
    contrib/repo-conf/ChangeLog
    contrib/repo-conf/INSTALL
    contrib/repo-conf/Makefile.am
    contrib/repo-conf/NEWS
    contrib/repo-conf/README
    contrib/repo-conf/aclocal/version.m4
    contrib/repo-conf/apt/sources.list.d/.cvsignore
    contrib/repo-conf/apt/sources.list.d/rtems.list.in
    contrib/repo-conf/apt/vendors.list.d/rtems.list
    contrib/repo-conf/configure.ac
    contrib/repo-conf/gpg/gpg-pubkey-69ce4a83-44cc2b30
    contrib/repo-conf/gpg/gpg-pubkey-eac29b6f-3fe1f458
    contrib/repo-conf/rtems-repo-conf.spec.in
    contrib/repo-conf/yum.repos.d/.cvsignore
    contrib/repo-conf/yum.repos.d/rtems.repo.in
    contrib/rtemsrpms/.cvsignore
    contrib/rtemsrpms/AUTHORS
    contrib/rtemsrpms/COPYING
    contrib/rtemsrpms/ChangeLog
    contrib/rtemsrpms/INSTALL
    contrib/rtemsrpms/Makefile.am
    contrib/rtemsrpms/NEWS
    contrib/rtemsrpms/README
    contrib/rtemsrpms/bootstrap
    contrib/rtemsrpms/configure.ac
    contrib/rtemsrpms/rtems.spec.in
2007-04-13 18:29:38 +00:00
Joel Sherrill
e6466f7955 Upgrade to 4.7.1 2007-04-13 18:29:37 +00:00
Joel Sherrill
ca64c0649d 2007-04-12 Joel Sherrill <joel@OARcorp.com>
* itron/src/rsm_tsk.c: Correct error returned.
2007-04-12 19:41:55 +00:00
Joel Sherrill
caacea235c 2007-04-11 Joel Sherrill <joel@OARcorp.com>
* configure.ac: Do not configure tools. They only build on a Solaris
	VMEBus host anyway.
2007-04-11 11:18:34 +00:00
Ralf Corsepius
dd64e2bb63 GCC_RPMREL=8 2007-04-10 05:55:41 +00:00
Ralf Corsepius
31ba4cc47e Upgrade to gcc-core-4.1.1-rtems4.7-20070405.diff 2007-04-10 05:55:20 +00:00
Ralf Corsepius
9415bdbd6c Backport from rtems-4.8/gcc-4.1.2. 2007-04-10 05:53:40 +00:00
Ralf Corsepius
4449c8af71 2007-04-10 Ralf Corsépius <ralf.corsepius@rtems.org>
* libcsupport/src/newlibc.c: Add __ATTRIBUTE_IMPURE_PTR__
	(Fixes "relocation truncated to fit: R_MIPS_GPREL16" against
	_impure_ptr bug).
	Fix abuse of _REENT_INIT().
2007-04-10 05:37:55 +00:00
Ralf Corsepius
1bc504bfe6 2007-04-10 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Remove --oformat=...
	Use old_link for -qrtems (Prevents *.link from killing endianness).
2007-04-10 05:25:07 +00:00
Ralf Corsepius
7adf859f75 2007-04-10 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Use nostdlib instead of nostdlibs (bogus).
	Use old_link for -qrtems (Prevents *.link from killing endianness).
2007-04-10 05:23:29 +00:00
Ralf Corsepius
9a94a722ed 2007-04-10 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Use old_link for -qrtems (Prevents *.link from killing
	endianness).
2007-04-10 05:21:57 +00:00
Ralf Corsepius
068128dc2e 2007-04-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Remove lib (Now expected to exist in GCC).
2007-04-06 05:52:18 +00:00
Ralf Corsepius
ad438184fe 2007-04-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Remove lib (Now expected to exist in GCC).
2007-04-06 05:37:02 +00:00
Joel Sherrill
fc503e59c6 2007-04-02 Jennifer Averett <jennifer.averrett@oarcorp.com>
* rtems.adb, rtems.ads: Update.
2007-04-02 20:52:57 +00:00
Joel Sherrill
a4afa905f6 2007-04-02 Joel Sherrill <joel@OARcorp.com>
* libcsupport/src/printk.c: Add %p support.
2007-04-02 14:36:01 +00:00
Joel Sherrill
29fd387849 2007-04-02 Joel Sherrill <joel@OARcorp.com>
* libmisc/stackchk/check.c: Add code to check validity of frame pointer
	in addition to the pattern area being overwritten. Also do some
	cleanup.
2007-04-02 14:34:39 +00:00
Joel Sherrill
625ef85d6a 2007-04-02 Joel Sherrill <joel@OARcorp.com>
* Makefile.am: Add dummy printk support so all tests link.
2007-04-02 11:18:03 +00:00
Joel Sherrill
1e99524efe 2007-04-02 Joel Sherrill <joel@OARcorp.com>
* dummy_printk_support.c: New file.
2007-04-02 11:17:45 +00:00
Joel Sherrill
a69b93963b 2007-04-01 Joel Sherrill <joel@OARcorp.com>
PR 1235/bsps
	* pci/pci.c: Add conditional declaration of variables used in debug
	printk's.
2007-04-01 15:38:43 +00:00
Ralf Corsepius
c884439aae 2007-03-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* monitor/init.c, rtmonuse/task1.c: Use rtems_task_argument.
2007-03-29 17:02:37 +00:00
Ralf Corsepius
7863b3f211 2007-03-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* sp06/task1.c, sp20/task1.c: Use rtems_task_argument.
2007-03-29 17:02:06 +00:00
Ralf Corsepius
77198be529 Use rtems_task_argument. 2007-03-29 17:01:59 +00:00
Joel Sherrill
53d549649f 2007-03-28 Joel Sherrill <joel@OARcorp.com>
PR 1234/cpukit
	* libcsupport/Makefile.am: Provide printk() based implementation of
	__assert() to reduce dependencies in executables.
	* libcsupport/src/__assert.c: New file.
2007-03-28 19:06:33 +00:00
Joel Sherrill
7a0a872944 2007-03-28 Joel Sherrill <joel@OARcorp.com>
PR 1234/cpukit
	* libcsupport/Makefile.am: Provide printk() based implementation of
	__assert() to reduce dependencies in executables.
2007-03-28 18:58:32 +00:00
Joel Sherrill
a2a6187aed 2007-03-28 Joel Sherrill <joel@OARcorp.com>
PR 1233/bsps
	* Makefile.am, console/console.c, console/debugputs.c: Move printk
	support code into debug IO file so you do not get the entire console
	driver when you do not want it.
2007-03-28 18:08:58 +00:00
Joel Sherrill
2fc3592d35 2007-03-28 Joel Sherrill <joel@OARcorp.com>
PR 1232/bsps
	* bsppost.c: It should not be a fatal error to not have a console.
2007-03-28 18:03:26 +00:00
Ralf Corsepius
884fba65b2 2007-03-27 Ralf Corsépius <ralf.corsepius@rtems.org>
* aclocal/target.m4: Strip CFLAGS (Hack to prevent bsp-cflags from
	  being used to compile "tools").
2007-03-27 06:15:16 +00:00
Joel Sherrill
9b754a25bf 2007-03-26 Joel Sherrill <joel@OARcorp.com>
PR 1231/cpukit
	* posix/src/adasupp.c, posix/src/clockgetcpuclockid.c,
	posix/src/clockgetenableattr.c, posix/src/clockgetres.c,
	posix/src/clockgettime.c, posix/src/clocksetenableattr.c,
	posix/src/mutex.c, posix/src/mutexattrdestroy.c,
	posix/src/mutexattrgetprioceiling.c,
	posix/src/mutexattrgetprotocol.c, posix/src/mutexattrgetpshared.c,
	posix/src/mutexattrinit.c, posix/src/mutexattrsetprioceiling.c,
	posix/src/mutexattrsetprotocol.c, posix/src/mutexattrsetpshared.c,
	posix/src/mutexdefaultattributes.c, posix/src/mutexdestroy.c,
	posix/src/mutexgetprioceiling.c, posix/src/mutexlock.c,
	posix/src/mutexlocksupp.c, posix/src/mutexmp.c,
	posix/src/mutexsetprioceiling.c, posix/src/mutextimedlock.c,
	posix/src/mutextrylock.c, posix/src/mutexunlock.c,
	posix/src/nanosleep.c, posix/src/posixintervaltotimespec.c,
	posix/src/posixtimespecsubtract.c,
	posix/src/posixtimespectointerval.c,
	posix/src/psignalclearprocesssignals.c,
	posix/src/psignalclearsignals.c,
	posix/src/psignalsetprocesssignals.c,
	posix/src/psignalunblockthread.c, posix/src/ptimer.c,
	posix/src/ptimer1.c, posix/src/sched.c, posix/src/time.c: Remove
	unneeded includes of assert.h
2007-03-26 22:56:34 +00:00
Joel Sherrill
bdfe63323e 2007-03-26 Joel Sherrill <joel@OARcorp.com>
PR 1230/tests
	* minimum/init.c: Minimum should not configure console driver.
2007-03-26 22:21:29 +00:00
Ralf Corsepius
84fe6d5955 Regenerate. 2007-03-19 06:58:29 +00:00
Ralf Corsepius
14a0b117f1 2007-03-19 Ralf Corsépius <ralf.corsepius@rtems.org>
* libnetworking/sys/conf.h: Don't include machine/conf.h.
	Update copyright notice.
	* libnetworking/Makefile.am: Remove machine/conf.h.
	* libnetworking/machine/conf.h: Remove.
2007-03-19 06:58:03 +00:00
Ralf Corsepius
753ba4ca2b 2007-03-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* libnetworking/sys/conf.h: Remove linesw, struct linesw, nlinesw.
	(Clash with termiostypes.h - PR 1229).
2007-03-18 07:37:23 +00:00
Ralf Corsepius
66a0b1a57b 2007-03-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* libnetworking/sys/conf.h: Remove linesw, struct linesw, nlinesw.
	(Clash with termiostypes.h - PR 1229).
2007-03-17 06:42:09 +00:00
Thomas Doerfler
acdf664ec7 *** empty log message *** 2007-03-16 08:57:15 +00:00
Thomas Doerfler
9455004dd9 * startup/bspstart.c: set external clock to 0 for some boards to
match the "auto clock detection" scheme in the libcpu clock driver
	* startup/linkcmds: remove content of dpram section to avoid
	download hangs with the EPPCBug board monitor
2007-03-16 08:27:21 +00:00
Ralf Corsepius
63feedc880 2007-03-13 Ralf Corsépius <ralf.corsepius@rtems.org>
* libcsupport/src/assocnamebad.c: Remove dead code. Use PRI* macros
	  to fix warnings.
2007-03-13 05:40:14 +00:00
Joel Sherrill
e4851067d3 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* libchip/network/cs8900.c, libchip/network/cs8900.h,
	libchip/network/greth.c, libchip/network/greth.h: Correct license URL
	and/or fix mistake in copyright notice. Both of these mistakes appear
	to be from code submitted after these changes were made previously.
2007-03-12 11:23:26 +00:00
Joel Sherrill
acf743c8e2 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* console/uart.c, start/start.S, startup/linkcmds, startup/memmap.c:
	Correct license URL and/or fix mistake in copyright notice. Both of
	these mistakes appear to be from code submitted after these changes
	were made previously.
2007-03-12 11:22:40 +00:00
Joel Sherrill
2a81b3e981 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* console/uarts.c, include/bsp.h, start/start.S, startup/bspstart.c,
	startup/exit.c, startup/linkcmds: Correct license URL and/or fix
	mistake in copyright notice. Both of these mistakes appear to be from
	code submitted after these changes were made previously.
2007-03-12 11:22:37 +00:00
Joel Sherrill
861e756a76 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* include/bsp.h, network/lan91c11x.c, network/lan91c11x.h,
	network/network.c, start/start.S, startup/bspstart.c, startup/exit.c,
	startup/linkcmds, startup/memmap.c: Correct license URL and/or fix
	mistake in copyright notice. Both of these mistakes appear to be from
	code submitted after these changes were made previously.
2007-03-12 11:22:32 +00:00
Joel Sherrill
02682585d1 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* clock/clock.c, console/console.c, include/bsp.h, include/coverhd.h,
	include/tm27.h, network/network.c, start/start.S, startup/bspclean.c,
	startup/bspstart.c, startup/init5282.c, startup/linkcmds,
	timer/timer.c: Correct license URL and/or fix mistake in copyright
	notice. Both of these mistakes appear to be from code submitted after
	these changes were made previously.
2007-03-12 11:22:17 +00:00
Joel Sherrill
89f6394a03 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* include/coverhd.h, start/start.S, startup/bspclean.c,
	startup/bspstart.c, startup/linkcmds, startup/linkcmdsflash,
	startup/linkcmdsram: Correct license URL and/or fix mistake in
	copyright notice. Both of these mistakes appear to be from code
	submitted after these changes were made previously.
2007-03-12 11:22:08 +00:00
Joel Sherrill
a596619479 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* console/console-io.c, include/bsp.h, start/start.S,
	startup/bspclean.c, startup/bspstart.c, startup/init5272.c: Correct
	license URL and/or fix mistake in copyright notice. Both of these
	mistakes appear to be from code submitted after these changes were
	made previously.
2007-03-12 11:22:05 +00:00
Joel Sherrill
c41653be29 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* console/console-io.c, startup/exception.S: Correct license URL and/or
	fix mistake in copyright notice. Both of these mistakes appear to be
	from code submitted after these changes were made previously.
2007-03-12 11:21:50 +00:00
Joel Sherrill
8093e05e69 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* clock/ckinit.c, startup/exception.S: Correct license URL and/or fix
	mistake in copyright notice. Both of these mistakes appear to be from
	code submitted after these changes were made previously.
2007-03-12 11:21:43 +00:00
Joel Sherrill
42a7952dcc 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* clock/clockdrv.c, console/console-io.c, include/bsp.h,
	network/network.c, start/start.S, startup/bspclean.c,
	startup/bspstart.c, timer/timer.c: Correct license URL and/or fix
	mistake in copyright notice. Both of these mistakes appear to be from
	code submitted after these changes were made previously.
2007-03-12 11:21:39 +00:00
Joel Sherrill
7ef0876d46 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* irq/irq_init.c: Correct license URL and/or fix mistake in copyright
	notice. Both of these mistakes appear to be from code submitted after
	these changes were made previously.
2007-03-12 11:21:27 +00:00
Joel Sherrill
0332481c11 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* clock/clock.c, console/console.c, ide/pcmcia_ide.c, irq/irq.c,
	irq/irq.h, irq/irq_asm.S, irq/irq_init.c, nvram/nvram.c,
	nvram/nvram.h, slicetimer/slicetimer.c, startup/bspstart.c,
	vectors/vectors.h, vectors/vectors_init.c: Correct license URL and/or
	fix mistake in copyright notice. Both of these mistakes appear to be
	from code submitted after these changes were made previously.
2007-03-12 11:21:23 +00:00
Joel Sherrill
20cacf5cec 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* at91rm9200/clock/clock.c, at91rm9200/dbgu/dbgu.c,
	at91rm9200/include/at91rm9200.h,
	at91rm9200/include/at91rm9200_dbgu.h,
	at91rm9200/include/at91rm9200_emac.h,
	at91rm9200/include/at91rm9200_gpio.h,
	at91rm9200/include/at91rm9200_mem.h,
	at91rm9200/include/at91rm9200_pmc.h, at91rm9200/include/bits.h,
	at91rm9200/irq/bsp_irq_asm.S, at91rm9200/irq/bsp_irq_init.c,
	at91rm9200/irq/irq.c, at91rm9200/irq/irq.h, at91rm9200/pmc/pmc.c,
	at91rm9200/timer/timer.c, mc9328mxl/clock/clockdrv.c,
	mc9328mxl/include/mc9328mxl.h, mc9328mxl/irq/bsp_irq_asm.S,
	mc9328mxl/irq/bsp_irq_init.c, mc9328mxl/irq/irq.c,
	mc9328mxl/irq/irq.h, mc9328mxl/timer/timer.c,
	s3c2400/clock/clockdrv.c, s3c2400/timer/timer.c: Correct license URL
	and/or fix mistake in copyright notice. Both of these mistakes appear
	to be from code submitted after these changes were made previously.
2007-03-12 11:21:10 +00:00
Joel Sherrill
f35c71e71e 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* mcf5272/clock/ckinit.c, mcf5272/include/mcf5272.h,
	mcf5272/timer/timer.c, mcf5272/timer/timerisr.S: Correct license URL
	and/or fix mistake in copyright notice. Both of these mistakes appear
	to be from code submitted after these changes were made previously.
2007-03-12 11:21:00 +00:00
Joel Sherrill
f870ea6476 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* au1x00/include/au1x00.h, au1x00/vectorisrs/maxvectors.c,
	au1x00/vectorisrs/vectorisrs.c: Correct license URL and/or fix
	mistake in copyright notice. Both of these mistakes appear to be from
	code submitted after these changes were made previously.
2007-03-12 11:20:52 +00:00
Joel Sherrill
87e9f35467 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* mpc6xx/mmu/mmuAsm.S: Correct license URL and/or fix mistake in
	copyright notice. Both of these mistakes appear to be from code
	submitted after these changes were made previously.
2007-03-12 11:20:43 +00:00
Joel Sherrill
819a6cfd37 2007-03-12 Joel Sherrill <joel@OARcorp.com>
* score/src/heapallocatealigned.c: Correct license URL and/or fix
	mistake in copyright notice. Both of these mistakes appear to be from
	code submitted after these changes were made previously.
2007-03-12 11:20:27 +00:00
Joel Sherrill
805fe84653 2007-03-10 Joel Sherrill <joel@OARcorp.com>
PR 1226/cpukit
	* user/conf.t: CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE not
	CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE.
2007-03-10 16:16:58 +00:00
Joel Sherrill
91f9d891f8 2007-03-10 Joel Sherrill <joel@OARcorp.com>
PR 1226/cpukit
	* sapi/include/confdefs.h: CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE not
	CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE.
2007-03-10 16:16:44 +00:00
Joel Sherrill
eaff189842 2007-03-10 Joel Sherrill <joel@OARcorp.com>
PR 1227/bsps
	* include/bsp.h: Remove MAX_LONG_TEST_DURATION and
	MAX_SHORT_TEST_DURATION. They are obsolete and unused.
2007-03-10 15:56:13 +00:00
Joel Sherrill
32ad50f234 2007-03-10 Joel Sherrill <joel@OARcorp.com>
PR 1227/bsps
	* include/bsp.h: Remove MAX_LONG_TEST_DURATION and
	MAX_SHORT_TEST_DURATION. They are obsolete and unused.
2007-03-10 15:29:55 +00:00
Joel Sherrill
ff5fefb47f 2007-03-05 Joel Sherrill <joel@OARcorp.com>
PR 1221/cpukit
	* posix/src/pthreadequal.c: Fix critical section nesting.
2007-03-05 20:53:27 +00:00
Joel Sherrill
81850181d2 2007-03-02 Joel Sherrill <joel@OARcorp.com>
PR 1221/doc
	* user/rtmon.t: Add missing exponent operator in RMS CPU Utilization
	formula.
2007-03-02 21:31:04 +00:00
Ralf Corsepius
7f14691e93 Use binutils_pkgvers instead of binutils_version in Source0. 2007-02-26 09:56:38 +00:00
Ralf Corsepius
a5f0d3f61c Add BINUTILS_PKGVERS. 2007-02-26 09:36:22 +00:00
Ralf Corsepius
9a4713cf6c Add GDB_PKGVERS. 2007-02-26 09:33:28 +00:00
Ralf Corsepius
76644b33c0 Add BINUTILS_PKGVERS. 2007-02-26 09:29:38 +00:00
Ralf Corsepius
f00a8c0269 Add GDB_PKGVERS. 2007-02-26 09:06:11 +00:00
Ralf Corsepius
2d4cbe1b53 Add BINUTILS_PKGVERS. 2007-02-26 09:04:17 +00:00
Ralf Corsepius
5868ea587a New. 2007-02-22 20:01:20 +00:00
Ralf Corsepius
a470832cc9 2007-02-22 Ralf Corsepius <ralf.corsepius@rtems.org>
* libcsupport/Makefile.am: Move getpagesize.c to newlib-only
	  compiled files.
2007-02-22 15:25:56 +00:00
Ralf Corsepius
94ba66b8fe Rename stamp.export into stamp.export.$(rtems_tag)$(TAG_SUFFIX) 2007-02-22 13:13:25 +00:00
Ralf Corsepius
455dcb5f38 print $(rtems_tag)$(TAG_SUFFIX) into stamp.export 2007-02-22 13:10:39 +00:00
Ralf Corsepius
17eb63c085 Append TAG_SUFFIX to tarball name. 2007-02-22 13:07:51 +00:00
Ralf Corsepius
1721983ff0 2007-02-22 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Use MKDIR_P instead of mkdir_p.
2007-02-22 12:23:20 +00:00
Ralf Corsepius
b276df4c5e 2007-02-22 Ralf Corsépius <ralf.corsepius@rtems.org>
* bootloader/Makefile.am: Use MKDIR_P instead of mkdir_p.
2007-02-22 12:20:24 +00:00
Ralf Corsepius
07aa4683ce 2007-02-22 Ralf Corsépius <ralf.corsepius@rtems.org>
* wrapup/Makefile.am: Use MKDIR_P instead of mkdir_p.
2007-02-22 12:15:48 +00:00
Ralf Corsepius
b198ebf4d7 Sync. with rtems-4.8 2007-02-22 10:11:13 +00:00
Ralf Corsepius
5d27a7569d Sync. with rtems-4.8. 2007-02-22 09:35:25 +00:00
Joel Sherrill
8c5c2cce59 2007-02-21 Joel Sherrill <joel@OARcorp.com>
* loopback/init.c: Fix exit paths in client thread and main test
	thread.
2007-02-21 23:44:10 +00:00
Joel Sherrill
300f88948c 2007-02-21 Joel Sherrill <joel@OARcorp.com>
* Makefile.maint: Added TOOL_VERSIONS stanza and fixed typo.
2007-02-21 22:56:51 +00:00
Joel Sherrill
23ae7c19d6 Upgrade to 4.7.0 2007-02-21 22:26:20 +00:00
Ralf Corsepius
f0d9f1aa5b Use /opt/rtems-4.7/bin in $PATH 2007-02-21 18:34:06 +00:00
cvs2git
eb53864847 This commit was manufactured by cvs2svn to create branch 'rtems-4-7-branch'.
Cherrypick from master 2007-02-21 18:10:50 UTC Ralf Corsepius <ralf.corsepius@rtems.org> 'Misc. hacks':
    Makefile.maint
    cpukit/libcsupport/src/getpagesize.c
2007-02-21 18:10:51 +00:00
Joel Sherrill
4075c6d02a 2007-02-21 Joel Sherrill <joel@OARcorp.com>
* score/src/coremsgsubmit.c: Use Wait.option to avoid cast.
2007-02-21 14:58:23 +00:00
Ralf Corsepius
66e86174ce Preps for gcc-4.1.2. 2007-02-20 05:41:00 +00:00
Ralf Corsepius
c24ad80131 Preps for gdb-6.6. 2007-02-20 05:11:19 +00:00
Ralf Corsepius
678a69e3c1 New (Identical to gdb-6.6-rtems4.8-20070218.diff). 2007-02-20 05:04:34 +00:00
Ralf Corsepius
f1df664d07 New (Identical to gcc-core-4.1.2-rtems4.8-20070216.diff) 2007-02-20 05:03:10 +00:00
Ralf Corsepius
2bdaba9e06 Add GCC_PGKVERS (Sync with rtems-4.8). 2007-02-20 04:52:47 +00:00
Ralf Corsepius
2fa1b3fa04 Sync with rtems-4.8. 2007-02-20 04:47:29 +00:00
Ralf Corsepius
0d0dec0515 Add GDB_OPTS 2007-02-20 04:37:50 +00:00
Ralf Corsepius
3f2171624f Increment BINUTILS_RPMREL 2007-02-19 06:03:42 +00:00
Ralf Corsepius
1f0c826d45 Cosmetics 2007-02-19 06:01:02 +00:00
Ralf Corsepius
187683fe47 2007-02-18 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Bump version to 0.5.
	* apt/sources.list.d/rtems.list.in,
	  yum.repos.d/rtems.repo.in: Add rtems/testing repos.
2007-02-19 04:58:25 +00:00
Ralf Corsepius
a93e0bb890 Sync. with rtems-4.8. 2007-02-18 12:45:31 +00:00
Ralf Corsepius
a9d7335809 Fix URL. 2007-02-17 07:12:04 +00:00
Ralf Corsepius
9ea253ec3c Add || : to install-info. 2007-02-17 07:03:24 +00:00
Ralf Corsepius
5870da5e69 Misc. backports from rtems-4.8 2007-02-17 06:56:06 +00:00
Ralf Corsepius
9b6ba91a44 Add ||: to install-info. 2007-02-17 06:51:47 +00:00
Ralf Corsepius
b5c3cf2e62 2007-02-16 Ralf Corsepius <ralf.corsepius@rtems.org>
* Makefile.am: Remove shared/main.c.
2007-02-16 02:01:04 +00:00
Ralf Corsepius
62c4e35147 2007-02-16 Ralf Corsépius <ralf.corsepius@rtems.org>
* libchip/Makefile.am: Correct path to README.tulipclone.
2007-02-16 01:51:38 +00:00
Ralf Corsepius
ae58a2a959 2007-02-16 Ralf Corsépius <ralf.corsepius@rtems.org>
* make/Makefile.am: Cleanup.
2007-02-16 01:44:16 +00:00
Ralf Corsepius
473c7ac694 Sync with 4.8 2007-02-14 17:27:58 +00:00
Ralf Corsepius
28837e5a99 Bump RPMRELS. 2007-02-14 16:06:27 +00:00
Ralf Corsepius
8457b18892 Bump RPMRELS. 2007-02-14 16:04:14 +00:00
Ralf Corsepius
85a29993de Add ||: 2007-02-14 16:03:44 +00:00
Ralf Corsepius
edebdab588 Sync with rtems-4.8 2007-02-14 15:59:48 +00:00
Ralf Corsepius
a1ea247dee 2007-02-14 Ralf Corsépius <ralf.corsepius@rtems.org>
* VERSION: sync with */version.m4.
2007-02-14 14:47:44 +00:00
Ralf Corsepius
038f3a7ed4 2007-02-11 Ralf Corsépius <ralf.corsepius@rtems.org>
* aclocal/check-cpuopts.m4: Check rtems/system.h instead of
	rtems/score/cpuopts.h.
2007-02-11 10:29:38 +00:00
Ralf Corsepius
8b98a1b4be 2007-02-11 Ralf Corsepius <ralf.corsepius@rtems.org>
* score/include/rtems/score/heap.h, score/src/heap.c,
	score/src/heapallocatealigned.c, score/src/heapresizeblock.c:
	More size_t for heap-sizes.
2007-02-11 08:37:19 +00:00
Ralf Corsepius
2e47f4ab55 More size_t for heap-sizes. 2007-02-11 08:36:59 +00:00
Ralf Corsepius
2aa472c1f8 2007-02-11 Ralf Corsepius <ralf.corsepius@rtems.org>
* score/include/rtems/score/heap.h, score/src/heap.c,
	score/src/heapallocate.c, score/src/heapextend.c: Use size_t for
	heap-sizes.
2007-02-11 04:53:18 +00:00
Ralf Corsepius
fbbfad9a8b Use size_t for heap-sizes. 2007-02-11 04:52:59 +00:00
Ralf Corsepius
832310a7b2 2007-02-11 Ralf Corsepius <ralf.corsepius@rtems.org>
* libnetworking/resolv.h: Typo fixes. Remove __P().
2007-02-11 04:48:09 +00:00
Ralf Corsepius
039cc452ee 2007-02-09 Ralf Corsepius <ralf.corsepius@rtems.org>
* rtems/include/rtems/rtems/tasks.h, rtems/src/taskcreate.c:
	Use size_t for stack-sizes.
2007-02-09 15:08:18 +00:00
Ralf Corsepius
9f9412cc16 Use size_t for stack-sizes. 2007-02-09 15:08:06 +00:00
Eric Norum
100673c8dd Fixed FPGA interrupt handling. 2007-02-08 19:10:18 +00:00
Ralf Corsepius
1f9f1dc50d Upgrade to newlib-1.15.0-rtems4.7-20070208.diff 2007-02-08 10:43:18 +00:00
Ralf Corsepius
7a771dbd70 Remove (Obsolete). 2007-02-08 10:41:37 +00:00
Ralf Corsepius
74829f7ece Bump GCC_RPMREL. 2007-02-08 10:40:31 +00:00
Ralf Corsepius
0de60d6de5 New. 2007-02-08 10:38:29 +00:00
Ralf Corsepius
356914bb0d 2007-02-07 Ralf Corsépius <ralf.corsepius@rtems.org>
* libnetworking/vm/vm_extern.h: Remove non-implemented/unused
	  functions.
2007-02-07 04:37:31 +00:00
Till Straumann
4a2fee4771 2007-02-06 Till Straumann <strauman@slac.stanford.edu>
* libcsupport/src/gxx_wrappers.c: fix PR#690. Supply
	taskvar dtor to plug memory leak. Applied patch attached
	to PR#690.
2007-02-06 22:54:34 +00:00
Joel Sherrill
edffc8ed24 2007-02-06 Joel Sherrill <joel@OARcorp.com>
* tm09/task1.c, tm10/task1.c, tm11/task1.c, tm12/task1.c, tm13/task1.c,
	tm14/task1.c, tm22/task1.c: Address size_t/uint32_t typing issues in
	message queue tests.
2007-02-06 19:14:56 +00:00
Joel Sherrill
3da8388977 2007-02-06 Joel Sherrill <joel@OARcorp.com>
* sp09/screen07.c, sp09/task3.c, sp13/task1.c, sp13/task2.c,
	sp13/task3.c: Address size_t/uint32_t typing issues in message queue
	tests.
2007-02-06 19:14:54 +00:00
Joel Sherrill
809d2a6a30 2007-02-06 Joel Sherrill <joel@OARcorp.com>
* rtems++/Task1.cc, rtems++/Task3.cc: Address size_t/uint32_t typing
	issues in message queue tests.
2007-02-06 19:14:51 +00:00
Joel Sherrill
822c35d907 2007-02-06 Joel Sherrill <joel@OARcorp.com>
* itronmbf01/init.c: Address size_t/uint32_t typing issues in message
	queue tests.
2007-02-06 19:14:48 +00:00
Ralf Corsepius
1c43ddfa1d 2007-02-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* smc/smc.c: include bspIo.h for printk.
2007-02-06 18:23:51 +00:00
Ralf Corsepius
ead7d3a8e5 2007-02-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* libchip/ide/ata.c: Remove superfluous type casts.
2007-02-06 17:46:47 +00:00
Joel Sherrill
9babd25503 2007-02-06 Joel Sherrill <joel@OARcorp.com>
* include/rtems++/rtemsMessageQueue.h, src/rtemsMessageQueue.cc: Make
	compile by using size_t and uint32_t where appropriate.
2007-02-06 16:42:33 +00:00
Ralf Corsepius
402bdc31ed 2007-02-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* libcsupport/src/getpagesize.c: New (moved from posix/src).
	* posix/src/getpagesize.c: Removed.
	* posix/Makefile.am: Remove references to getpagesize.c.
	* libcsupport/Makefile.am: Add getpagesize.c.
2007-02-06 14:51:02 +00:00
Ralf Corsepius
a725f7e641 Removed. 2007-02-06 14:50:39 +00:00
Ralf Corsepius
70b76b22fc Remove references to getpagesize.c. 2007-02-06 14:50:05 +00:00
Ralf Corsepius
7a019b4160 Add getpagesize.c. 2007-02-06 14:49:49 +00:00
Ralf Corsepius
451b8870fe 2007-02-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* posix/src/sysconf.c: Add support for _SC_PAGESIZE (PR 1215).
2007-02-06 14:35:31 +00:00
Ralf Corsepius
f8ed4e0f00 2007-02-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* score/inline/rtems/score/coremsg.inl: More size_t and consts.
2007-02-06 13:43:20 +00:00
Ralf Corsepius
f41002fa1b 2007-02-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* rtems/src/msgqsend.c: Use size_t for sizes.
	* rtems/src/msgqurgent.c: Use size_t for sizes.
2007-02-06 11:29:21 +00:00
Ralf Corsepius
dc2afc8064 Use size_t for sizes. 2007-02-06 11:28:41 +00:00
Ralf Corsepius
dbc684c55c 2007-02-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* vmeUniverse/vmeUniverse.c: Use size_t for sizes.
2007-02-06 10:49:11 +00:00
Ralf Corsepius
18123fe76b 2007-02-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* libchip/ide/ata.c, libchip/network/elnk.c, optman/rtems/no-msg.c:
	Use size_t for sizes.
2007-02-06 10:32:29 +00:00
Ralf Corsepius
fffe6a769c Use size_t for sizes. 2007-02-06 10:31:18 +00:00
Ralf Corsepius
12d9b1b33c Use size_t for sizes. 2007-02-06 10:24:14 +00:00
Ralf Corsepius
2cd0ae2aa5 2007-02-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* rtems/src/msgqbroadcast.c: Use size_t for sizes.
	* rtems/src/msgmp.c: Use size_t for sizes.
	* rtems/src/msgqsubmit.c: Use size_t for sizes.
	* rtems/include/rtems/rtems/msgmp.h: Use size_t for sizes.
	* rtems/include/rtems/rtems/message.h: Use size_t for sizes.
	* score/inline/rtems/score/coremsg.inl: Use size_t for sizes.
2007-02-06 08:59:14 +00:00
Ralf Corsepius
8645c01c7a Use size_t for sizes. 2007-02-06 08:58:42 +00:00
Ralf Corsepius
f75461df63 2007-02-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* shmsupp/getcfg.c: Replace rtems_unsigned32 with uint32_t.
2007-02-06 08:41:37 +00:00
Ralf Corsepius
d41ed94f16 Use size_t for sizes. 2007-02-06 05:58:05 +00:00
Ralf Corsepius
de4620c42d 2007-02-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* itron/src/trcv_mbf.c: Use size_t for sizes.
	* libmisc/monitor/mon-object.c: Use size_t for sizes.
	* libmisc/monitor/mon-server.c: Use size_t for sizes.
	* libmisc/monitor/monitor.h: Use size_t for sizes.
	* libmisc/mw-fb/mw_uid.c: Use size_t for sizes.
2007-02-06 05:57:57 +00:00
Ralf Corsepius
edf59e7b66 2007-02-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* rtems/include/rtems/rtems/message.h: Use size_t for sizes.
2007-02-06 05:19:00 +00:00
Ralf Corsepius
6a53cda9fe Use size_t for sizes. 2007-02-06 05:18:50 +00:00
Ralf Corsepius
81ab02ceff 2007-02-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* rtems/src/msgqreceive.c: Use size_t for sizes.
	* posix/src/mqueuerecvsupp.c: Use size_t for sizes.
2007-02-06 04:47:41 +00:00
Ralf Corsepius
e5b095c404 Use size_t for sizes. 2007-02-06 04:47:06 +00:00
Ralf Corsepius
4bbec0cada 2007-02-06 Ralf Corsépius <ralf.corsepius@rtems.org>
* score/src/coremsgseize.c: Use size_t for sizes.
2007-02-06 03:51:51 +00:00
Ralf Corsepius
c0452f3b6e Use size_t for sizes. 2007-02-06 03:51:41 +00:00
Ralf Corsepius
6e5da27234 Use size_t for sizes. 2007-02-05 18:06:40 +00:00
Ralf Corsepius
9d3e9405ef 2007-02-05 Ralf Corsépius <ralf.corsepius@rtems.org>
* posix/include/rtems/posix/mqueue.h: Use size_t for sizes.
	* posix/src/mqueuesendsupp.c: Use size_t for sizes.
2007-02-05 18:06:33 +00:00
Ralf Corsepius
bd025c218a Use size_t for sizes. 2007-02-05 15:36:34 +00:00
Ralf Corsepius
beec7fde8e 2007-02-05 Ralf Corsépius <ralf.corsepius@rtems.org>
* score/include/rtems/score/coremsg.h: Use size_t for sizes.
	* score/src/coremsgbroadcast.c: Use size_t for sizes.
	* score/src/coremsgsubmit.c: Use size_t for sizes.
2007-02-05 15:36:29 +00:00
Eric Norum
33fc4f65ab Enable RTS/CTS flow-control pins. 2007-02-05 15:27:26 +00:00
Eric Norum
037d938a84 Always assert RTS* (if flow control is on it will override). 2007-02-02 22:30:44 +00:00
Ralf Corsepius
118823ba84 2007-01-30 Ralf Corsépius <ralf.corsepius@rtems.org>
* libblock/src/show_bdbuf.c: Use inttypes.h macros.
2007-01-30 07:58:24 +00:00
Till Straumann
985082dff2 2007-01-29 Till Straumann <strauman@slac.stanford.edu>
* vmeUniverse/README.porting, vmeUniverse/README.universe:
	updated, added more information for BSP implementors.

	* vmeUniverse/VMEDMA.h (added): VME DMA API definition.

	* vmeUniverse/bspVmeDmaList.h (added), vmeUniverse/bspVmeDmaListP.h (added),
	* vmeUniverse/bspVmeDmaList.c (added):
	Driver-independent code for linked-list DMA (public + private headers,
	implementation).

	* vmeUniverse/vmeUniverseDMA.h (added), vmeUniverse/vmeTsi148DMA.h (added):
	interface to new DMA features of drivers.

	* vmeUniverse/vme_amd_defs.h: Added definition for data-width
	hint bits (VME_MODE_DBWxx).


	* vmeUniverse/vmeTsi148.c: added DMA support. Added support for
	data-width hint/modifier bits.

	* vmeUniverse/vmeUniverse.c, vmeUniverse/vmeUniverse.h:
	Added support for data-width hint/modifier bits.
	Added support for xxx_BLT, xxx_MBLT address modifiers.
	Restrict DBW to 32 in non-MBLT modes (except single-beat;
	a comment is in README.universe). Updated DMA support to
	implement new VMEDMA.h API. Added support for non-incrementing
	VME addresses. Restrict data width to 32 for single-beat AMs
	when the universe would use MBLT for DMA.
2007-01-30 07:30:12 +00:00
Till Straumann
018eb73f2f 2007-01-29 Till Straumann <strauman@slac.stanford.edu>
* shared/vme/VMEConfig.h:
	Added more comments about the semantics of the various
	symbols BSPs should define in this file.
	Removed declarations of BSP_VMEInit(), BSP_VMEIrqMgrInstall().

	* shared/vme/vmeconfig.c: declare BSP_VMEInit(),
	BSP_VMEIrqMgrInstall() here.

	* Makefile.am, shared/vme/README,
	* shared/vme/vme_universe_dma.c (added): Added glue code
	implementing the VMEDMA.h API using the vmeUniverse driver.
2007-01-30 07:12:39 +00:00
Till Straumann
6350aa2ff1 2007-01-29 Till Straumann <strauman@slac.stanford.edu>
* Makefile.am, preinstall.am,
	* vme/vmeconfig.c (removed), vme/VMEConfig.h (added):
	cleaned up vme support - use files from libbsp/powerpc/shared/vme
	and define BSP specifica in VMEConfig.h.
	Use VME DMA support implemented by vmeUniverse and
	libbsp/powerpc/shared/vme/vme_universe_dma.c

	* irq/irq.c, include/gen2.h:
	removed _BSP_vme_bridge_irq variable and BSP_PIC_DO_EOI definition.
	Support for VME IRQ software priorities was incomplete/incorrect
	on this BSP.
2007-01-30 07:01:29 +00:00
Till Straumann
55f2643fcd * Makefile.am, preinstall.am, include/bsp.h:
Use VME DMA support implemented by vmeUniverse and
	libbsp/powerpc/shared/vme/vme_universe_dma.c
	Added explanation for use of BSP_PIC_DO_EOI by
	BSP implementors who derive from this 'include/bsp.h'.
2007-01-30 06:56:24 +00:00
Till Straumann
8f287557c6 * Makefile.am, preinstall.am, include/bsp.h,
* vme/vmeconfig.c (removed), vme/VMEConfig.h (added):
	cleaned up vme support - use files from libbsp/powerpc/shared/vme
	and define BSP specifica in VMEConfig.h.
	Use VME DMA support implemented by vmeUniverse and
	libbsp/powerpc/shared/vme/vme_universe_dma.c
2007-01-30 06:53:10 +00:00
Till Straumann
dbffeacdc1 * Makefile.am, preinstall.am, include/bsp.h,
* vme/vmeconfig.c (removed), vme/VME.h (removed):
	cleaned up vme support - use files from libbsp/powerpc/shared/vme
	and define BSP specifica in VMEConfig.h.
	Use VME DMA support implemented by vmeUniverse and
	libbsp/powerpc/shared/vme/vme_universe_dma.c
2007-01-30 06:50:00 +00:00
Till Straumann
ff3a16d591 * Makefile.am:
added new files in shared/vmeUniverse to EXTRA_DIST
2007-01-30 06:38:22 +00:00
Ralf Corsepius
fa9ed825ef 2007-01-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* GT64260/MVME5500I2C.c: Eliminate u32.
2007-01-29 05:29:12 +00:00
Ralf Corsepius
59b95d9869 2007-01-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* GT64260/MVME5500I2C.c, pci/pci.c: Eliminate unchar.
2007-01-29 05:25:59 +00:00
Ralf Corsepius
5ea0caad27 2007-01-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* libmisc/mw-fb/mw_fb.h: Eliminate __u32, __u16.
2007-01-29 04:45:29 +00:00
Ralf Corsepius
5f477772d3 2007-01-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* console/fb_vga.c: Eliminate __u16, __u32.
2007-01-29 04:44:39 +00:00
Ralf Corsepius
874a8571e7 Remove. 2007-01-28 06:16:14 +00:00
Ralf Corsepius
8deda62402 2007-01-28 Ralf Corsépius <ralf.corsepius@rtems.org>
* libnetworking/libc/gethostbyht.c: Remove warning on unused vars.
	Remove isblank (supposed to be provided by libc).
2007-01-28 03:58:10 +00:00
Ralf Corsepius
7c0f1d4bc2 2007-01-27 Ralf Corsépius <ralf.corsepius@rtems.org>
* libblock/src/show_bdbuf.c: Convert from DOS to UNIX.
2007-01-27 18:21:05 +00:00
Ralf Corsepius
e979fc841f Fix typos. 2007-01-27 07:29:30 +00:00
Ralf Corsepius
2e908e6b78 2007-01-27 Ralf Corsépius <ralf.corsepius@rtems.org>
* score/include/rtems/system.h: Remove __RTEMS_MAJOR__,
	 __RTEMS_MINOR__, __RTEMS_REVISION__ (moved to cpuopt.h).
	* configure.ac: Dynamically derive __ __RTEMS_MAJOR__,
	__RTEMS_MINOR__, __RTEMS_REVISION__ from _RTEMS_VERSION.
	Add __RTEMS_MAJOR__, __RTEMS_MINOR__,__RTEMS_REVISION__ to cpuopt.h.
2007-01-27 07:28:06 +00:00
Ralf Corsepius
4b3a3e1d26 Remove __RTEMS_MAJOR__,
__RTEMS_MINOR__, __RTEMS_REVISION__ (moved to cpuopt.h).
2007-01-27 07:27:52 +00:00
Ralf Corsepius
51405b94e8 Dynamically derive __ __RTEMS_MAJOR__,
__RTEMS_MINOR__, __RTEMS_REVISION__ from _RTEMS_VERSION.
Add __RTEMS_MAJOR__, __RTEMS_MINOR__,__RTEMS_REVISION__ to cpuopt.h.
2007-01-27 07:27:41 +00:00
Ralf Corsepius
7246b0c9b1 Cosmetics. 2007-01-26 06:18:49 +00:00
Thomas Doerfler
4de554eb10 fixed typo in console/console.c 2007-01-24 13:04:23 +00:00
Joel Sherrill
0b7edb75f3 Formatting. 2007-01-23 16:49:11 +00:00
Joel Sherrill
14c7716c49 Formatting. 2007-01-22 23:02:45 +00:00
Eric Norum
1bf40dc84c Add capability to lock at 10-half.
Expand report to include auto/fixed status
2007-01-22 16:55:23 +00:00
Till Straumann
ce4f46651f 2007-01-19 Till Straumann <strauman@slac.stanford.edu>
* mvme5500/Makefile.am, mvme5500/preinstall.am,
	* mvme5500/vme/VME.h, mvme5500/vme/VMEConfig.h,
	* mvme5500/vme/vmeconfig.c:
	removed copies of vmeconfig.c, VME.h - use generic
	versions instead.
2007-01-19 20:45:24 +00:00
Till Straumann
8b77bd8f70 *** empty log message *** 2007-01-19 20:41:52 +00:00
Till Straumann
5a33479a64 2007-01-19 Till Straumann <strauman@slac.stanford.edu>
* Makefile.am:
	moved VME.h from libbsp/powerpc/shared/vme to
	libbsp/shared/vmeUniverse; eventually, this (and other)
	VME API headers should migrate to cpukit.
2007-01-19 20:40:12 +00:00
Till Straumann
af2898d78c 2007-01-19 Till Straumann <strauman@slac.stanford.edu>
* Makefile.am:
	moved VME.h from libbsp/powerpc/shared/vme to
	libbsp/shared/vmeUniverse; eventually, this (and other)
	VME API headers should migrate to cpukit.
2007-01-19 20:32:43 +00:00
Ralf Corsepius
280e1863ff 2007-01-18 Ralf Corsépius <ralf.corsepius@rtems.org>
* custom/Cygwin-posix.cfg, custom/FreeBSD-posix.cfg,
	custom/HPUX9-posix.cfg, custom/Linux-posix.cfg,
	custom/Solaris-posix.cfg, custom/armulator.cfg, custom/av5282.cfg,
	custom/bare.cfg, custom/csb336.cfg, custom/csb360.cfg,
	custom/dmv152.cfg, custom/edb7312.cfg, custom/ep1a.cfg,
	custom/erc32.cfg, custom/erc32nfp.cfg, custom/gba.cfg,
	custom/gen405.cfg, custom/gen5200.cfg, custom/gen68302.cfg,
	custom/gen68340.cfg, custom/gen68360.cfg, custom/gensh1.cfg,
	custom/gensh2.cfg, custom/gensh4.cfg, custom/gp32.cfg,
	custom/h8sim.cfg, custom/helas403.cfg, custom/hurricane.cfg,
	custom/i386ex.cfg, custom/idp.cfg, custom/jmr3904.cfg,
	custom/leon2.cfg, custom/leon3.cfg, custom/mbx821_002b.cfg,
	custom/mbx8xx.cfg, custom/mcf5206elite.cfg, custom/mcf5235.cfg,
	custom/mcp750.cfg, custom/mpc8260ads.cfg, custom/mrm332.cfg,
	custom/mtx603e.cfg, custom/mvme136.cfg, custom/mvme147.cfg,
	custom/mvme162.cfg, custom/mvme162lx.cfg, custom/mvme167.cfg,
	custom/mvme2100.cfg, custom/mvme2307.cfg, custom/mvme5500.cfg,
	custom/ods68302.cfg, custom/pc386.cfg, custom/psim.cfg,
	custom/rbtx4925.cfg, custom/score603e.cfg, custom/sim68000.cfg,
	custom/simcpu32.cfg, custom/simsh4.cfg, custom/simsh7032.cfg,
	custom/simsh7045.cfg, custom/ss555.cfg, custom/ts_386ex.cfg: Add -g
	to CFLAGS_OPTIMIZE_V.
2007-01-18 11:27:17 +00:00
Ralf Corsepius
2f6b417eb6 Add -g to CFLAGS_OPTIMIZE_V. 2007-01-18 11:27:07 +00:00
Ralf Corsepius
596629a20d 2007-01-18 Ralf Corsépius <ralf.corsepius@rtems.org>
* custom/gensh1.cfg, custom/gensh2.cfg, custom/gensh4.cfg,
	custom/hurricane.cfg, custom/rbtx4925.cfg, custom/simsh4.cfg:
	Use $(NM) -g -n instead of $(NM) -n.
2007-01-18 10:21:37 +00:00
Ralf Corsepius
ee8282993f Use $(NM) -g -n instead of $(NM) -n. 2007-01-18 10:21:00 +00:00
Ralf Corsepius
5ef125f5f3 2007-01-18 Ralf Corsépius <ralf.corsepius@rtems.org>
* custom/Cygwin-posix.cfg, custom/FreeBSD-posix.cfg,
	custom/HPUX9-posix.cfg, custom/Linux-posix.cfg,
	custom/Solaris-posix.cfg: Use $(NM) -g -n instead of $(NM) -ng.
2007-01-18 10:13:59 +00:00
Ralf Corsepius
4cb2634458 Use $(NM) -g -n instead of $(NM) -ng. 2007-01-18 10:13:41 +00:00
Ralf Corsepius
0a4d609ff7 2007-01-18 Ralf Corsépius <ralf.corsepius@rtems.org>
* custom/Linux-posix.cfg, custom/Solaris-posix.cfg,
	custom/armulator.cfg, custom/av5282.cfg, custom/bare.cfg,
	custom/brs5l.cfg, custom/csb336.cfg, custom/csb337.cfg,
	custom/csb350.cfg, custom/csb360.cfg, custom/dmv152.cfg,
	custom/edb7312.cfg, custom/ep1a.cfg, custom/erc32.cfg,
	custom/erc32nfp.cfg, custom/gba.cfg, custom/gen405.cfg,
	custom/gen5200.cfg, custom/gen68302.cfg, custom/gen68340.cfg,
	custom/gen68360.cfg, custom/genmongoosev.cfg, custom/gensh1.cfg,
	custom/gensh2.cfg, custom/gensh4.cfg, custom/gp32.cfg,
	custom/h8sim.cfg, custom/helas403.cfg, custom/hurricane.cfg,
	custom/i386ex.cfg, custom/idp.cfg, custom/jmr3904.cfg,
	custom/leon2.cfg, custom/leon3.cfg, custom/mbx821_002b.cfg,
	custom/mbx8xx.cfg, custom/mcf5206elite.cfg, custom/mcf5235.cfg,
	custom/mcp750.cfg, custom/mpc8260ads.cfg, custom/mrm332.cfg,
	custom/mtx603e.cfg, custom/mvme136.cfg, custom/mvme147.cfg,
	custom/mvme162.cfg, custom/mvme162lx.cfg, custom/mvme167.cfg,
	custom/mvme2100.cfg, custom/mvme2307.cfg, custom/mvme5500.cfg,
	custom/no_bsp.cfg, custom/ods68302.cfg, custom/pc386.cfg,
	custom/pc386dx.cfg, custom/pc486.cfg, custom/pc586.cfg,
	custom/pc686.cfg, custom/pck6.cfg, custom/psim.cfg,
	custom/rbtx4925.cfg, custom/rbtx4938.cfg, custom/score603e.cfg,
	custom/shsim.cfg, custom/sim68000.cfg, custom/simcpu32.cfg,
	custom/simsh4.cfg, custom/simsh7032.cfg, custom/simsh7045.cfg,
	custom/ss555.cfg, custom/ts_386ex.cfg, custom/uC5282.cfg: Backport
	various changes from CVS-HEAD.
2007-01-18 08:41:17 +00:00
Ralf Corsepius
32fe9962f1 Backport various changes from CVS-HEAD. 2007-01-18 08:41:06 +00:00
Joel Sherrill
ea7e978df6 Fixed spacing. 2007-01-17 14:17:34 +00:00
Till Straumann
bef8b92b57 2007-01-16 Till Straumann <strauman@slac.stanford.edu>
* vmeUniverse/vmeTsi148.c, vmeUniverse/vmeTsi148.h,
	* vmeUniverse/vmeUniverse.c, vmeUniverse/vmeUniverse.h,
	* vmeUniverse/vme_am_defs.h:
	Added SLAC/Stanford Authorship Note / Copyright + Liability Disclaimer.
2007-01-17 06:30:23 +00:00
Till Straumann
29f73d3ed3 2007-01-16 Till Straumann <strauman@slac.stanford.edu>
* libi2c/libi2c.c, libi2c/libi2c.h:
	Added SLAC/Stanford Authorship Note / Copyright + Liability Disclaimer.
2007-01-17 06:18:30 +00:00
Till Straumann
37b9679238 2007-01-16 Till Straumann <strauman@slac.stanford.edu>
* libnetworking/rtems/rtems_mii_ioctl.c,
	* libnetworking/rtems/rtems_mii_ioctl.h,
	* libnetworking/rtems/rtems_mii_ioctl_kern.c:
	Added SLAC/Stanford Authorship Note / Copyright + Liability Disclaimer.
2007-01-17 06:12:56 +00:00
Till Straumann
0945123ecd 2007-01-16 Till Straumann <strauman@slac.stanford.edu>
* libchip/i2c/i2c-2b-eeprom.c, libchip/i2c/i2c-2b-eeprom.h,
	* libchip/i2c/i2c-ds1621.c, libchip/i2c/i2c-ds1621.h:
	Added SLAC/Stanford Authorship Note / Copyright + Liability Disclaimer.
2007-01-17 06:02:41 +00:00
Till Straumann
4712cdcc8d 2007-01-16 Till Straumann <strauman@slac.stanford.edu>
* mpc6xx/mmu/pte121.h, mpc6xx/mmu/pte121.c:
	Added SLAC/Stanford Authorship Note / Copyright + Liability Disclaimer.
2007-01-17 05:55:45 +00:00
Till Straumann
88fcc6d45a * acinclude.m4: reverted erroneous addition of 'beatnik' subdir. 2007-01-17 05:41:51 +00:00
Till Straumann
2b0a037051 2007-01-16 Till Straumann <strauman@slac.stanford.edu>
* ep1a/vme/vmeconfig.c, mvme5500/pci/pcifinddevice.c,
	* mvme5500/startup/pgtbl_activate.c, mvme5500/vectors/bspException.h,
	* mvme5500/vectors/exceptionhandler.c, mvme5500/vme/VME.h,
	* mvme5500/vme/vmeconfig.c, score603e/vme/vmeconfig.c, shared/pci/pcifinddevice.c,
	* shared/startup/pgtbl_activate.c, shared/startup/pgtbl_setup.c,
	* shared/startup/probeMemEnd.c, shared/startup/sbrk.c, shared/vme/VME.h,
	* shared/vme/VMEConfig.h, shared/vme/vme_universe.c, shared/vme/vmeconfig.c:
	Added SLAC/Stanford Authorship Note / Copyright + Liability Disclaimer.
2007-01-16 23:09:50 +00:00
Ralf Corsepius
a4d1521f1c Replace nosrc.rpm with src.rpm 2007-01-15 09:51:09 +00:00
Ralf Corsepius
7a2746b7ad 2007-01-15 Ralf Corsépius <ralf.corsepius@rtems.org>
* common/rtems.texi.in: Use bugzilla for RTEMSBUGS.
	Remove RTEMSGNATS.
2007-01-15 09:15:14 +00:00
Ralf Corsepius
c8d34d7e8e More tweaks. 2007-01-15 08:41:05 +00:00
Ralf Corsepius
9627be9c99 More tweaks. 2007-01-15 08:24:52 +00:00
Ralf Corsepius
5477a89a90 Update. 2007-01-15 07:29:21 +00:00
Ralf Corsepius
cf56606a5d 2007-01-15 Ralf Corsépius <ralf.corsepius@rtems.org>
* started/binaries.t, started/buildc.t, started/tversions.texi.in:
	Various update to reflect current toolchains.
2007-01-15 07:28:29 +00:00
Ralf Corsepius
ab355bbc26 2007-01-15 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Reflect having moved setup.def.
	Eliminate gcc3*.
2007-01-15 07:24:01 +00:00
Ralf Corsepius
07beb83275 2007-01-15 Ralf Corsépius <ralf.corsepius@rtems.org>
* setup.def: New (Formerly in ../scripts).
2007-01-15 03:38:04 +00:00
cvs2git
cbc4f7aae5 This commit was manufactured by cvs2svn to create branch 'rtems-4-7-branch'.
Cherrypick from master 2007-01-15 03:35:24 UTC Ralf Corsepius <ralf.corsepius@rtems.org> 'New (Formerly in ../scripts).':
    doc/setup.def
2007-01-15 03:35:25 +00:00
Ralf Corsepius
7812763ae1 New. 2007-01-12 14:49:41 +00:00
Ralf Corsepius
51233fd379 Upgrade to gcc-core-4.1.1-rtems4.7-20070102.diff 2007-01-12 14:45:27 +00:00
Ralf Corsepius
769cf2e06c Bump GCC_RPMREL = 6 2007-01-12 10:58:53 +00:00
Ralf Corsepius
a6ad5c52bf Upgrade to newlib-1.15.0 2007-01-12 10:45:35 +00:00
Ralf Corsepius
c0475f9dd6 Add newlib-1.15.0 support. 2007-01-12 10:36:43 +00:00
Ralf Corsepius
a420327cc2 New. 2007-01-12 10:33:47 +00:00
Ralf Corsepius
5af0411f45 Add BINUTILS += 2007-01-12 09:18:53 +00:00
Ralf Corsepius
e7f218dc78 Add BINUTILS_OPTS. 2007-01-12 09:17:05 +00:00
Joel Sherrill
ca3bacb0f9 2007-01-11 Joel Sherrill <joel@OARcorp.com>
* score/macros/rtems/score/object.inl: Fix macro implementation so it
	compiles in single processor configuration.
2007-01-11 22:28:53 +00:00
Thomas Doerfler
5299575cc3 added missing file libblock/src/show_bdbuf.c 2007-01-10 14:25:25 +00:00
Ralf Corsepius
ace2542c00 Update bugfix address 2007-01-10 06:33:50 +00:00
Ralf Corsepius
629a296ac9 AC_PREREQ(2.60) 2007-01-08 16:51:11 +00:00
Ralf Corsepius
0b04b30803 2007-01-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* acinclude.m4, configure.ac: AC_PREREQ(2.60).
2007-01-08 16:50:58 +00:00
Ralf Corsepius
47f295390f Regenerate. 2007-01-08 08:43:45 +00:00
Ralf Corsepius
87caabefe1 2007-01-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* ampolish3: Use MKDIR_P instead of mkdir_p.
2007-01-08 08:40:51 +00:00
Ralf Corsepius
fee0dc4d2f 2007-01-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Remove scripts/.
2007-01-08 08:36:31 +00:00
Ralf Corsepius
c624ce8908 Remove (Obsolete). 2007-01-08 08:24:50 +00:00
Ralf Corsepius
326e457ca5 2007-01-02 Ralf Corsépius <ralf.corsepius@rtems.org>
* posix/include/aio.h: s/aoi_lio_opcode/aio_lio_opcode/
	(BZ 1203).
2007-01-02 06:35:51 +00:00
Joel Sherrill
3f933c9b91 2006-12-20 Joel Sherrill <joel@OARcorp.com>
* posix_users/thread.t: Correct spelling error.
2006-12-20 21:14:46 +00:00
Till Straumann
7e278aa202 * startup/bspstart.c: Changed BSP_installVME_isr() so that
the special handling of a 'FPGA interrupt' [this FPGA is *not*
	present on the uC5282 module but is externally connected to
	IRQ1 on Eric Norum's particular 'motherboard'] is only
	activated when connecting to the special vectors > 192.
	The change allows us ordinary users [:-)] to use IRQ1
	normally, simply by connecting an ISR to vector 64+1...
	Also, BSP_enable_irq_at_pic(), BSP_disable_irq_at_pic(),
	BSP_irq_is_enabled_at_pic() were introduced (compat. with
	some PPC BSPs).
2006-12-18 22:21:19 +00:00
Thomas Doerfler
36cb812bbc corrected bug in ata.c to avoid lockup of libblock
added remote frequest support to gen5200 BSP
2006-12-18 09:46:59 +00:00
Till Straumann
d761931ed0 2006-12-14 Till Straumann <strauman@slac.stanford.edu>
* m68k/mcf5282/include/mcf5282.h: fixed wrong value
	of MCF5282_QSPI_QDLYR_SPE.
2006-12-14 23:09:11 +00:00
Joel Sherrill
c8f69360bc Fixed comment -- must be less than 80 characters wide. 2006-12-14 12:24:44 +00:00
Till Straumann
61d5ec9714 2006-12-13 Till Straumann <strauman@slac.stanford.edu>
* mvme5500/Makefile.am, mvme5500/preinstall.am:
	need to install bsp/vme_am_defs.h
2006-12-13 21:56:13 +00:00
Till Straumann
3fadd7a8a0 * oops - had worked on the wrong file. Reverted changes... 2006-12-13 21:08:44 +00:00
Till Straumann
138b8893ca * ChangeLog: fixed date of TS' last entry. 2006-12-13 21:03:50 +00:00
Till Straumann
93cd2c6efe 2006-12-13 Till Straumann <strauman@slac.stanford.edu>
* shared/vme/vmeconfig.c, shared/vme/vme_universe.c:
	use symbolic flag instead of numerical value
	(vmeUniverseInstallIrqMgrAlt()). Define __INSIDE_RTEMS_BSP__
	before including <bsp/vmeUniverse.h>
2006-12-13 20:48:37 +00:00
Till Straumann
a175c1fb77 * vmeUniverse/vme_am_defs.h: Added address modifiers for 2eVME. Added
flags for 2eSST and DBW16.

	* vmeUniverse/vmeUniverse.h: Removed AM definitions and include vme_am_defs.h
	instead. Declare new routine vmeUniverseMapCRG(). Export 'irq manager' API
	only if __INSIDE_RTEMS_BSP__ defined. Renamed 'shared' argument to
	vmeUniverseInstallIrqMgrAlt() to 'flags' since now more options are available.
	Added new flag to install 'posted-write' workaround.

	* vmeUniverse/vmeUniverse.c: Allow BSP to override BSP_PCI2LOCAL_ADDR()
	macro. Data width of outbound port can now be restricted to 16-bit
	(if new DBW16 flag set in address modifier). Added vmeUniverseMapCRG()
	for mapping local registers onto VME. Interrupt manager now implements
	a workaround (enabled at installation time) which flushes the write-fifo
	after user ISR returns. This requires the universe's registers to be
	accessible from VME (either CSR space or CRG mapped to A16/A24/A32),
	though.

	* vmeUniverse/vmeTsi148.h: vmeTsi148ClearVMEBusErrors() now returns
	the fault address as a 32-bit address (not ulonglong anymore). The
	driver only supports 32-bit addresses. Declare new routine vmeTsi148MapCRG().
	Export 'irq manager' API only if __INSIDE_RTEMS_BSP__ defined.
	Renamed 'shared' argument to vmeTsi148InstallIrqMgrAlt() to 'flags'
	to allow more options to be supported. Added comments explaining the
	'posted-write' workaround implemented by the interrupt manager.

	* vmeUniverse/vmeTsi148.c: Clear 'SYSFAIL' during initialization.
	Allow BSP to override BSP_PCI2LOCAL_ADDR() macro. Added support for
	2eSST when configuring windows (untested - I have no 2eSST).
	Added vmeTsi148MapCRG() for mapping local registers onto VME.
	Implemented 'posted-write' workaround for interrupt manager
	(consult source for details).
2006-12-13 20:39:29 +00:00
Joel Sherrill
31cd77864b 2006-12-13 Joel Sherrill <joel@OARcorp.com>
PR 1181/bsps
	* optman/rtems/no-msg.c: Clean up dead code.
2006-12-13 14:49:38 +00:00
Joel Sherrill
70443fbbdf 2006-12-13 Alexey Shamrin <shamrin@gmail.com>
PR 1189/bsps
	* console/outch.c: If you print a character with the code larger than
	127 (extended ASCII) to the VGA console, then it blinks. The reason:
	char == signed char, so such characters get represented by negative
	numbers. The sign bit then goes to attribute byte, resulting in the
	blinking.
2006-12-13 12:35:28 +00:00
Ralf Corsepius
6ac4774dd7 2006-12-13 Ralf Corsépius <ralf.corsepius@rtems.org>
* aclocal/rtems-ampolish.m4: Use am_aux_dir/ampolish3.
2006-12-13 05:39:46 +00:00
Ralf Corsepius
8bcd65b292 Use am_aux_dir/ampolish3. 2006-12-13 05:37:15 +00:00
Ralf Corsepius
640495db3a Fix ugly typos. 2006-12-13 02:52:34 +00:00
Ralf Corsepius
086917ba30 2006-12-12 Ralf Corsépius <ralf.corsepius@rtems.org>
* aclocal/rtems-ampolish.m4: Require AM_MAINTAINER_MODE.
	* aclocal/rtems-top.m4: Remove RTEMS_AMPOLISH.
	* aclocal/project-root.m4: Require RTEMS_AMPOLISH.
2006-12-13 02:26:56 +00:00
Ralf Corsepius
4a81293451 Require RTEMS_AMPOLISH. 2006-12-13 02:26:16 +00:00
Ralf Corsepius
38d74a3f85 Remove RTEMS_AMPOLISH. 2006-12-13 02:26:00 +00:00
Ralf Corsepius
7a1d233117 Require AM_MAINTAINER_MODE. 2006-12-13 02:25:42 +00:00
Ralf Corsepius
f65c7eb304 2006-12-12 Ralf Corsépius <ralf.corsepius@rtems.org>
* aclocal/rtems-ampolish.m4: Require AM_MAINTAINER_MODE.
	* aclocal/rtems-top.m4: Remove RTEMS_AMPOLISH.
	* configure.ac: Add RTEMS_AMPOLISH.
2006-12-12 16:45:39 +00:00
Ralf Corsepius
5054b0a917 Add RTEMS_AMPOLISH. 2006-12-12 16:44:53 +00:00
Ralf Corsepius
b02783fefd Require AM_MAINTAINER_MODE. 2006-12-12 16:44:41 +00:00
Ralf Corsepius
5a89374297 Remove RTEMS_AMPOLISH. 2006-12-12 16:44:26 +00:00
Ralf Corsepius
80e88f244a 2006-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* libnetworking/rtems/rtems_glue.c: Remove local
	extern strdup.
2006-12-08 09:11:24 +00:00
Ralf Corsepius
1f01d5d7a6 Remove local extern strdup. 2006-12-08 09:11:05 +00:00
Ralf Corsepius
890c768e9e 2006-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* libcsupport/include/rtems/libio.h, libcsupport/src/read.c,
	libfs/src/dosfs/msdos.h, libfs/src/dosfs/msdos_dir.c,
	libfs/src/dosfs/msdos_file.c, libfs/src/imfs/deviceio.c,
	libfs/src/imfs/imfs.h, libfs/src/imfs/imfs_directory.c,
	libfs/src/imfs/memfile.c, libnetworking/lib/ftpfs.c,
	libnetworking/lib/tftpDriver.c, libnetworking/rtems/rtems_syscall.c:
	Use size_t instead of uint32_t for read/write count-args.
2006-12-08 07:24:05 +00:00
Ralf Corsepius
9e5d4952d5 Use size_t instead of uint32_t ad/write count-args. 2006-12-08 07:23:00 +00:00
Ralf Corsepius
1e65741d06 2006-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* rtems/src/timerserverfirewhen.c: Remove local
	extern _Timer_Seconds_chain.
	* rtems/src/timerserverfireafter.c: Remove local
	extern _Timer_Ticks_chain.
2006-12-08 06:55:47 +00:00
Ralf Corsepius
1b7c831311 Remove local extern _Timer_Ticks_chain. 2006-12-08 06:55:20 +00:00
Ralf Corsepius
c0527a2d7b Remove local extern _Timer_Seconds_chain. 2006-12-08 06:55:04 +00:00
Ralf Corsepius
52781f4777 2006-12-04 Ralf Corsépius <ralf.corsepius@rtems.org>
* score/inline/rtems/score/chain.inl: Add const qualifiers (works
	  around 651 aliasing bugs).
2006-12-04 14:46:11 +00:00
Ralf Corsepius
4b1756466e Backport from HEAD 2006-12-04 14:43:58 +00:00
Ralf Corsepius
9d7508e4f6 2006-12-02 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: New BUG-REPORT address.
2006-12-02 06:10:26 +00:00
Ralf Corsepius
5d91bedec0 2006-12-02 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: New BUG-REPORT address.
2006-12-02 06:09:45 +00:00
Ralf Corsepius
997c921551 Cleanup (Backport from HEAD). 2006-11-30 06:58:56 +00:00
Ralf Corsepius
3153d3f17c 2006-11-30 Ralf Corsépius <ralf.corsepius@rtems.org>
* custom/Cygwin-posix.cfg, custom/FreeBSD-posix.cfg,
	custom/HPUX9-posix.cfg, custom/Linux-posix.cfg
	custom/Solaris-posix.cfg, custom/armulator.cfg
	custom/bare.cfg, custom/csb336.cfg
	custom/csb337.cfg, custom/csb350.cfg
	custom/dmv152.cfg, custom/edb7312.cfg
	custom/ep1a.cfg, custom/erc32.cfg
	custom/erc32nfp.cfg, custom/gba.cfg
	custom/gen405.cfg, custom/gen5200.cfg
	custom/gen68302.cfg, custom/gen68340.cfg
	custom/gen68360.cfg, custom/genmongoosev.cfg
	custom/gensh1.cfg, custom/gensh2.cfg
	custom/gensh4.cfg, custom/gp32.cfg
	custom/h8sim.cfg, custom/helas403.cfg
	custom/hurricane.cfg, custom/i386ex.cfg
	custom/idp.cfg, custom/jmr3904.cfg
	custom/leon2.cfg, custom/leon3.cfg
	custom/mbx821_002b.cfg, custom/mbx8xx.cfg
	custom/mcp750.cfg, custom/mpc8260ads.cfg
	custom/mrm332.cfg, custom/mtx603e.cfg
	custom/mvme136.cfg, custom/mvme147.cfg
	custom/mvme162.cfg, custom/mvme162lx.cfg
	custom/mvme167.cfg, custom/mvme2100.cfg
	custom/mvme2307.cfg, custom/mvme5500.cfg
	custom/ods68302.cfg, custom/pc386.cfg
	custom/psim.cfg, custom/rbtx4925.cfg
	custom/rbtx4938.cfg, custom/score603e.cfg
	custom/shsim.cfg, custom/sim68000.cfg
	custom/simcpu32.cfg, custom/simsh4.cfg
	custom/simsh7032.cfg, custom/simsh7045.cfg
	custom/ss555.cfg, custom/ts_386ex.cfg:
	Cleanup (Backport from HEAD).
2006-11-30 06:55:43 +00:00
Joel Sherrill
161d158209 2006-11-20 Joel Sherrill <joel@OARcorp.com>
* sp27/init.c, sp27/sp27.scn: Correct configured number of semaphores
	and make output more compliant with other tests.
2006-11-20 23:18:37 +00:00
Ralf Corsepius
c0e38d1b90 2006-11-20 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Remove ampolish3.
2006-11-20 05:59:19 +00:00
Ralf Corsepius
f57174cdf6 2006-11-20 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Add ampolish3.
	* bootstrap: Add -r (autoreconf).
2006-11-20 05:44:15 +00:00
Ralf Corsepius
0cfca5fcea 2006-11-18 Ralf Corsépius <ralf.corsepius@rtems.org>
* bootstrap: Add -p (regenerate preinstall.ams).
2006-11-18 01:59:44 +00:00
Joel Sherrill
540c746db9 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* runtest: Correct tool name to match 4.7.
2006-11-17 23:05:58 +00:00
Joel Sherrill
91cee2ef87 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* psxsem01/init.c: Account for change in POSIX semaphore time handling.
	Previously the timeout was not absolute time and checked BEFORE
	attempting to lock semaphore.
2006-11-17 23:04:38 +00:00
Joel Sherrill
bd43cde824 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* sp09/screen12.c, sp16/task2.c, sp16/task3.c: Ensure tests generate
	cases intended on all targets possible with new heap algorithm.
2006-11-17 23:03:08 +00:00
Joel Sherrill
012739eb9e 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* score/inline/rtems/score/object.inl, score/src/objectnametoid.c:
	Properly honor searching only local node even when on single CPU
	system.
2006-11-17 22:59:28 +00:00
Joel Sherrill
b5779dc1a3 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* score/src/coresemseize.c: Add missing ISR enable.
2006-11-17 22:58:21 +00:00
Joel Sherrill
1d4747f226 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* score/src/heapwalk.c: Use printk not printf.
2006-11-17 22:57:37 +00:00
Joel Sherrill
89e0ecc7b9 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* libmisc/rtmonuse/rtmonuse.c: Do not use float for calculations.
2006-11-17 22:55:39 +00:00
Joel Sherrill
e992fa47b8 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* libcsupport/src/sync.c: Do not dereference NULL reent.
2006-11-17 22:54:33 +00:00
Joel Sherrill
e2cafb006a 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* posix/src/semtimedwait.c: Used wrong constant for blocking with bad
	timeout value.
2006-11-17 22:52:24 +00:00
Joel Sherrill
ce6568eb65 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* posix/src/keygetspecific.c, posix/src/keysetspecific.c: Correct
	indexing of key data to use api and index NOT class and index.
	Class is always 1.
2006-11-17 22:51:47 +00:00
Joel Sherrill
f791c6c2c1 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* timer/timer.c: Update timer overhead for start/stop.
2006-11-17 22:45:50 +00:00
Joel Sherrill
88b86cb55a 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* runtest.in: Change toolname to match 4.7.
2006-11-17 22:45:28 +00:00
Joel Sherrill
b066112982 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* clock_driver_stub.c, clockdrv_shell.c: Use common clock driver
	template and eliminate all fast idle code specific to this BSP. This
	eliminates a fair amount of code in the BSP clock driver and
	bsp_startup. The LEON3 has to do a scan of the AMBA bus to find the
	timer so I added the new hook Clock_driver_support_find_timer to
	support this. In general, there was some clean up to the file headers
	of various files.
2006-11-17 22:44:17 +00:00
Joel Sherrill
2714a925c8 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* clock/clockdrv.c: Add copyright.
2006-11-17 22:41:34 +00:00
Joel Sherrill
a1d09f90b5 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* itrontask04/init.c, itrontask04/itrontask04.scn: Cannot print with
	dispatching disabled so fix test not to print while dispatching is
	disabled.
2006-11-17 22:40:12 +00:00
Joel Sherrill
8c3ab9fcd8 2006-11-17 Joel Sherrill <joel@OARcorp.com>
* runtest: Change toolname to match 4.7.
2006-11-17 22:36:21 +00:00
Joel Sherrill
5438bca377 2006-11-16 Joel Sherrill <joel@OARcorp.com>
* shared/bspstart.c, shared/start.S: Use common clock driver template
	and eliminate all fast idle code specific to this BSP. This
	eliminates a fair amount of code in the BSP clock driver and
	bsp_startup. The LEON3 has to do a scan of the AMBA bus to find the
	timer so I added the new hook Clock_driver_support_find_timer to
	support this. In general, there was some clean up to the file headers
	of various files.
2006-11-16 16:31:20 +00:00
Joel Sherrill
7b8dee3fbc 2006-11-16 Joel Sherrill <joel@OARcorp.com>
* clock/ckinit.c, startup/bspstart.c: Use common clock driver template
	and eliminate all fast idle code specific to this BSP. This
	eliminates a fair amount of code in the BSP clock driver and
	bsp_startup. The LEON3 has to do a scan of the AMBA bus to find the
	timer so I added the new hook Clock_driver_support_find_timer to
	support this. In general, there was some clean up to the file headers
	of various files.
2006-11-16 16:31:18 +00:00
Joel Sherrill
99ffe87f4d 2006-11-16 Joel Sherrill <joel@OARcorp.com>
* clock/ckinit.c: Use common clock driver template and eliminate all
	fast idle code specific to this BSP. This eliminates a fair amount of
	code in the BSP clock driver and bsp_startup. The LEON3 has to do a
	scan of the AMBA bus to find the timer so I added the new hook
	Clock_driver_support_find_timer to support this. In general, there
	was some clean up to the file headers of various files.
2006-11-16 16:31:16 +00:00
Joel Sherrill
44dde18e64 2006-11-16 Joel Sherrill <joel@OARcorp.com>
* clock/ckinit.c, console/console.c: Use common clock driver template
	and eliminate all fast idle code specific to this BSP. This
	eliminates a fair amount of code in the BSP clock driver and
	bsp_startup. The LEON3 has to do a scan of the AMBA bus to find the
	timer so I added the new hook Clock_driver_support_find_timer to
	support this. In general, there was some clean up to the file headers
	of various files.
2006-11-16 16:31:14 +00:00
Ralf Corsepius
143902fc6a 2006-11-16 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Remove RTEMS_AMPOLISH3.
	Don't explictly pass CFLAGS_OPTIMIZE_V, CPU_CFLAGS.
	Compose CFLAGS. Append CFLAGS to ac_configure_args.
	* aclocal/bsp-configure.m4: AC_PREREQ(2.60).
	  Remove checks for AMPOLISH3.
	* aclocal/rtems-ampolish.m4: Pick up ampolish3 from ac_aux_dir.
	* aclocal/rtems-top.m4: Add RTEMS_AMPOLISH3.
	* ampolish3: Remove.
	* aclocal/prog-cc.m4: Remove CFLAGS.
2006-11-16 05:29:25 +00:00
Ralf Corsepius
5c64772fb5 AC_PREREQ(2.60).
Remove checks for AMPOLISH3.
2006-11-16 05:28:34 +00:00
Ralf Corsepius
fa919224a1 Pick up ampolish3 from ac_aux_dir. 2006-11-16 05:28:11 +00:00
Ralf Corsepius
b7314e6c9e Add RTEMS_AMPOLISH3. 2006-11-16 05:27:54 +00:00
Ralf Corsepius
faf986a840 Remove. 2006-11-16 05:27:37 +00:00
Ralf Corsepius
17e916063e Remove CFLAGS. 2006-11-16 05:27:09 +00:00
Ralf Corsepius
e98a72fa4e Remove RTEMS_AMPOLISH3.
Don't explictly pass CFLAGS_OPTIMIZE_V, CPU_CFLAGS.
Compose CFLAGS. Append CFLAGS to ac_configure_args.
2006-11-16 05:26:43 +00:00
Ralf Corsepius
53bd9fa015 2006-11-16 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Remove RTEMS_AMPOLISH3.
	* aclocal/rtems-ampolish.m4: Pick up ampolish3 from ac_aux_dir.
	* aclocal/rtems-top.m4: Add RTEMS_AMPOLISH3.
	* ampolish3: Remove.
2006-11-16 05:18:39 +00:00
Ralf Corsepius
454ce47172 Remove RTEMS_AMPOLISH3. 2006-11-16 05:18:14 +00:00
Ralf Corsepius
a56e0cb096 Remove. 2006-11-16 05:18:01 +00:00
Ralf Corsepius
cf8bec623d Add RTEMS_AMPOLISH3. 2006-11-16 05:17:46 +00:00
Ralf Corsepius
a679d578e8 Pick up ampolish3 from ac_aux_dir. 2006-11-16 05:17:29 +00:00
Ralf Corsepius
804606b5eb 2006-11-15 Ralf Corsépius <ralf.corsepius@rtems.org>
* ampolish3: New.
2006-11-15 14:13:07 +00:00
cvs2git
284048512f This commit was manufactured by cvs2svn to create branch 'rtems-4-7-branch'.
Cherrypick from master 2006-11-15 14:12:01 UTC Ralf Corsepius <ralf.corsepius@rtems.org> '2006-11-15	Ralf Corsépius <ralf.corsepius@rtems.org>':
    ampolish3
    contrib/repo-conf/ChangeLog
2006-11-15 14:12:02 +00:00
Ralf Corsepius
4499640036 2006-11-15 Ralf Corsépius <ralf.corsepius@rtems.org>
* aclocal/target.m4: Remove RTEMS_OUTPUT_BUILD_SUBDIRS.
2006-11-15 09:58:18 +00:00
Ralf Corsepius
601e1b4b39 2006-11-15 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Use AC_CONFIG_HEADER instead of AM_CONFIG_HEADER.
2006-11-15 09:53:32 +00:00
Ralf Corsepius
c23b0fd6fc Use AC_CONFIG_HEADER instead of AM_CONFIG_HEADER. 2006-11-15 09:53:15 +00:00
Joel Sherrill
5b0f138d2e 2006-11-14 Jiri Gaisler <jiri@gaisler.com>
* cpu_asm.S: Properly support synchronous traps.
2006-11-14 21:44:09 +00:00
Ralf Corsepius
12fbe4956f 2006-11-14 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac, Makefile.am, rtems-4.7/Makefile.am: Remove tic4x.
	* rtems-4.7/tic4x/: Remove.
2006-11-14 16:54:15 +00:00
Ralf Corsepius
13f4eb67cb Remove tic4x 2006-11-14 16:53:01 +00:00
Ralf Corsepius
b4c5d96696 Remove. 2006-11-14 16:52:02 +00:00
Ralf Corsepius
7c17be80b4 Regenerate. 2006-11-14 16:26:29 +00:00
Ralf Corsepius
a2be29101a RTEMS_PROVIDES_STDINT_H, RTEMS_PROVIDES_INTTYPES_H. Use external stdint.h, inttypes.h. 2006-11-14 16:26:08 +00:00
Ralf Corsepius
ccf5bfa5f6 RTEMS_PROVIDES_STDINT_H, RTEMS_PROVIDES_INTTYPES_H. 2006-11-14 16:25:50 +00:00
Ralf Corsepius
db510c5488 Remove. 2006-11-14 16:25:12 +00:00
Ralf Corsepius
ec05baa478 2006-11-14 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Remove c4x.
2006-11-14 06:21:34 +00:00
Ralf Corsepius
37282eeb04 2006-11-14 Ralf Corsépius <ralf.corsepius@rtems.org>
* cpu_supplement/Makefile.am, cpu_supplement/cpu_supplement.texi:
	Remove the tic4x.
2006-11-14 05:28:40 +00:00
Ralf Corsepius
ccdcc9ce94 2006-11-14 Ralf Corsépius <ralf.corsepius@rtems.org>
* custom/c4xsim.cfg, custom/c3xsim.cfg: Remove (Port not ready for
	  inclusion in release).
2006-11-14 04:45:04 +00:00
Ralf Corsepius
c6c7cd4c73 Remove (Not ready for inclusion in release). 2006-11-14 04:42:32 +00:00
Ralf Corsepius
bc05492d30 2006-11-14 Ralf Corsépius <ralf.corsepius@rtems.org>
* score/cpu/Makefile.am: Remove c4x.
2006-11-14 04:38:49 +00:00
Ralf Corsepius
9666ea632b Remove (Not ready for inclusion in release). 2006-11-14 04:33:49 +00:00
Ralf Corsepius
556f1e76c8 2006-11-14 Ralf Corsépius <ralf.corsepius@rtems.org>
* custom/uC5282.cfg: Remove hard-code compiler flags.
	* custom/av5282.cfg, custom/csb360.cfg, custom/mcf5206elite.cfg,
	custom/mcf5235.cfg: Remove ASFLAGS, CPU_ASFLAGS (Unused).
2006-11-14 02:43:28 +00:00
Ralf Corsepius
aac2fff58b Remove hard-code compiler flags. 2006-11-14 02:43:13 +00:00
Ralf Corsepius
72fbdbbeaf Remove ASFLAGS, CPU_ASFLAGS (Unused). 2006-11-14 02:42:50 +00:00
Joel Sherrill
af6c22d238 2006-11-02 Steven Johnson <sjohnson@sakuraindustries.com>
* libnetworking/netdb.h, libnetworking/libc/gethostbyht.c,
	libnetworking/libc/gethostnamadr.c: This patch adds a functional
	gethostbyname_r to RTEMS. We were having problems with multiple
	threads calling gethostbyname, so we decided the best way to deal
	with it was to do it properly, rather than kludge up our code to make
	gethostbyname safe. We have found several slightly different
	parameter lists for this function, it does not seem to be standard.
	The one we used has the linux interface. In RTEMS there was an
	existing gethostbyname_r inside a #ifdef _THREAD_SAFE which was NOT
	Threadsafe, as this just called gethostbyname. So we have placed all
	of the additional code inside the #ifdef _THREAD_SAFE.
2006-11-02 21:49:02 +00:00
Joel Sherrill
112995e502 2006-11-01 Joel Sherrill <joel@OARcorp.com>
* bsp_specs: Fix typo.
2006-11-01 15:30:55 +00:00
Joel Sherrill
fa40f3b16f 2006-11-01 Joel Sherrill <joel@OARcorp.com>
* bsp_specs: Fix typo.
2006-11-01 15:24:48 +00:00
Joel Sherrill
4b77b83772 2006-11-01 Joel Sherrill <joel@OARcorp.com>
* bsp_specs: Fix typo.
2006-11-01 15:15:40 +00:00
Joel Sherrill
ae54141bff 2006-10-30 Joel Sherrill <joel@OARcorp.com>
PR 841/rtems
	* psxsem01/init.c: Make sem_timedwait more conformant to Open Group
	specification.
2006-10-30 22:21:44 +00:00
Joel Sherrill
f5c9b893fc 2006-10-30 Joel Sherrill <joel@OARcorp.com>
PR 841/rtems
	* itron/inline/rtems/itron/semaphore.inl,
	itron/macros/rtems/itron/semaphore.inl, itron/src/twai_sem.c,
	posix/include/rtems/posix/semaphore.h,
	posix/inline/rtems/posix/semaphore.inl,
	posix/src/semaphorewaitsupp.c, posix/src/semtimedwait.c,
	posix/src/semwait.c, rtems/src/semobtain.c,
	rtems/src/semtranslatereturncode.c,
	score/include/rtems/score/coresem.h, score/src/coresemseize.c: Make
	sem_timedwait more conformant to Open Group specification.
2006-10-30 22:21:07 +00:00
Joel Sherrill
d233c88057 2006-10-30 Joel Sherrill <joel@OARcorp.com>
* startup/rtems-ctor.cc: Conditionally disable non-GCC code.
2006-10-30 22:18:57 +00:00
Joel Sherrill
d1adbaed2a 2006-10-30 Joel Sherrill <joel@OARcorp.com>
* bsp_specs: Add crti, crtbegin, crtend, and crtn.
2006-10-30 22:17:12 +00:00
Joel Sherrill
85cef698a0 2006-10-30 Joel Sherrill <joel@OARcorp.com>
* include/.cvsignore: New file.
2006-10-30 17:07:28 +00:00
Joel Sherrill
32d19cbae1 2006-10-30 Joel Sherrill <joel@OARcorp.com>
* include/.cvsignore: New file.
2006-10-30 16:52:38 +00:00
Joel Sherrill
b295019571 2006-10-25 Jennifer Averett <jennifer@oarcorp.com>
* libcsupport/src/termios.c: Change attribute of semaphore. It was
	counting interrupts not acting as a condition synchronization mutex.
	Since the caller did not always need to obtain the semaphore, it was
	not being decremented until there was no data. This could occur after
	hours of running a system and thousands of interrupts. The code in
	fillBufferQueue would spin until it had consumed all of those
	semaphore counts.
2006-10-25 11:27:28 +00:00
Ralf Corsepius
b94e68dd04 Bumb version to 0.4 2006-10-25 01:29:56 +00:00
Ralf Corsepius
63e3f71425 Let rtems-@RTEMS_API@-repo-conf.spec depend on configure.ac 2006-10-25 01:29:45 +00:00
Ralf Corsepius
73a309b72a Bump version to 0.3 2006-10-24 14:55:35 +00:00
Ralf Corsepius
045b9a6ee7 New URL ftp://ftp.rtems.org/pub/rtems/linux 2006-10-24 14:55:23 +00:00
Ralf Corsepius
3f2b8ebdc2 s/binutils-2.17-rtems4.7-20060921/binutils-2.17-rtems4.7-20061021/ 2006-10-24 05:18:22 +00:00
Ralf Corsepius
15cde9a151 Remove (Unused) 2006-10-24 05:12:23 +00:00
Ralf Corsepius
ab04516f36 Resurrect (Still in use ;) 2006-10-24 05:10:50 +00:00
Ralf Corsepius
c25e26afd7 Remove (Unused) 2006-10-24 05:06:15 +00:00
Ralf Corsepius
f760aeff11 Remove (Unused). 2006-10-24 05:05:44 +00:00
Ralf Corsepius
a08be7a0e1 New. 2006-10-24 05:04:46 +00:00
Ralf Corsepius
ab4512cd61 Sync with HEAD 2006-10-24 05:03:51 +00:00
Ralf Corsepius
9833ce0fef Update to gcc-core-4.1.1-rtems-20060909.diff/newlib-1.14.0-rtems4.7-20061019.diff 2006-10-21 10:10:54 +00:00
Ralf Corsepius
a8e7b33c68 New. 2006-10-21 10:06:26 +00:00
Ralf Corsepius
40a253b355 Change URL to ftp://ftp.gnu.org/pub/gnu 2006-10-21 10:03:45 +00:00
Ralf Corsepius
000e606a42 New. Add memleak patch. 2006-10-21 10:02:23 +00:00
Ralf Corsepius
035be149e3 Set version to 4.7 2006-10-21 05:21:35 +00:00
cvs2git
fc4035b105 This commit was manufactured by cvs2svn to create branch 'rtems-4-7-branch'.
Cherrypick from master 2006-10-21 05:18:51 UTC Ralf Corsepius <ralf.corsepius@rtems.org> 'New.':
    contrib/repo-conf/.cvsignore
    contrib/repo-conf/AUTHORS
    contrib/repo-conf/COPYING
    contrib/repo-conf/INSTALL
    contrib/repo-conf/Makefile.am
    contrib/repo-conf/NEWS
    contrib/repo-conf/README
    contrib/repo-conf/aclocal/version.m4
    contrib/repo-conf/apt/sources.list.d/.cvsignore
    contrib/repo-conf/apt/sources.list.d/rtems.list.in
    contrib/repo-conf/apt/vendors.list.d/rtems.list
    contrib/repo-conf/configure.ac
    contrib/repo-conf/gpg/gpg-pubkey-69ce4a83-44cc2b30
    contrib/repo-conf/gpg/gpg-pubkey-eac29b6f-3fe1f458
    contrib/repo-conf/rtems-repo-conf.spec.in
    contrib/repo-conf/yum.repos.d/.cvsignore
    contrib/repo-conf/yum.repos.d/rtems.repo.in
2006-10-21 05:18:52 +00:00
Ralf Corsepius
218c346ef1 2006-10-20 Ralf Corsépius <ralf.corsepius@rtems.org>
* Makefile.am: Remove superfluous -DASM.
2006-10-20 11:55:29 +00:00
Ralf Corsepius
3b268ab7fa Remove (bogus). 2006-10-20 06:58:28 +00:00
Ralf Corsepius
197e44544e 2006-10-20 Ralf Corsépius <ralf.corsepius@rtems.org>
* include/bspopts.h.in: Remove (bogus).
2006-10-20 05:52:07 +00:00
Ralf Corsepius
4e8ac0a3fe 2006-10-20 Ralf Corsépius <ralf.corsepius@rtems.org>
* include/bspopts.h.in: Remove (bogus).

2006-10-19	Ralf Corsépius <ralf.corsepius@rtems.org>

	* configure.ac: Require automake-1.10. Require autoconf-2.60.

2006-09-11	Joel Sherrill <joel@OARcorp.com>

	* startup/init5282.c: Convert C++ style comments to C style.

2006-02-08	Joel Sherrill <joel@OARcorp.com>

	* startup/linkcmds, startup/linkcmdsflash, startup/linkcmdsram: Add
	sections required by newer gcc versions.

2006-01-11	Ralf Corsepius <ralf.corsepius@rtems.org>

	* Makefile.am: Add preinstall.am.

2005-11-12	Ralf Corsepius <ralf.corsepius@rtems.org>

	* bsp_specs: Remove %cpp.
	* console/console.c: Eliminate obsolete types.

2005-11-07	Ralf Corsepius <ralf.corsepius@rtems.org>

	* include/bsp.h: Eliminate unsigned32.
	* network/network.c: Several minor bug fixes.
	* startup/bspstart.c: Eliminate unsigned32.

2005-08-17	Mike Bertosh <mbertosh@motioncontrol.org>

	* .cvsignore, Makefile.am, README, bsp_specs, configure.ac,
	clock/clock.c, console/console.c, include/bsp.h,
	include/bspopts.h.in, include/coverhd.h, include/tm27.h,
	network/network.c, start/start.S, startup/bspclean.c,
	startup/bspstart.c, startup/init5282.c, startup/linkcmds,
	startup/linkcmdsflash, startup/linkcmdsram, timer/timer.c: New files.
2006-10-20 05:50:34 +00:00
Ralf Corsepius
f4d72b919c 2006-10-20 Ralf Corsépius <ralf.corsepius@rtems.org>
* include/bspopts.h.in: Remove (bogus).

2006-10-19	Ralf Corsépius <ralf.corsepius@rtems.org>

	* configure.ac: Require automake-1.10. Require autoconf-2.60.

2006-10-15	Ralf Corsépius <ralf.corsepius@rtems.org>

	* console/defaultfont.c: Convert to utf-8.

2006-09-11	Joel Sherrill <joel@OARcorp.com>

	* include/arm_mode_bits.h: Convert C++ style comments to C style.

2006-09-11	Chris Johns <chrisj@rtems.org>

	* README, configure.ac: Remove extra CRLF.

2006-06-02	Jay Monkman <jtm@lopingdog.com>

	* irq/bsp_irq_init.c: Changed interrupt handling
	to use shared rtems_irq_connect_data struct.

2006-01-11	Ralf Corsepius <ralf.corsepius@rtems.org>

	* Makefile.am: Add preinstall.am.

2005-11-22	Ralf Corsepius <ralf.corsepius@rtems.org>

	* bsp_specs: remove %lib.

2005-11-12	Ralf Corsepius <ralf.corsepius@rtems.org>

	* bsp_specs: Remove %cpp.

2005-11-08	Ralf Corsepius <ralf.corsepius@rtems.org>

	* irq/irq.c, startup/bspstart.c: Remove obsolete types (*unsigned32).

2005-07-06	Markku Puro <markku.puro@kopteri.net>

	* .cvsignore, ChangeLog, Makefile.am, README, bsp_specs, configure.ac,
	clock/clockdrv.c, console/conio.c, console/console.c,
	console/defaultfont.c, include/arm_mode_bits.h, include/asm_macros.h,
	include/bsp.h, include/bspopts.h.in, include/conio.h, include/gba.h,
	include/gba_registers.h, include/tm27.h, irq/bsp_irq_asm.S,
	irq/bsp_irq_init.c, irq/irq.c, irq/irq.h, irq/irq_asm.S,
	irq/irq_init.c, start/logo.S, start/start.S, startup/bspstart.c,
	startup/cpu.c, startup/cpu_asm.S, startup/exit.c, startup/linkcmds,
	timer/timer.c: New files.
2006-10-20 05:49:16 +00:00
Ralf Corsepius
dd73668084 2006-10-20 Ralf Corsépius <ralf.corsepius@rtems.org>
* score/cpu/Makefile.am, configure.ac: Remove nios2.
2006-10-20 05:39:52 +00:00
Ralf Corsepius
8dc5cd751b Remove nios2. 2006-10-20 05:39:11 +00:00
Ralf Corsepius
2f45e83a3b 2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Requires automake-1.10. Require autoconf-2.60.
	* aclocal/rtems-top.m4, aclocal/version.m4:
	Adaptions to automake-1.10.
2006-10-19 14:35:27 +00:00
Ralf Corsepius
b06cc7e76d 2006-10-19 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Require automake-1.10. Require autoconf-2.60.
2006-10-19 14:26:57 +00:00
Ralf Corsepius
09c1d97a59 2006-10-19 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Require automake-1.10. Require autoconf-2.60.
	* aclocal/prog-ccas.m4, aclocal/prog-cxx.m4, aclocal/rtems-top.m4,
	aclocal/version.m4, automake/compile.am:
	Adaptations to automake-1.10.
2006-10-19 14:08:29 +00:00
Ralf Corsepius
a8340dc12c Adaptations to automake-1.10. 2006-10-19 14:08:08 +00:00
Ralf Corsepius
cb5148e753 Require automake-1.10. Require autoconf-2.60. 2006-10-19 14:07:52 +00:00
Ralf Corsepius
f4470b97f4 2006-10-19 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Require automake-1.10. Require autoconf-2.60.
2006-10-19 14:05:46 +00:00
Ralf Corsepius
56e2dc07e1 2006-10-19 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Require automake-1.10. Require autoconf-2.60.
2006-10-19 13:46:53 +00:00
Ralf Corsepius
1d59bd93bd 2006-10-19 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Require automake-1.10. Require autoconf-2.60.
2006-10-19 13:39:58 +00:00
Ralf Corsepius
70ca327fbc Adaptations to automake-1.10. 2006-10-19 13:36:47 +00:00
Ralf Corsepius
32865ab96d Require automake-1.10. Requires autoconf-2.60. 2006-10-19 13:36:32 +00:00
Ralf Corsepius
1965914292 2006-10-19 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Require automake-1.10. Requires autoconf-2.60.
	* aclocal/prog-cxx.m4, aclocal/rtems-top.m4, aclocal/version.m4:
	Adaptations to automake-1.10.
2006-10-19 13:36:21 +00:00
Ralf Corsepius
0f7cfec6c1 2006-10-19 Ralf Corsépius <ralf.corsepius@rtems.org>
* autotools/Makefile.am, autotools/automake.add: Update to
	automake-1.10.
2006-10-19 13:33:32 +00:00
Ralf Corsepius
8784165c9d Update to automake-1.10. 2006-10-19 13:33:25 +00:00
Ralf Corsepius
e1f880dc11 Remove custom/nios2_iss.cfg. 2006-10-19 13:15:30 +00:00
Ralf Corsepius
b8fa666cd0 2006-10-19 Ralf Corsépius <ralf.corsepius@rtems.org>
* custom/nios2_iss.cfg: Remove.
2006-10-19 13:14:40 +00:00
Ralf Corsepius
c6d7ef67a6 Remove. 2006-10-19 13:14:29 +00:00
Ralf Corsepius
8a5810d034 Remove. 2006-10-19 12:27:15 +00:00
Ralf Corsepius
32bcbf10a2 Remove (Unused) 2006-10-19 08:08:33 +00:00
Ralf Corsepius
d7b8239187 Sync with HEAD 2006-10-19 08:01:14 +00:00
Ralf Corsepius
4fd6bcd87f 2006-10-19 Ralf Corsépius <ralf.corsepius@rtems.org>
* rtems-4.7/bfin/Makefile.am, rtems-4.7/bfin/.cvsignore:
	Remove (Development in CVS-HEAD, only).
2006-10-19 05:32:12 +00:00
Ralf Corsepius
55e08d6c6f Remove. 2006-10-19 05:30:43 +00:00
Ralf Corsepius
0ef6e5857a 2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* libmisc/capture/capture-cli.c: Use size_t instead of int.
2006-10-17 17:30:05 +00:00
Ralf Corsepius
f91d2c2b39 2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* LICENSE: Convert to utf-8.
2006-10-17 17:13:24 +00:00
Ralf Corsepius
7f9fff5160 2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* porting/interrupts.t: Fix bogus _CPU_ISR_Get_level.
2006-10-17 15:01:54 +00:00
Ralf Corsepius
07572d6500 2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Requires autoconf-2.59.
2006-10-17 05:51:36 +00:00
Ralf Corsepius
c11d203cce 2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* clock/clock.c, console/console.c, ide/pcmcia_ide.c,
	ide/pcmcia_ide.h, irq/irq.c, irq/irq.h, irq/irq_asm.S,
	irq/irq_init.c, nvram/m93cxx.h, nvram/nvram.c, nvram/nvram.h,
	slicetimer/slicetimer.c, start/start.S, startup/bspstart.c,
	startup/cpuinit.c, vectors/vectors.S, vectors/vectors_init.c:
	Convert to utf-8.
2006-10-17 02:46:35 +00:00
Ralf Corsepius
a877cc8ec6 Convert to utf-8. 2006-10-17 02:46:07 +00:00
Ralf Corsepius
11c005b840 2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* include/m68349.inc, start/start.S, startup/dumpanic.c:
	Convert to utf-8.
2006-10-17 02:37:18 +00:00
Ralf Corsepius
c27fd5c455 Convert to utf-8 2006-10-17 02:36:57 +00:00
Ralf Corsepius
d919ef8281 2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Require automake-1.9.
2006-10-17 02:31:34 +00:00
Ralf Corsepius
454e6b1f74 2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org>
* bootloader/Makefile.am: Remove DEFAULT_INCLUDES.
2006-10-17 02:26:55 +00:00
Ralf Corsepius
06797827c6 2006-10-16 Ralf Corsépius <ralf.corsepius@rtems.org>
* aclocal/multi.m4, aclocal/prog-cc.m4, aclocal/prog-ccas.m4
	automake/compile.am: Adaptations to automake-1.10
	(Back port from HEAD).
2006-10-16 16:18:33 +00:00
Ralf Corsepius
0667e1b295 Adaptations to automake-1.10. 2006-10-16 16:17:07 +00:00
Ralf Corsepius
fb3b398690 Convert to utf-8. 2006-10-15 06:00:51 +00:00
Ralf Corsepius
2490f92865 2006-10-15 Ralf Corsépius <ralf.corsepius@rtems.org>
* console/defaultfont.c: Convert to utf-8.
2006-10-15 06:00:41 +00:00
Ralf Corsepius
d333638f89 Convert to utf-8. 2006-10-15 05:55:34 +00:00
Ralf Corsepius
d0fa0ef544 2006-10-15 Ralf Corsepius <ralf.corsepius@rtems.org>
* network_ada/adasockets/AUTHORS,
	network_ada/adasockets/sockets-link.ads,
	network_ada/adasockets/sockets-multicast.adb,
	network_ada/adasockets/sockets-multicast.ads,
	network_ada/adasockets/sockets-utils.adb,
	network_ada/adasockets/sockets-utils.ads,
	network_ada/adasockets/sockets.adb,
	network_ada/adasockets/sockets.ads,
	network_ada/listener/listener.adb,
	network_ada/tcprelay/tcprelay.adb: Convert to utf-8.
2006-10-15 05:55:16 +00:00
Ralf Corsepius
0fbc65d3bb 2006-10-09 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac, rtems-4.7/Makefile.am: Remove bfin.
2006-10-09 07:35:06 +00:00
Ralf Corsepius
46147f1cad Remove bfin. 2006-10-09 07:34:24 +00:00
Ralf Corsepius
a96e073ec7 Remove (unsupported) 2006-10-09 07:33:44 +00:00
Joel Sherrill
8afb74104a 2006-09-13 Joel Sherrill <joel@OARcorp.com>
* libnetworking/rtems/rtems_malloc_mbuf.c: Removed warning by adding
	prototype of malloc.
2006-09-13 16:55:34 +00:00
Ralf Corsepius
0ecafb6e6e 2006-09-13 Ralf Corsépius <ralf.corsepius@rtems.org>
* sh7750/include/rtems/score/sh7750_regs.h: Fix spelling of IPRC
	(Probably a cyrillic 'C' instead of an ASCI 'C').
2006-09-13 11:23:54 +00:00
Ralf Corsepius
38abd22242 2006-09-13 Ralf Corsepius <ralf.corsepius@rtems.org>
* configure.ac: Use RTEMS_AMPOLISH3.
2006-09-13 08:20:25 +00:00
Ralf Corsepius
15a333196c 2006-09-13 Ralf Corsépius <ralf.corsepius@rtems.org>
* bspkit: Remove.
2006-09-13 04:46:54 +00:00
Ralf Corsepius
01dcac514c Remove. 2006-09-13 04:38:16 +00:00
cvs2git
343ef8e091 This commit was manufactured by cvs2svn to create branch 'rtems-4-7-branch'.
Sprout from master 2006-09-11 21:47:05 UTC Joel Sherrill <joel.sherrill@OARcorp.com> '2006-09-11	Joel Sherrill <joel@OARcorp.com>'
Cherrypick from zlib 2005-10-28 07:22:42 UTC Ralf Corsepius <ralf.corsepius@rtems.org> 'Import of zlib-1.2.2.2.tar.gz':
    cpukit/zlib/FAQ
    cpukit/zlib/INDEX
    cpukit/zlib/README
    cpukit/zlib/algorithm.txt
    cpukit/zlib/crc32.h
    cpukit/zlib/infback.c
    cpukit/zlib/inffast.c
    cpukit/zlib/inffast.h
    cpukit/zlib/inffixed.h
    cpukit/zlib/inflate.c
    cpukit/zlib/inflate.h
    cpukit/zlib/trees.h
    cpukit/zlib/zlib.3
    cpukit/zlib/zlib.h
Cherrypick from rtemsdoc-4-5-branch 1997-05-27 12:40:10 UTC Joel Sherrill <joel.sherrill@OARcorp.com> 'base RTEMS documentation':
    doc/common/treedef.tex
Delete:
    contrib/crossrpms/cygwin/.cvsignore
    contrib/crossrpms/cygwin/Makefile.am
    contrib/crossrpms/cygwin/binutils.am
    contrib/crossrpms/cygwin/gcc-prep.add
    contrib/crossrpms/cygwin/gcc.am
    contrib/crossrpms/cygwin/i686/.cvsignore
    contrib/crossrpms/cygwin/i686/Makefile.am
    contrib/crossrpms/cygwin/i686/binutils-sources.add
    contrib/crossrpms/cygwin/i686/gcc-sources.add
    contrib/crossrpms/cygwin/i686/libs.add
    contrib/crossrpms/cygwin/i686/target-libs.add
    contrib/crossrpms/cygwin/i686/target-w32api.add
    contrib/crossrpms/cygwin/i686/w32api.add
    contrib/crossrpms/freebsd5.2/.cvsignore
    contrib/crossrpms/freebsd5.2/Makefile.am
    contrib/crossrpms/freebsd5.2/binutils.am
    contrib/crossrpms/freebsd5.2/gcc-prep.add
    contrib/crossrpms/freebsd5.2/gcc.am
    contrib/crossrpms/freebsd5.2/i586/.cvsignore
    contrib/crossrpms/freebsd5.2/i586/Makefile.am
    contrib/crossrpms/freebsd5.2/i586/binutils-sources.add
    contrib/crossrpms/freebsd5.2/i586/gcc-prep.add
    contrib/crossrpms/freebsd5.2/i586/gcc-sources.add
    contrib/crossrpms/freebsd5.2/i586/libs.add
    contrib/crossrpms/freebsd5.2/i586/target-libs.add
    contrib/crossrpms/freebsd6.0/.cvsignore
    contrib/crossrpms/freebsd6.0/Makefile.am
    contrib/crossrpms/freebsd6.0/binutils.am
    contrib/crossrpms/freebsd6.0/gcc-prep.add
    contrib/crossrpms/freebsd6.0/gcc.am
    contrib/crossrpms/freebsd6.0/i586/.cvsignore
    contrib/crossrpms/freebsd6.0/i586/Makefile.am
    contrib/crossrpms/freebsd6.0/i586/binutils-sources.add
    contrib/crossrpms/freebsd6.0/i586/gcc-sources.add
    contrib/crossrpms/freebsd6.0/i586/libs.add
    contrib/crossrpms/freebsd6.0/i586/target-libs.add
    contrib/crossrpms/freebsd6.1/.cvsignore
    contrib/crossrpms/freebsd6.1/Makefile.am
    contrib/crossrpms/freebsd6.1/binutils.am
    contrib/crossrpms/freebsd6.1/gcc-prep.add
    contrib/crossrpms/freebsd6.1/gcc.am
    contrib/crossrpms/freebsd6.1/i586/.cvsignore
    contrib/crossrpms/freebsd6.1/i586/Makefile.am
    contrib/crossrpms/freebsd6.1/i586/binutils-sources.add
    contrib/crossrpms/freebsd6.1/i586/gcc-sources.add
    contrib/crossrpms/freebsd6.1/i586/libs.add
    contrib/crossrpms/freebsd6.1/i586/target-libs.add
    contrib/crossrpms/mingw32/.cvsignore
    contrib/crossrpms/mingw32/Makefile.am
    contrib/crossrpms/mingw32/binutils.am
    contrib/crossrpms/mingw32/gcc-prep.add
    contrib/crossrpms/mingw32/gcc.am
    contrib/crossrpms/mingw32/i686/.cvsignore
    contrib/crossrpms/mingw32/i686/Makefile.am
    contrib/crossrpms/mingw32/i686/binutils-sources.add
    contrib/crossrpms/mingw32/i686/gcc-sources.add
    contrib/crossrpms/mingw32/i686/libs.add
    contrib/crossrpms/mingw32/i686/target-libs.add
    contrib/crossrpms/mingw32/i686/target-w32api.add
    contrib/crossrpms/mingw32/i686/w32api.add
    contrib/crossrpms/solaris2.7/.cvsignore
    contrib/crossrpms/solaris2.7/Makefile.am
    contrib/crossrpms/solaris2.7/binutils.am
    contrib/crossrpms/solaris2.7/gcc-prep.add
    contrib/crossrpms/solaris2.7/gcc.am
    contrib/crossrpms/solaris2.7/sparc/.cvsignore
    contrib/crossrpms/solaris2.7/sparc/Makefile.am
    contrib/crossrpms/solaris2.7/sparc/binutils-sources.add
    contrib/crossrpms/solaris2.7/sparc/gcc-sources.add
    contrib/crossrpms/solaris2.7/sparc/libs.add
    contrib/crossrpms/solaris2.7/sparc/target-libs.add
    cpukit/rtems/src/clocktodtoseconds.c
    cpukit/rtems/src/clocktodvalidate.c
    cpukit/zlib/doc/rfc1950.txt
    cpukit/zlib/doc/rfc1951.txt
    cpukit/zlib/doc/rfc1952.txt
    cpukit/zlib/doc/txtvsbin.txt
    cpukit/zlib/examples/zran.c
    cpukit/zlib/old/as400/bndsrc
    cpukit/zlib/old/as400/compile.clp
    cpukit/zlib/old/as400/readme.txt
    cpukit/zlib/old/visualc6/README.txt
    cpukit/zlib/old/visualc6/example.dsp
    cpukit/zlib/old/visualc6/minigzip.dsp
    cpukit/zlib/old/visualc6/zlib.dsw
    cpukit/zlib/zlib.pc.in
2006-09-11 21:47:06 +00:00
14957 changed files with 697167 additions and 1548123 deletions

17
.cvsignore Normal file
View File

@@ -0,0 +1,17 @@
aclocal.m4
autom4te*.cache
compile
config.cache
config.guess
config.log
config.status
config.sub
configure
depcomp
install-sh
install.sh
Makefile
Makefile.in
mdate-sh
missing
texinfo.tex

6
.gitignore vendored
View File

@@ -1,6 +0,0 @@
aclocal.m4
autom4te.cache
configure
config.h.in
Makefile.in
doc

343
COPYING Normal file
View File

@@ -0,0 +1,343 @@
#
# $RTEMS$
#
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

1576
ChangeLog Normal file

File diff suppressed because it is too large Load Diff

2535
Doxyfile

File diff suppressed because it is too large Load Diff

49
INSTALL
View File

@@ -1,4 +1,51 @@
#
# $Id$
#
Building RTEMS
==============
See the documentation referred to in the README.
See the file README.configure.
UNCOMPRESSING .tgz FILES
===========================
Many of the files found in this directory and its subdirectories
are gzip'ed, tar archive files. These files have the ".tgz"
extension. They were compressed with gzip version 1.2.4.
Use a command sequence similar to the following to uncompress each
file:
gzcat FILE.tgz | tar xvof -
where FILE.tgz is the file to be installed. This procedure will
extract the files in the archive into the current directory.
All of the .tgz files associated with this release RTEMS will
place their contents in a subdirectory rtems-<release> in the current
directory.
If you are unsure of what is in an RTEMS archive file, then use
the following command sequence to get a listing of the contents:
gzcat FILE.tgz | tar tvf -
NOTES:
(1) The "-o" option to tar is included on the tar command line
so that the user extracting the tar archive will own the extracted
files.
(2) gzcat is sometimes installed as zcat. Be warned that on many
(most) UNIX machines, zcat is associated with compress (.Z files).
(3) If you do not have gzip 1.2.4, it is available from numerous sites
including this one. Other sites include ftp.gnu.org and ftp.cdrom.com.
(4) The GNU archive files included in this distribution are packaged
exactly like they are on official GNU ftp sites. When extracting
GNU archives, they will not extract under a rtems-<version>
directory. They will extract themselves under a directory which
is the name and version of the tool in question. For example,
gcc-2.5.8.tgz will extract its contents into the subdirectory
gcc-2.5.8.

View File

@@ -1,3 +1,6 @@
#
# $Id$
#
LICENSE INFORMATION
RTEMS is free software; you can redistribute it and/or modify it under

View File

@@ -1,51 +0,0 @@
https://spdx.org/licenses/BSD-2-Clause.html
This license file serves as a template for the license header in files.
You are the copyright holder. Copy the comment below the top of the file in
which you want to use this license for your contribution. Replace the
<FIRST YEAR> placeholder with the year of your first substantial contribution
to this file. Update the <LAST YEAR> with the year of your last substantial
contribution to this file. If the first and last years are the same, then
remove the <LAST YEAR> placeholder with the comma. Replace the
<COPYRIGHT HOLDER> placeholder with your name. In case you are a real person,
then use the following format for <COPYRIGHT HOLDER>:
<FIRST NAME> <MIDDLE NAMES> <LAST NAME>
The <FIRST NAME> is your first name (also known as given name), the
<MIDDLE NAMES> are your optional middle names, the <LAST NAME> is your last
name (also known as family name).
If more than one copyright holder exists for a file, then sort the copyright
lines by the first year (earlier years are below later years) followed by the
copyright holder in alphabetical order (A is above B).
You must not alter anything else in the license comment.
/*
* SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (C) <FIRST YEAR>, <LAST YEAR> <COPYRIGHT HOLDER>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/

View File

@@ -1,428 +0,0 @@
Attribution-ShareAlike 4.0 International
=======================================================================
Creative Commons Corporation ("Creative Commons") is not a law firm and
does not provide legal services or legal advice. Distribution of
Creative Commons public licenses does not create a lawyer-client or
other relationship. Creative Commons makes its licenses and related
information available on an "as-is" basis. Creative Commons gives no
warranties regarding its licenses, any material licensed under their
terms and conditions, or any related information. Creative Commons
disclaims all liability for damages resulting from their use to the
fullest extent possible.
Using Creative Commons Public Licenses
Creative Commons public licenses provide a standard set of terms and
conditions that creators and other rights holders may use to share
original works of authorship and other material subject to copyright
and certain other rights specified in the public license below. The
following considerations are for informational purposes only, are not
exhaustive, and do not form part of our licenses.
Considerations for licensors: Our public licenses are
intended for use by those authorized to give the public
permission to use material in ways otherwise restricted by
copyright and certain other rights. Our licenses are
irrevocable. Licensors should read and understand the terms
and conditions of the license they choose before applying it.
Licensors should also secure all rights necessary before
applying our licenses so that the public can reuse the
material as expected. Licensors should clearly mark any
material not subject to the license. This includes other CC-
licensed material, or material used under an exception or
limitation to copyright. More considerations for licensors:
wiki.creativecommons.org/Considerations_for_licensors
Considerations for the public: By using one of our public
licenses, a licensor grants the public permission to use the
licensed material under specified terms and conditions. If
the licensor's permission is not necessary for any reason--for
example, because of any applicable exception or limitation to
copyright--then that use is not regulated by the license. Our
licenses grant only permissions under copyright and certain
other rights that a licensor has authority to grant. Use of
the licensed material may still be restricted for other
reasons, including because others have copyright or other
rights in the material. A licensor may make special requests,
such as asking that all changes be marked or described.
Although not required by our licenses, you are encouraged to
respect those requests where reasonable. More considerations
for the public:
wiki.creativecommons.org/Considerations_for_licensees
=======================================================================
Creative Commons Attribution-ShareAlike 4.0 International Public
License
By exercising the Licensed Rights (defined below), You accept and agree
to be bound by the terms and conditions of this Creative Commons
Attribution-ShareAlike 4.0 International Public License ("Public
License"). To the extent this Public License may be interpreted as a
contract, You are granted the Licensed Rights in consideration of Your
acceptance of these terms and conditions, and the Licensor grants You
such rights in consideration of benefits the Licensor receives from
making the Licensed Material available under these terms and
conditions.
Section 1 -- Definitions.
a. Adapted Material means material subject to Copyright and Similar
Rights that is derived from or based upon the Licensed Material
and in which the Licensed Material is translated, altered,
arranged, transformed, or otherwise modified in a manner requiring
permission under the Copyright and Similar Rights held by the
Licensor. For purposes of this Public License, where the Licensed
Material is a musical work, performance, or sound recording,
Adapted Material is always produced where the Licensed Material is
synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright
and Similar Rights in Your contributions to Adapted Material in
accordance with the terms and conditions of this Public License.
c. BY-SA Compatible License means a license listed at
creativecommons.org/compatiblelicenses, approved by Creative
Commons as essentially the equivalent of this Public License.
d. Copyright and Similar Rights means copyright and/or similar rights
closely related to copyright including, without limitation,
performance, broadcast, sound recording, and Sui Generis Database
Rights, without regard to how the rights are labeled or
categorized. For purposes of this Public License, the rights
specified in Section 2(b)(1)-(2) are not Copyright and Similar
Rights.
e. Effective Technological Measures means those measures that, in the
absence of proper authority, may not be circumvented under laws
fulfilling obligations under Article 11 of the WIPO Copyright
Treaty adopted on December 20, 1996, and/or similar international
agreements.
f. Exceptions and Limitations means fair use, fair dealing, and/or
any other exception or limitation to Copyright and Similar Rights
that applies to Your use of the Licensed Material.
g. License Elements means the license attributes listed in the name
of a Creative Commons Public License. The License Elements of this
Public License are Attribution and ShareAlike.
h. Licensed Material means the artistic or literary work, database,
or other material to which the Licensor applied this Public
License.
i. Licensed Rights means the rights granted to You subject to the
terms and conditions of this Public License, which are limited to
all Copyright and Similar Rights that apply to Your use of the
Licensed Material and that the Licensor has authority to license.
j. Licensor means the individual(s) or entity(ies) granting rights
under this Public License.
k. Share means to provide material to the public by any means or
process that requires permission under the Licensed Rights, such
as reproduction, public display, public performance, distribution,
dissemination, communication, or importation, and to make material
available to the public including in ways that members of the
public may access the material from a place and at a time
individually chosen by them.
l. Sui Generis Database Rights means rights other than copyright
resulting from Directive 96/9/EC of the European Parliament and of
the Council of 11 March 1996 on the legal protection of databases,
as amended and/or succeeded, as well as other essentially
equivalent rights anywhere in the world.
m. You means the individual or entity exercising the Licensed Rights
under this Public License. Your has a corresponding meaning.
Section 2 -- Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License,
the Licensor hereby grants You a worldwide, royalty-free,
non-sublicensable, non-exclusive, irrevocable license to
exercise the Licensed Rights in the Licensed Material to:
a. reproduce and Share the Licensed Material, in whole or
in part; and
b. produce, reproduce, and Share Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where
Exceptions and Limitations apply to Your use, this Public
License does not apply, and You do not need to comply with
its terms and conditions.
3. Term. The term of this Public License is specified in Section
6(a).
4. Media and formats; technical modifications allowed. The
Licensor authorizes You to exercise the Licensed Rights in
all media and formats whether now known or hereafter created,
and to make technical modifications necessary to do so. The
Licensor waives and/or agrees not to assert any right or
authority to forbid You from making technical modifications
necessary to exercise the Licensed Rights, including
technical modifications necessary to circumvent Effective
Technological Measures. For purposes of this Public License,
simply making modifications authorized by this Section 2(a)
(4) never produces Adapted Material.
5. Downstream recipients.
a. Offer from the Licensor -- Licensed Material. Every
recipient of the Licensed Material automatically
receives an offer from the Licensor to exercise the
Licensed Rights under the terms and conditions of this
Public License.
b. Additional offer from the Licensor -- Adapted Material.
Every recipient of Adapted Material from You
automatically receives an offer from the Licensor to
exercise the Licensed Rights in the Adapted Material
under the conditions of the Adapter's License You apply.
c. No downstream restrictions. You may not offer or impose
any additional or different terms or conditions on, or
apply any Effective Technological Measures to, the
Licensed Material if doing so restricts exercise of the
Licensed Rights by any recipient of the Licensed
Material.
6. No endorsement. Nothing in this Public License constitutes or
may be construed as permission to assert or imply that You
are, or that Your use of the Licensed Material is, connected
with, or sponsored, endorsed, or granted official status by,
the Licensor or others designated to receive attribution as
provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not
licensed under this Public License, nor are publicity,
privacy, and/or other similar personality rights; however, to
the extent possible, the Licensor waives and/or agrees not to
assert any such rights held by the Licensor to the limited
extent necessary to allow You to exercise the Licensed
Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this
Public License.
3. To the extent possible, the Licensor waives any right to
collect royalties from You for the exercise of the Licensed
Rights, whether directly or through a collecting society
under any voluntary or waivable statutory or compulsory
licensing scheme. In all other cases the Licensor expressly
reserves any right to collect such royalties.
Section 3 -- License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the
following conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified
form), You must:
a. retain the following if it is supplied by the Licensor
with the Licensed Material:
i. identification of the creator(s) of the Licensed
Material and any others designated to receive
attribution, in any reasonable manner requested by
the Licensor (including by pseudonym if
designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of
warranties;
v. a URI or hyperlink to the Licensed Material to the
extent reasonably practicable;
b. indicate if You modified the Licensed Material and
retain an indication of any previous modifications; and
c. indicate the Licensed Material is licensed under this
Public License, and include the text of, or the URI or
hyperlink to, this Public License.
2. You may satisfy the conditions in Section 3(a)(1) in any
reasonable manner based on the medium, means, and context in
which You Share the Licensed Material. For example, it may be
reasonable to satisfy the conditions by providing a URI or
hyperlink to a resource that includes the required
information.
3. If requested by the Licensor, You must remove any of the
information required by Section 3(a)(1)(A) to the extent
reasonably practicable.
b. ShareAlike.
In addition to the conditions in Section 3(a), if You Share
Adapted Material You produce, the following conditions also apply.
1. The Adapter's License You apply must be a Creative Commons
license with the same License Elements, this version or
later, or a BY-SA Compatible License.
2. You must include the text of, or the URI or hyperlink to, the
Adapter's License You apply. You may satisfy this condition
in any reasonable manner based on the medium, means, and
context in which You Share Adapted Material.
3. You may not offer or impose any additional or different terms
or conditions on, or apply any Effective Technological
Measures to, Adapted Material that restrict exercise of the
rights granted under the Adapter's License You apply.
Section 4 -- Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that
apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
to extract, reuse, reproduce, and Share all or a substantial
portion of the contents of the database;
b. if You include all or a substantial portion of the database
contents in a database in which You have Sui Generis Database
Rights, then the database in which You have Sui Generis Database
Rights (but not its individual contents) is Adapted Material,
including for purposes of Section 3(b); and
c. You must comply with the conditions in Section 3(a) if You Share
all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not
replace Your obligations under this Public License where the Licensed
Rights include other Copyright and Similar Rights.
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
c. The disclaimer of warranties and limitation of liability provided
above shall be interpreted in a manner that, to the extent
possible, most closely approximates an absolute disclaimer and
waiver of all liability.
Section 6 -- Term and Termination.
a. This Public License applies for the term of the Copyright and
Similar Rights licensed here. However, if You fail to comply with
this Public License, then Your rights under this Public License
terminate automatically.
b. Where Your right to use the Licensed Material has terminated under
Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided
it is cured within 30 days of Your discovery of the
violation; or
2. upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any
right the Licensor may have to seek remedies for Your violations
of this Public License.
c. For the avoidance of doubt, the Licensor may also offer the
Licensed Material under separate terms or conditions or stop
distributing the Licensed Material at any time; however, doing so
will not terminate this Public License.
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
License.
Section 7 -- Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different
terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the
Licensed Material not stated herein are separate from and
independent of the terms and conditions of this Public License.
Section 8 -- Interpretation.
a. For the avoidance of doubt, this Public License does not, and
shall not be interpreted to, reduce, limit, restrict, or impose
conditions on any use of the Licensed Material that could lawfully
be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is
deemed unenforceable, it shall be automatically reformed to the
minimum extent necessary to make it enforceable. If the provision
cannot be reformed, it shall be severed from this Public License
without affecting the enforceability of the remaining terms and
conditions.
c. No term or condition of this Public License will be waived and no
failure to comply consented to unless expressly agreed to by the
Licensor.
d. Nothing in this Public License constitutes or may be interpreted
as a limitation upon, or waiver of, any privileges and immunities
that apply to the Licensor or You, including from the legal
processes of any jurisdiction or authority.
=======================================================================
Creative Commons is not a party to its public
licenses. Notwithstanding, Creative Commons may elect to apply one of
its public licenses to material it publishes and in those instances
will be considered the “Licensor.” The text of the Creative Commons
public licenses is dedicated to the public domain under the CC0 Public
Domain Dedication. Except for the limited purpose of indicating that
material is shared under a Creative Commons public license or as
otherwise permitted by the Creative Commons policies published at
creativecommons.org/policies, Creative Commons does not authorize the
use of the trademark "Creative Commons" or any other trademark or logo
of Creative Commons without its prior written consent including,
without limitation, in connection with any unauthorized modifications
to any of its public licenses or any other arrangements,
understandings, or agreements concerning use of licensed material. For
the avoidance of doubt, this paragraph does not form part of the
public licenses.
Creative Commons may be contacted at creativecommons.org.

View File

@@ -1,339 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

View File

@@ -1,30 +0,0 @@
The files in this directory and elsewhere which refer to this LICENCE
file are part of JFFS2, the Journalling Flash File System v2.
Copyright © 2001-2007 Red Hat, Inc. and others
JFFS2 is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 or (at your option) any later
version.
JFFS2 is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with JFFS2; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
As a special exception, if other files instantiate templates or use
macros or inline functions from these files, or you compile these
files and link them with other works to produce a work based on these
files, these files do not by themselves cause the resulting work to be
covered by the GNU General Public License. However the source code for
these files must still be made available in accordance with section (3)
of the GNU General Public License.
This exception does not invalidate any other reasons why a work based on
this file might be covered by the GNU General Public License.

View File

@@ -1,3 +1,7 @@
#
# $Id$
#
The RTEMS TCP/IP stack is a port of the FreeBSD TCP/IP stack. The following
copyright and licensing information applies to this code.

View File

@@ -1,3 +1,7 @@
#
# $Id$
#
The RTEMS RPC/XDR support is a port of the freely distributed
Sun Microsystems implementation. The following copyright and
licensing information applies to this code.

8
LICENSE.WEBSERVER Normal file
View File

@@ -0,0 +1,8 @@
#
# $Id$
#
The source code in c/src/libnetworking/rtems_webserver is a port
of the Go Ahead Software, Inc. WebServer. Their copyright and
licensing terms apply. See c/src/libnetworking/rtems_webserver/license.txt
for details.

View File

@@ -1,65 +1,55 @@
Note
====
This file contains information about people who are permitted to make
changes to various parts of RTEMS and its associated components and
add-ons.
Please do not contact the people in this file directly to report
problems with RTEMS.
For general information about RTEMS, please visit:
http://www.rtems.com
To report problems in RTEMS, please visit:
http://www.rtems.com/bugs.html
Maintainers
===========
This file contains information about people who are permitted to make
changes to RTEMS and its associated components and add-ons. Please do
not contact the people in this file directly to report problems with RTEMS.
For general information about RTEMS, please visit: http://www.rtems.org
Blanket Write Privileges (alphabetical order)
To report problems in RTEMS, please visit: http://www.rtems.org/bugs.html
Jennifer Averett jennifer@oarcorp.com
Ralf Corsepius ralf.corsepius@rtems.org
Chris Johns chris.johns@rtems.com
Eric Norum eric.norum@rtems.com
Joel Sherrill joel.sherrill@oarcorp.com
RTEMS is maintained by collection of volunteers. RTEMS is a very
broad and diverse project which requires expertise in many areas.
This breadth of knowledge exceeds the capabilities of any
single person. Each volunteer has areas of expertise where they
are more comfortable but each is capable of making technical
decisions across the entirety of RTEMS.
Various Component Maintainers
Blanket Write Privileges are granted to experienced RTEMS developers
who can be trusted to distinguish between changes which require
others to review, require a problem report, or can be safely committed
with limited review.
Networking NAME-TBD EMAIL-TBD
Write After Approval is granted to experienced but also trusted
RTEMS developers. These developers may be less familiar with
the breadth of RTEMS. Developers with write after approval need
to submit their patches for review. Once the patches have been approved by a
developer with Blanket Write Privileges, the patches may be checked in.
A BSP-specific patch may be checked in three work days after sending it to
devel@rtems.org in case nobody explicitly rejected the patch.
CPU Port Maintainers (CPU alphabetical order)
Localized Write Permission is for developers who have primary
responsibility for a port and all associated BSPs, a BSP, or other
specific aspects of RTEMS. These folks are allowed to make changes to
areas they maintain and related documentation, web pages, and test cases
without approval from anyone else, and approve other people's changes
in those areas. They must get approval for changes elsewhere in RTEMS.
arm Jay Monkman jtm@lopingdog.com
avr Ralf Corsepius ralf.corsepius@rtems.org
c4x Joel Sherrill joel.sherrill@OARcorp.com
h8300 NAME-TBD EMAIL-TBD
i386 NAME-TBD EMAIL-TBD
m68k NAME-TBD EMAIL-TBD
mips NAME-TBD EMAIL-TBD
no_cpu NAME-TBD EMAIL-TBD
or32 NAME-TBD EMAIL-TBD
powerpc NAME-TBD EMAIL-TBD
sh NAME-TBD EMAIL-TBD
sparc NAME-TBD EMAIL-TBD
unix NAME-TBD EMAIL-TBD
Blanket Write Privileges
========================
Jennifer Averett jennifer.averett@OARcorp.com
Thomas Doefler Thomas.Doerfler@embedded-brains.de
Sebastian Huber sebastian.huber@embedded-brains.de
Chris Johns chrisj@rtems.org
Joel Sherrill joel.sherrill@OARcorp.com
Gedare Bloom gedare@rtems.org
BSP Maintainers (CPU/BSP alphabetical order)
Write After Approval
====================
Daniel Hellstrom daniel@gaisler.com
Ben Gras beng@rtems.org
Pavel Pisa ppisa@pikron.com
Christian Mauderer christian.mauderer@embedded-brains.de
Hesham Almatary heshamelmatary@gmail.com
Amaan Cheval amaan@rtems.org
Vijay Kumar Banerjee vijay@rtems.org
Localized Write Permission
==========================
sparc Daniel Hellstrom (daniel@gaisler.com)
beagle Ben Gras (beng@rtems.org)
tms570 Pavel Pisa (pisa@cmp.felk.cvut.cz)
raspberrypi Pavel Pisa (pisa@cmp.felk.cvut.cz)
x86_64 Amaan Cheval (amaan@rtems.org)
beagle Vijay Kumar Banerjee (vijay@rtems.org)
CPU/BSP NAME-TBD EMAIL-TBD
arm/edb7312 Jay Monkman jtm@lopingdog.com
arm/gp32 Philippe Simons loki_666@fastmail.fm

View File

@@ -1,17 +1,23 @@
#
# top level directory for RTEMS build tree
#
##
## $Id$
##
ACLOCAL_AMFLAGS = -I aclocal
SUBDIRS = $(build_SUBDIRS) $(host_SUBDIRS) $(target_SUBDIRS)
SUBDIRS = make $(build_SUBDIRS) $(host_SUBDIRS) $(target_SUBDIRS)
DIST_SUBDIRS = $(SUBDIRS)
noinst_SCRIPTS = bootstrap
EXTRA_DIST = README.configure SUPPORT VERSION LICENSE $(noinst_SCRIPTS)
EXTRA_DIST += config-ml.in
EXTRA_DIST += ampolish3
dist-hook:
@files=`(cd $(srcdir); find cpukit c testsuites \
@files=`(cd $(srcdir); find doc cpukit c testsuites tools \
-name configure.ac -print | sed 's,/configure.ac,,' | sort)`; \
for i in $$files; do \
if test -f $(distdir)/$$i/configure.ac; then : ; \
@@ -34,22 +40,5 @@ dist-hook:
f=`echo $$a | sed 's,\.in$$,,'`; \
if test -f $$f; then echo "rm $$f"; rm $$f; fi; done
rtems_makedir = $(prefix)/make
dist_rtems_make_DATA =
dist_rtems_make_DATA += make/main.cfg
dist_rtems_make_DATA += make/leaf.cfg
rtems_make_Templatesdir = $(pkgdatadir)/make/Templates
dist_rtems_make_Templates_DATA =
dist_rtems_make_Templates_DATA += make/Templates/Makefile.dir
dist_rtems_make_Templates_DATA += make/Templates/Makefile.leaf
dist_rtems_make_Templates_DATA += make/Templates/Makefile.lib
rtems_make_customdir = $(rtems_makedir)/custom
dist_rtems_make_custom_DATA = make/custom/default.cfg
include $(top_srcdir)/automake/subdirs.am
include $(top_srcdir)/automake/host.am

View File

@@ -1,153 +0,0 @@
#
# Maintainer Makefile
#
# WARNING:
# THIS IS EXPERIMENTAL - DO NOT USE (YET) !
# * This Makefile is only useful to RTEMS maintainers
# * You must have write access to RTEMS CVS
# * Running this Makefile modifies RTEMS CVS
# * Watch out for warning and error messages - Do NOT IGNORE them!
# MAINTAINER notes:
# Cutting a new release:
# 1. Perform a non-anonymous cvs checkout of the BRANCH
# you want to cut a release tarball from
# 2. Run "make -f Makefile.maint new-revision"
# (rsp. "make -f Makefile.maint new-minor").
# 3. Run "make -f Makefile.maint commit"
# 4. Run "make -f Makefile.maint tag"
# 5. Run "make -f Makefile.maint tarball"
# -----------------
# SECURITY: Append a string to tag to avoid accidentially screwing up cvs-tags
# For "hot runs" you will want to use "make -f Makefile.maint TAG_SUFFIX= <command>"
TAG_SUFFIX = -test1
rtems_version := $(shell cat VERSION | sed -n '/.* Version /{s/^.*Version[ ]*\([0-9\.]\+\)/\1/p};')
rtems_tag := $(shell echo "rtems-$(rtems_version)" | tr . -)
rtems_api := 4.10
PATH := /opt/rtems-$(rtems_api)/bin:$(PATH)
# -----------------
# Cleanup check out and cvs-tag the files inside
tag:
cvs -q -z9 up -dP
./bootstrap -p >/dev/null
cvs -q tag -c $(rtems_tag)$(TAG_SUFFIX)
# -----------------
# Different stages of cvs-exporting
rtems-$(rtems_version)/stamp.export.$(rtems_tag)$(TAG_SUFFIX):
rm -rf rtems-$(rtems_version)
@cvs -q -z9 export -d rtems-$(rtems_version) -r $(rtems_tag)$(TAG_SUFFIX) rtems
@if ! test -f rtems-$(rtems_version)/VERSION; then \
echo "ERROR export failed"; \
echo " Did you run 'make -f Makefile.maint tag' ?"; exit 1; fi
echo "$(rtems_tag)$(TAG_SUFFIX)" > rtems-$(rtems_version)/stamp.export.$(rtems_tag)$(TAG_SUFFIX)
rtems-$(rtems_version)$(TAG_SUFFIX).tar.bz2: rtems-$(rtems_version)/stamp.autofiles \
rtems-$(rtems_version)/excludes \
rtems-$(rtems_version)/TOOL_VERSIONS
tar -cj -X rtems-$(rtems_version)/excludes \
-f rtems-$(rtems_version)$(TAG_SUFFIX).tar.bz2 rtems-$(rtems_version)
## Touching the top pages in the various manuals results in the date
## on their title page matching the release date.
rtems-$(rtems_version)/stamp.cleanup: rtems-$(rtems_version)/stamp.export.$(rtems_tag)$(TAG_SUFFIX)
find rtems-$(rtems_version) -name .cvsignore -exec rm -f {} \;
find rtems-$(rtems_version) -name preinstall.am -exec touch {} \;
rm -rf rtems-$(rtems_version)/contrib
touch rtems-$(rtems_version)/stamp.cleanup
rtems-$(rtems_version)/stamp.autofiles: rtems-$(rtems_version)/stamp.cleanup
cd rtems-$(rtems_version) && ./bootstrap -r
touch rtems-$(rtems_version)/stamp.autofiles
rtems-$(rtems_version)/excludes: Makefile.maint
@echo "Generating $@"
@echo "excludes" > $@
@echo "stamp.*" >> $@
@echo "autom4te.cache" >> $@
@echo "Makefile.maint" >> $@
tarball: rtems-$(rtems_version)$(TAG_SUFFIX).tar.bz2
rtems-$(rtems_version)/TOOL_VERSIONS: Makefile.maint
( \
date ; \
echo ; \
echo "This file contains configuration information on the " ; \
echo "primary computer used to test and make the $(rtems_version)" ; \
echo "version of RTEMS" ; \
echo ; \
echo "OS Version: " `head -1 /etc/issue` ; \
echo ; \
echo "The following RTEMS RPMs were installed on the machine" ; \
echo "where this release was made:" ; \
echo ; \
rpm -qa 'rtems-$(rtems_api)-*' | sort | sed -e 's/^/ /' ; \
echo \
) > $@
# -----------------
# Create a new minor release
# increments the 2nd digit of the version number
# set the 3rd digit of the version number to 0
# Example: 4.6.99.4 -> 4.7.0
new-minor:
@v=$$(echo $(rtems_version) | sed 's,^\([0-9]\+\).*,\1,'); \
r=$$(echo $(rtems_version) | sed 's,^[0-9]\+\.\([0-9]\+\).*,\1,'); \
r=$$(($$r + 1)); version="$$v.$$r.0"; \
echo "New minor release: $$version"; \
sed -i -e "s|\[_RTEMS_VERSION\],\[.*\]|\[_RTEMS_VERSION\],\[$$version\]|" \
$(VERSION_FILES); \
sed -i -e "s,\(^RTEMS Version\).*,\1 $$version," VERSION
# Create a new revision release
# increments the last digit of the version number
# Examples: 4.6.99.4 -> 4.6.99.5
# 4.7.0 -> 4.7.1
new-revision:
@m=$$(echo $(rtems_version) | sed 's,^\(.*\)\.[0-9]\+,\1,'); \
n=$$(echo $(rtems_version) | sed 's,^.*\.\([0-9]\+\),\1,'); \
n=$$(($$n + 1)); version="$$m.$$n";\
echo "New revision release: $$version"; \
sed -i -e "s|\[_RTEMS_VERSION\],\[.*\]|\[_RTEMS_VERSION\],\[$$version\]|" \
$(VERSION_FILES); \
sed -i -e "s,\(^RTEMS Version\).*,\1 $$version," VERSION
# -----------------
# Create a new branch
# increments the 2nd digit of the version number
# set the 3rd digit of the version number to 99
# set the 4rd digit of the version number to 0
# Example: 4.6.34.4 -> 4.7.99.0
new-branch:
v=$$(echo $(rtems_version) | sed 's,^\([0-9]\+\).*,\1,'); \
r=$$(echo $(rtems_version) | sed 's,^[0-9]\+\.\([0-9]\+\).*,\1,'); \
r=$$(($$r + 1)); version="$$v.$$r.99.0"; \
api="$$v.$$(($$r + 1))"; \
echo "New branch release: $$version"; \
sed -i -e "s|\[_RTEMS_VERSION\],\[.*\]|\[_RTEMS_VERSION\],\[$$version\]|" \
-e "s|\[_RTEMS_API\],\[.*\]|\[_RTEMS_API\],\[$$api\]|" \
$(VERSION_FILES); \
sed -i -e "s,\(^RTEMS Version\).*,\1 $$version," VERSION
VERSION_FILES += aclocal/version.m4
VERSION_FILES += cpukit/aclocal/version.m4
VERSION_FILES += c/src/aclocal/version.m4
VERSION_FILES += testsuites/aclocal/version.m4
CVS_RUN := $(shell if [ -n "$(TAG_SUFFIX)" ]; then echo "cvs -n"; else echo "cvs"; fi)
commit:
$(CVS_RUN) commit -m "Upgrade to $(rtems_version)" \
$(VERSION_FILES) VERSION
.PHONY: commit new-minor new-revision new-branch tag tarball

122
README
View File

@@ -1,57 +1,97 @@
Real-Time Executive for Multiprocessing Systems (RTEMS)
-------------------------------------------------------
#
# $Id$
#
RTEMS, Real-Time Executive for Multiprocessor Systems, is a real-time executive
(kernel) which provides a high performance environment for embedded
applications with the following features:
Building RTEMS
==============
See the file README.configure.
- standards based user interfaces
- multitasking capabilities
- homogeneous and heterogeneous multiprocessor systems
- event-driven, priority-based, preemptive scheduling
- optional rate monotonic scheduling
- intertask communication and synchronization
- priority inheritance
- responsive interrupt management
- dynamic memory allocation
- high level of user configurability
- open source with a friendly user license
Directory Overview
==================
Project git repositories are located at https://git.rtems.org/
This is the top level of the RTEMS directory structure. The following
is a description of the files and directories in this directory:
RTEMS Kernel: : https://git.rtems.org/rtems/
RTEMS Source Builder : https://git.rtems.org/rtems-source-builder/
RTEMS Tools : https://git.rtems.org/rtems-tools/
RTEMS Documentation : https://git.rtems.org/rtems-docs/
RTEMS FreeBSD : https://git.rtems.org/rtems-libbsd/
INSTALL
Rudimentary installation instructions. For more detailed
information please see the Release Notes. The Postscript
version of this manual can be found in the file
c_or_ada/doc/relnotes.tgz.
Online documentation is available at https://docs.rtems.org/
LICENSE
Required legalese.
RTEMS User Manual : https://docs.rtems.org/branches/master/user/index.html
RTEMS RSB Manual : https://docs.rtems.org/branches/master/rsb/index.html
RTEMS Classic API : https://docs.rtems.org/branches/master/c-user/index.html
RTEMS POSIX API : https://docs.rtems.org/branches/master/posix-users/index.html
README
This file.
RTEMS Doxygen for CPUKit : https://docs.rtems.org/doxygen/branches/master/
c
This directory contains the source code for the C
implementation of RTEMS as well as the test suites, sample
applications, Board Support Packages, Device Drivers, and
support libraries.
RTEMS POSIX 1003.1 Compliance Guide :
https://docs.rtems.org/branches/master/posix-compliance/index.html
doc
This directory contains the PDL for the RTEMS executive.
- Details the standards base functionality and profiles RTEMS supportsXo
Ada versus C
============
RTEMS Developers Wiki : http://devel.rtems.org
There are two implementations of RTEMS in this source tree --
in Ada and in C. These two implementations are functionally
and structurally equivalent. The C implementation follows
the packaging conventions and hierarchical nature of the Ada
implementation. In addition, a style has been followed which
allows one to easily find the corresponding Ada and C
implementations.
- Bug reporting, community knowledge and tutorials.
File names in C and code placement was carefully designed to insure
a close mapping to the Ada implementation. The following file name
extensions are used:
RTEMS Mailing Lists : https://lists.rtems.org/mailman/listinfo
.adb - Ada body
.ads - Ada specification
.adp - Ada body requiring preprocessing
.inc - include file for .adp files
- The RTEMS Project maintains mailing lists which are used for most
discussions:
.c - C body (non-inlined routines)
.inl - C body (inlined routines)
.h - C specification
* For general-purpose questions related to using RTEMS, use the rtems-users
ml: https://lists.rtems.org/mailman/listinfo/users
In the executive source, XYZ.c and XYZ.inl correspond directly to a
single XYZ.adb or XYZ.adp file. A .h file corresponds directly to
the .ads file. There are only a handful of .inc files in the
Ada source and these are used to insure that the desired simple
inline textual expansion is performed. This avoids scoping and
calling convention side-effects in carefully constructed tests
which usually test context switch behavior.
* For questions and discussion related to development of RTEMS, use the
rtems-devel ml: https://lists.rtems.org/mailman/listinfo/devel
In addition, in Ada code and data name references are always fully
qualified as PACKAGE.NAME. In C, this convention is followed
by having the package name as part of the name itself and using a
capital letter to indicate the presence of a "." level. So we have
PACKAGE.NAME in Ada and _Package_Name in C. The leading "_" in C
is used to avoid naming conflicts between RTEMS and user variables.
By using these conventions, one can easily compare the C and Ada
implementations.
The version number for this software is indicated in the VERSION file.
The most noticeable difference between the C and Ada83 code is
the inability to easily obtain a "typed pointer" in Ada83.
Using the "&" operator in C yields a pointer with a specific type.
The 'Address attribute is the closest feature in Ada83. This
returns a System.Address and this must be coerced via Unchecked_Conversion
into an access type of the desired type. It is easy to view
System.Address as similar to a "void *" in C, but this is not the case.
A "void *" can be assigned to any other pointer type without an
explicit conversion.
The solution adopted to this problem was to provide two routines for
each access type in the Ada implementation -- one to convert from
System.Address to the access type and another to go the opposite
direction. This results in code which accomplishes the same thing
as the corresponding C but it is easier to get lost in the clutter
of the apparent subprogram invocations than the "less bulky"
C equivalent.
A related difference is the types which are only in Ada which are used
for pointers to arrays. These types do not exist and are not needed
in the C implementation.

73
README.cdn-X Normal file
View File

@@ -0,0 +1,73 @@
Building RTEMS Canadian Cross
=============================
RTEMS now contains experimental and yet incomplete support for building
it Canadian Cross.
1. Introduction
---------------
If you don't know what Canadian Cross Building means, you probably don't want
to apply it and should consider stop reading here.
Interested readers might want to read Ian Lance Taylor's article at
http://www.airs.com/ian/configure for underlaying details and working
principles.
2. RTEMS
--------
Example: Building RTEMS for sparc-rtems under i386-pc-linux-gnu to be hosted
on a i386-cygwin platform.
2.1 Required tools
------------------
* A i386-pc-linux-gnu cross sparc-rtems toolchain.
* A i386-pc-linux-gnu cross i386-cygwin toolchain.
* A i386-pc-linux-gnu native toolchain.
We further on assume these to be installed to these locations:
/opt/rtems .. linux cross sparc-rtems toolchain
/opt/cygwin .. linux cross i386-cygwin cross-toolchain
/usr .. linux native toolchain and further tools.
2.2 Building sparc-rtems
------------------------
The first step is to build RTEMS for sparc-rtems under linux.
mkdir build
cd build
<path>/rtems/configure [options] \
--target=sparc-rtems \
--prefix=/opt/cygwin
make
make install
This will build a standard sparc-rtems RTEMS and install it to the given
PREFIX.
2.3 Building i386-cygwin host support
-------------------------------------
The next step is to build RTEMS host support for i386-cygwin.
This basically means to cross-build the host tools contained in RTEMS.
mkdir host
cd host
<path>/rtems/configure [options] \
--target=sparc-rtems \
--build=`<path>/rtems/config.guess` \
--host=i386-cygwin \
--prefix=/opt/cygwin
make
make install
This will build RTEMS host-tools for i386-cygwin and install them to the given
PREFIX.
3. Known issues
---------------
* At present time, building RTEMS Canadian Cross is known to be immature, and
to require additional work. Do not expect this to work.
* The <toplevel>/make/ directory hierarchy is not treated correctly.

260
README.configure Normal file
View File

@@ -0,0 +1,260 @@
#
# $Id$
#
1. Autoconf support
===================
This version of RTEMS is configured with GNU autoconf. RTEMS can be
configured and built either standalone or together with the compiler
tools in the Cygnus one-tree structure. Using autoconf also means
that RTEMS now can be built in a separate build directory.
To re-generate auto*tool generated files (configure, Makefile.in etc),
autoconf-2.59 and automake-1.8 are required.
2. Installation
===============
2.1 Standalone build
To configure RTEMS for a specific target, run configure in the build
directory. In addition to the standard configure options, the following
RTEMS-specific option are supported:
--disable-rtems-inlines
--disable-posix
--disable-itron
--disable-networking
--enable-cxx
--enable-bare-cpu-model=<MODEL>
--enable-bare-cpu-cflags=<FLAGS>
--enable-multiprocessing
--enable-rtemsbsp="bsp1 bsp2 ..."
--enable-tests
--enable-rdbg (only valid for i386 and some PowerPC BSPs)
--enable-docs
In addition, the following standard autoconf options are frequently
used when configuring RTEMS installations:
--prefix=INSTALL_DIRECTORY
By default, inline routines are used instead of macros where possible.
Macros can be selected using the --disable-inlines option. [NOTE:
Some APIs may not support macro versions of their inline routines.]
By default, the RTEMS POSIX 1003.1b interface is built for targets that support
it. It can be disabled with the --disable-posix option.
By default, the RTEMS uITRON interface is built for targets that support
it. It can be disabled with the --disable-itron option.
By default, the RTEMS networking support is built for targets which
support it. It can be specifically disabled for those targets
with the --disable-networking option.
By default, the RTEMS remote debugger server support is not built.
It can be specifically enabled for the targets that support it.
with the --enable-rdbg option. NB : the RTEMS networking support
must be enabled to support the remote debugger server.
By default, the RTEMS support of C++ is disabled. It can be enabled
with the --enable-cxx option. If the rtems++ C++ library is installed
it will also be build.
By default, the RTEMS test suites are NOT configured -- only the
sample tests are built. --enable-tests will configure
the RTEMS test suite. The default speeds up the build
and configure process when the tests are not desired.
By default, RTEMS is built using arguments and build rules which require a
gcc supporting the -specs option, ie. a gcc >= 2.8.
[The --disable-gcc28 option, which has been present in former releases, has
been removed.]
By default, multiprocessing is is not built. It can be enabled
for those BSPs supporting it by the --enable-multiprocessing option.
By default, all bsps for a target are built. The bare BSP is not built
unless directly specified. There are two ways of changing this:
+ use the --enable-rtemsbsp option which will set the specified
bsps as the default bsps, or
+ set the RTEMS_BSP variable during make (see below).
The --enable-rtemsbsp= option configures RTEMS for a specific board
within a target architecture. Remember that the target specifies the
CPU family while the BSP specifies the precise board you will be using.
The following targets are supported:
(none) will build the host-based version on Linux,
Solaris and HPUX.
arm-rtems
c4x-rtems
h8300-rtems
i386-rtems
m68k-rtems
mips-rtems
no_cpu-rtems
or32-rtems
powerpc-rtems
sh-rtems
sparc-rtems
bare see notes
The cross-compiler is set to $(target)-gcc by default. This can be
overridden by:
+ using the --program-prefix option to configure to specify the
string which will prepended to the tool names. Be sure to include
a trailing "-". For example, to use a m68k-coff toolset, use the
--program-prefix=m68k-coff- option.
To build, run make in the build directory. To specify which bsps to build,
add the RTEMS_BSP="bsp1 bsp2 .." to the make command. Specifying multiple
BSPs to build only works from the top level build directory.
Installation is done under $(prefix)/rtems.
As an example, to build and install the mvme136 and mvme162 bsps for m68k do:
(path_to_rtems_src)/configure --target=m68k-rtems
make RTEMS_BSP="mvme136 mvme162"
make install RTEMS_BSP="mvme136 mvme162"
The sample tests are built by 'make all', do a 'make test' to build the full
test suite.
By default, --enable-docs is disabled and documentation is not built.
2.2 Build with Cygnus one-tree release
[NOTE: This section does not apply anymore.]
To build and install RTEMS with the one-tree structure, just copy the rtems
directory to the tree. The one-tree configure.in and Makefile.in has to be
replaced with the RTEMS-aware versions. The build options are the same as
for the standalone build.
2.3 Target Dependent Notes
bare:
1. See the README in the bare bsp source directory. This should
contain all info you need.
2. The bare bsp source contains a script to show how to build it.
3. The configure flags must be used to get the bare bsp to work.
The --enable-bare-cpu-model and --enable-bare-cpu-cflags are the
only pieces of information. The module is usually a gcc module
such as m68302 or mcpu32. The flags are passed directly to gcc.
Use "" if more than one option is specified.
3. To use the installed RTEMS library
=====================================
To use the installed RTEMS bsps to build applications, the application
makefile has to include a bsp-specific makefile that will define the
RTEMS variables necessary to find include files and libraries. The
bsp-specific makefile is installed at
$(RTEMS_MAKEFILE_PATH)/Makefile.inc
For the erc32 bsp installed at /usr/local/cross, the environment
variable RTEMS_MAKEFILE_PATH would be set as follows to the
following:
/usr/local/cross/sparc-rtems/rtems/erc32/Makefile.inc
4. Supported target bsps
========================
The following bsps are supported:
host-based : posix (on Linux, FreeBSD, Cygwin, Solaris, and HPUX)
arm : arm_bare_bsp armulator csb336 csb337 edb7312 gp32 vegaplus
c4x : c3xsim c4xsim
h8300 : h8sim
i386 : i386ex pc386 pc386dx pc486 pc586 pc686 pck6 ts_386ex
NOTE: The "pc386" BSP can be compiled to support a
variety of PC configurations including PC-104
based solutions.
m68k : av5282 csb360 dmv152 gen68302 gen68340 gen68360 gen68360_040
idp mcf5206elite mcf5235 mrm332 mvme136 mvme147 mvme147s
mvme162 mvme162lx ods68302 sim68000 simcpu32 uC5282
no_cpu : no_bsp (porting example)
mips : csb350 genmongoosev
p4600 p4650 (p4000 port with either R4600 or R4650)
jmr3904
powerpc : ep1a gen405 helas403 mcp750 mbx8xx mtx603e
mpc8260ads mvme230x mvme5500 psim score603e ss555
NOTE: The "motorola_powerpc" BSP is a single BSP which
can be conditionally compiled to support most Motorola
VMEbus, CompactPCI, and MTX boards.)
sh : gensh1 gensh2 shsim simsh4 gensh4
sparc : erc32 erc32nfp leon1 leon2
any : bare
The following ports were considered obsoleted after the 4.6 releases
and were removed: a29k, hppa, i960, mips64orion, and or32.
5. Makefile structure
=====================
The makefiles have been re-organized. Most gnu-based bsps now use three
main makefiles:
+ custom/default.cfg,
+ custom/bsp.cfg and
+ compilers/gcc-target-default.cfg.
Default.cfg sets the default values of certain common build options.
Bsp.cfg set bsp-specific build options and can also override the
default settings.
Gcc-target-default.cfg contains the common gcc definitions.
6. Adding a bsp
===============
Please refer to the BSP and Device Driver Guide.
7. Tested configurations
========================
All gnu-based bsps have been built on Linux.
The native (posix) ports have been built and run only on Linux.
The following configurations have NOT been tested:
+ Anything on Nextstep, HPUX and Irix.
+ The C4x and OR32 ports (requires specially patched toolchain)
8. Prerequisites
================
Gawk version 2 or higher.
GNU make version 3.72 or higher.
Bash.
gcc version > 2.8
NOTE: These prerequisites are probably out of date but autoconf should detect
any problems.

22
SUPPORT Normal file
View File

@@ -0,0 +1,22 @@
#
# $Id$
#
On-Line Applications Research Corporation (OAR) offers support,
customization, and training for RTEMS. Custom RTEMS development services
includes porting RTEMS to new processors and the development of custom board
support packages and device drivers. In addition, OAR is available
to assist in the development of your real-time embedded application.
For more information, email Mark Johannes at mark.johannes@OARcorp.com
or contact OAR at:
On-Line Applications Research Corporation
4910-L Corporate Drive
Huntsville AL 35805
Voice: (205) 722-9985
Fax: (205 722-0985
RTEMS maintenance and development is funded solely by RTEMS users.
The future of RTEMS depends on its user base.

7
VERSION Normal file
View File

@@ -0,0 +1,7 @@
#
# This file is automatically generated -- DO NOT EDIT!!!
#
# $Id$
#
RTEMS Version 4.7.1

View File

@@ -14,7 +14,7 @@ dnl Stripped down version of autoconf-2.52's AC_ARG_VAR.
AC_DEFUN([_RTEMS_ARG_VAR],
[
m4_expand_once([m4_divert_once([HELP_VAR],
[AS_HELP_STRING([$1], [$2], [ ])])],
[AC_HELP_STRING([$1], [$2], [ ])])],
[$0($1)])dnl
])
@@ -211,7 +211,7 @@ if test "$no_recursion" != yes; then
esac
ac_popdir=`pwd`
for ac_dir in : $$1_configdirs; do test "x$ac_dir" = x: && continue
for ac_dir in $$1_configdirs; do
# Do not complain, so a configure script can configure whichever
# parts of a large source tree are present.

View File

@@ -1,16 +1,39 @@
dnl
dnl $Id$
dnl
dnl _RTEMS_BSP_ALIAS(BSP_ALIAS,RTEMS_BSP_FAMILY)
dnl Internal subroutine to RTEMS_BSP_ALIAS
AC_DEFUN([_RTEMS_BSP_ALIAS],[
AC_REQUIRE([RTEMS_CANONICAL_TARGET_CPU])
AC_REQUIRE([RTEMS_SOURCE_TOP])
# account for "aliased" bsps which share source code
for bsp_cfgs in `ls "${RTEMS_SOURCE_ROOT}/bsps/${RTEMS_CPU}"/*/"config/$1.cfg" 2>/dev/null`; do
$2=`echo "$bsp_cfgs" | sed \
-e "s,^${RTEMS_SOURCE_ROOT}/bsps/$RTEMS_CPU/,," \
-e "s,/config/.*\.cfg$,,"`
break
done
])
AC_DEFUN([_RTEMS_BSP_ALIAS],
[# account for "aliased" bsps which share source code
case $1 in
bare*) $2=bare ;; # EXP: bare-aliases
c3xsim) $2=c4xsim ;; # TI C3x Simulator in gdb
erc32nfp) $2=erc32 ;; # erc32 without fpu
gen68360_040) $2=gen68360 ;; # m68k - 68360 in companion mode
leon1) $2=leon2 ;; # leon without fpu
mbx8*) $2=mbx8xx ;; # MBX821/MBX860 board
mcp750) $2=motorola_powerpc ;; # Motorola PPC board variant
mtx603e) $2=motorola_powerpc ;; # Motorola PPC board variant
mvme162lx) $2=mvme162 ;; # m68k - mvme162 board variant
mvme2100) $2=motorola_powerpc ;; # Motorola PPC board variant
mvme2307) $2=motorola_powerpc ;; # Motorola PPC board variant
p4600) $2=p4000 ;; # mips - p4000 board w/IDT 4600
p4650) $2=p4000 ;; # mips - p4000 board w/IDT 4650
pc386dx) $2=pc386 ;; # i386 - PC w/o FPU
pc486) $2=pc386 ;; # i386 - PC with i486DX
pc586) $2=pc386 ;; # i386 - PC with Pentium
pc686) $2=pc386 ;; # i386 - PC with PentiumPro
pck6) $2=pc386 ;; # i386 - PC with K6
brs5l*) $2=gen5200 ;; # MPC5200 based board
pm520*) $2=gen5200 ;; # MPC5200 based board
simcpu32) $2=sim68000 ;; # BSVC CPU32 variant
simsh7032) $2=shsim ;; # SH7032 simulator
simsh7045) $2=shsim ;; # SH7045 simulator
sis) $2=erc32 ;; # erc32 SIS simulator
*) $2=$1;;
esac]
)
dnl RTEMS_BSP_ALIAS(BSP_ALIAS,RTEMS_BSP_FAMILY)
dnl convert a bsp alias $1 into its bsp directory RTEMS_BSP_FAMILY

View File

@@ -1,5 +1,9 @@
dnl
dnl $Id$
dnl
dnl canonicalize target cpu
dnl NOTE: Most rtems targets do not fulfil autoconf's
dnl NOTE: Most rtems targets do not fullfil autoconf's
dnl target naming conventions "processor-vendor-os"
dnl Therefore autoconf's AC_CANONICAL_TARGET will fail for them
dnl and we have to fix it for rtems ourselves
@@ -9,13 +13,26 @@ AC_DEFUN([RTEMS_CANONICAL_TARGET_CPU],
AC_CANONICAL_TARGET
AC_MSG_CHECKING(rtems target cpu)
case "${target}" in
# hpux unix port should go here
i[[34567]]86-*linux*) # unix "simulator" port
RTEMS_CPU=unix
;;
i[[34567]]86-*freebsd*) # unix "simulator" port
RTEMS_CPU=unix
;;
i[[34567]]86-pc-cygwin*) # Cygwin is just enough unix like :)
RTEMS_CPU=unix
;;
no_cpu-*rtems*)
RTEMS_CPU=no_cpu
;;
riscv*-*rtems*)
RTEMS_CPU=riscv
sparc-sun-solaris*) # unix "simulator" port
RTEMS_CPU=unix
;;
*)
tic4x-*rtems*) # gcc changed the name
RTEMS_CPU=c4x
;;
*)
RTEMS_CPU=`echo $target | sed 's%^\([[^-]]*\)-\(.*\)$%\1%'`
;;
esac

View File

@@ -1,23 +1,41 @@
dnl $Id$
dnl Report all available bsps for a target within the source tree
dnl
dnl RTEMS_CHECK_BSPS(bsp_list)
AC_DEFUN([RTEMS_CHECK_BSPS],
[
AC_REQUIRE([RTEMS_CANONICAL_TARGET_CPU])dnl sets RTEMS_CPU, target
AC_REQUIRE([RTEMS_SOURCE_TOP])dnl sets RTEMS_SOURCE_ROOT
AC_REQUIRE([RTEMS_TOP])dnl sets RTEMS_TOPdir
AC_MSG_CHECKING([for available BSPs])
$1=
for bsp_make in `echo "${RTEMS_SOURCE_ROOT}/bsps/${RTEMS_CPU}"/*/config 2>/dev/null`; do
bsp_family=`echo "$bsp_make" | sed \
-e "s,^${RTEMS_SOURCE_ROOT}/bsps/${RTEMS_CPU}/,," \
-e "s,/config$,,"`
for bsp_cfgs in `ls "${RTEMS_SOURCE_ROOT}/bsps/${RTEMS_CPU}/$bsp_family/config/"*.cfg 2>/dev/null`; do
bsp_cfg=`echo "$bsp_cfgs" | sed \
-e "s,^${RTEMS_SOURCE_ROOT}/bsps/${RTEMS_CPU}/$bsp_family/config/,," \
-e "s,\.cfg$,,"`
$1="[$]$1 $bsp_cfg"
done
for bsp_spec in `ls "$srcdir/$RTEMS_TOPdir/c/src/lib/libbsp/$RTEMS_CPU"/*/bsp_specs 2>/dev/null`; do
bsp_family=`echo "$bsp_spec" | sed \
-e "s,^$srcdir/$RTEMS_TOPdir/c/src/lib/libbsp/$RTEMS_CPU/,," \
-e "s,/bsp_specs$,,"`
case $bsp_family in
# Now account for BSPs with build variants
c4xsim) bsps="c4xsim c3xsim";;
gen68360) bsps="gen68360 gen68360_040";;
p4000) bsps="p4600 p4650";;
mvme162) bsps="mvme162 mvme162lx";;
mbx8xx) bsps="mbx821_001 mbx860_001b"
bsps="$bsps mbx821_002 mbx821_002b"
bsps="$bsps mbx860_1b"
bsps="$bsps mbx860_002"
bsps="$bsps mbx860_005b"
;;
gen5200) bsps="pm520_cr825 pm520_ze30 brs5l";;
motorola_powerpc) bsps="mvme2307 mcp750 mtx603e mvme2100";;
pc386) bsps="pc386 pc386dx pc486 pc586 pc686 pck6";;
erc32) bsps="erc32 erc32nfp sis";;
leon2) bsps="leon1 leon2";;
sim68000) bsps="sim68000 simcpu32";;
shsim) bsps="simsh7032 simsh7045";;
*) bsps="$bsp_family";;
esac;
$1="[$]$1 $bsps"
done
AS_IF([test -z "[$]$1"],
[AC_MSG_RESULT([none])],

View File

@@ -1,20 +1,24 @@
dnl $Id$
AC_DEFUN([_RTEMS_CHECK_CUSTOM_BSP],[
AC_REQUIRE([RTEMS_CANONICAL_TARGET_CPU])dnl sets RTEMS_CPU, target
AC_REQUIRE([RTEMS_SOURCE_TOP])dnl sets RTEMS_SOURCE_ROOT
AC_REQUIRE([RTEMS_TOP])dnl sets RTEMS_TOPdir
$2=
for i in \
`ls "${RTEMS_SOURCE_ROOT}/bsps/${RTEMS_CPU}"/*/config/$1 2>/dev/null`;
AC_MSG_CHECKING([for $1])
for i in "${srcdir}/${RTEMS_TOPdir}/bspkit/${RTEMS_CPU}"/*/cfg/"$1" \
"${srcdir}/${RTEMS_TOPdir}/make/custom/$1";
do
AS_IF([test -r $i],[
$2="$i"
break;
])
done
AS_IF([test -n "[$]$2"],
[AC_MSG_RESULT([[$]$2])],
[AC_MSG_RESULT([no])])
])
AC_DEFUN([RTEMS_CHECK_CUSTOM_BSP],[
AC_REQUIRE([RTEMS_TOP])
_RTEMS_CHECK_CUSTOM_BSP([[$]$1.cfg],[BSP_FOUND])
AS_IF([test -z "$BSP_FOUND"],[
AC_MSG_ERROR([missing [$]$1.cfg])
])
])

View File

@@ -1,9 +0,0 @@
## Check for a cross tool, similar to AC_CHECK_TOOL, but do not fall back to
## the un-prefixed version of PROG-TO-CHECK-FOR.
dnl RTEMS_CHECK_TOOL(VARIABLE, PROG-TO-CHECK-FOR[, VALUE-IF-NOT-FOUND [, PATH]])
AC_DEFUN([RTEMS_CHECK_TOOL],
[
AS_IF([test "x$target_alias" != "x$host_alias"],
[rtems_tool_prefix=$target_alias-])
AC_CHECK_PROG($1, ${rtems_tool_prefix}$2, ${rtems_tool_prefix}$2, $3, $4)
])

View File

@@ -1,11 +1,13 @@
dnl $Id$
AC_DEFUN([RTEMS_ENABLE_CXX],
[
AC_ARG_ENABLE(cxx,
[AS_HELP_STRING([--enable-cxx],
[enable C++ support])],
[AC_HELP_STRING([--enable-cxx],
[enable C++ support and build the rtems++ library])],
[case "${enable_cxx}" in
yes) RTEMS_HAS_CPLUSPLUS=yes ;;
no) RTEMS_HAS_CPLUSPLUS=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for enable-cxx option) ;;
esac], [RTEMS_HAS_CPLUSPLUS=yes])
esac], [RTEMS_HAS_CPLUSPLUS=no])
])

View File

@@ -1,12 +0,0 @@
AC_DEFUN([RTEMS_ENABLE_DRVMGR],
[
## AC_BEFORE([$0], [RTEMS_CHECK_DRVMGR_STARTUP])dnl
AC_ARG_ENABLE(drvmgr,
[AS_HELP_STRING([--enable-drvmgr],[enable Driver Manager at Startup])],
[case "${enableval}" in
yes) RTEMS_DRVMGR_STARTUP=yes ;;
no) RTEMS_DRVMGR_STARTUP=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for enable-drvmgr option) ;;
esac],[RTEMS_DRVMGR_STARTUP=yes])
])

11
aclocal/enable-inlines.m4 Normal file
View File

@@ -0,0 +1,11 @@
dnl $Id$
AC_DEFUN([RTEMS_ENABLE_INLINES],
[AC_ARG_ENABLE(rtems-inlines,
AC_HELP_STRING([--enable-rtems-inlines],[enable RTEMS inline functions (default:enabled, disable to use macros)]),
[case "${enableval}" in
yes) enable_rtems_inlines=yes ;;
no) enable_rtems_inlines=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for enable-rtems-inlines option) ;;
esac],[enable_rtems_inlines=yes])
])

14
aclocal/enable-itron.m4 Normal file
View File

@@ -0,0 +1,14 @@
dnl $Id$
AC_DEFUN([RTEMS_ENABLE_ITRON],
[
## AC_BEFORE([$0], [RTEMS_CHECK_ITRON_API])dnl
AC_ARG_ENABLE(itron,
[AC_HELP_STRING([--enable-itron],[enable itron interface])],
[case "${enableval}" in
yes) RTEMS_HAS_ITRON_API=yes ;;
no) RTEMS_HAS_ITRON_API=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for enable-itron option) ;;
esac],[RTEMS_HAS_ITRON_API=yes])
])

View File

@@ -1,13 +1,12 @@
dnl $Id$
AC_DEFUN([RTEMS_ENABLE_MULTIPROCESSING],
[
AC_ARG_ENABLE(multiprocessing,
[AS_HELP_STRING([--enable-multiprocessing],
[enable multiprocessing interface; the multiprocessing interface is a
communication interface between different RTEMS instances and allows
synchronization of objects via message passing])],
[case "${enable_multiprocessing}" in
yes) test -z $enable_rtemsbsp && AC_MSG_ERROR([Multiprocessing requires BSPs to be provided, none have, see --enable-rtemsbsp])
;;
[AC_HELP_STRING([--enable-multiprocessing],
[enable multiprocessing interface])],
[case "${enable_multiprocessing}" in
yes) ;;
no) ;;
*) AC_MSG_ERROR(bad value ${enableval} for enable-multiprocessing option) ;;
esac],[enable_multiprocessing=no])

View File

@@ -1,9 +1,11 @@
dnl $Id$
AC_DEFUN([RTEMS_ENABLE_NETWORKING],
[
## AC_BEFORE([$0], [RTEMS_CHECK_NETWORKING])dnl
AC_ARG_ENABLE(networking,
[AS_HELP_STRING([--enable-networking],[enable TCP/IP stack])],
[AC_HELP_STRING([--enable-networking],[enable TCP/IP stack])],
[case "${enableval}" in
yes) RTEMS_HAS_NETWORKING=yes ;;
no) RTEMS_HAS_NETWORKING=no ;;

View File

@@ -1,13 +0,0 @@
AC_DEFUN([RTEMS_ENABLE_PARAVIRT],
[
AC_ARG_ENABLE(paravirt,
[AS_HELP_STRING([--enable-paravirt],[enable support for paravirtualization
(default=no)])],
[case "${enableval}" in
yes) RTEMS_HAS_PARAVIRT=yes ;;
no) RTEMS_HAS_PARAVIRT=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for enable-paravirt option) ;;
esac],[RTEMS_HAS_PARAVIRT=no])
])

View File

@@ -1,9 +1,11 @@
dnl $Id$
AC_DEFUN([RTEMS_ENABLE_POSIX],
[
## AC_BEFORE([$0], [RTEMS_CHECK_POSIX_API])dnl
AC_ARG_ENABLE(posix,
[AS_HELP_STRING([--enable-posix],[enable posix interface])],
[AC_HELP_STRING([--enable-posix],[enable posix interface])],
[case "${enableval}" in
yes) RTEMS_HAS_POSIX_API=yes ;;
no) RTEMS_HAS_POSIX_API=no ;;
@@ -11,9 +13,19 @@ AC_ARG_ENABLE(posix,
esac],[RTEMS_HAS_POSIX_API=yes])
case "${host}" in
# hpux unix port should go here
i[[34567]]86-pc-linux*) # unix "simulator" port
RTEMS_HAS_POSIX_API=no
;;
i[[34567]]86-*freebsd*) # unix "simulator" port
RTEMS_HAS_POSIX_API=no
;;
no_cpu-*rtems*)
RTEMS_HAS_POSIX_API=no
;;
sparc-sun-solaris*) # unix "simulator" port
RTEMS_HAS_POSIX_API=no
;;
*)
;;
esac

15
aclocal/enable-rdbg.m4 Normal file
View File

@@ -0,0 +1,15 @@
dnl $Id$
AC_DEFUN([RTEMS_ENABLE_RDBG],
[
AC_BEFORE([$0], [RTEMS_CHECK_RDBG])dnl
AC_ARG_ENABLE(rdbg,
[AC_HELP_STRING([--enable-rdbg],[enable remote debugger])],
[case "${enableval}" in
yes) RTEMS_HAS_RDBG=yes ;;
no) RTEMS_HAS_RDBG=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for enable-rdbg option) ;;
esac],[RTEMS_HAS_RDBG=no])
AC_SUBST(RTEMS_HAS_RDBG)dnl
])

View File

@@ -1,7 +1,9 @@
## $Id$
AC_DEFUN([RTEMS_ENABLE_RTEMS_DEBUG],
[
AC_ARG_ENABLE(rtems-debug,
AS_HELP_STRING([--enable-rtems-debug],[enable RTEMS_DEBUG]),
AC_HELP_STRING([--enable-rtems-debug],[enable RTEMS_DEBUG]),
[case "${enable_rtems_debug}" in
yes) enable_rtems_debug=yes ;;
no) enable_rtems_debug=no ;;

View File

@@ -1,3 +1,5 @@
dnl $Id$
dnl Override the set of BSPs to be built.
dnl used by the toplevel configure script
dnl RTEMS_ENABLE_RTEMSBSP(rtems_bsp_list)
@@ -5,50 +7,11 @@ AC_DEFUN([RTEMS_ENABLE_RTEMSBSP],
[
AC_BEFORE([$0], [RTEMS_ENV_RTEMSBSP])
AC_ARG_ENABLE(rtemsbsp,
[AS_HELP_STRING([--enable-rtemsbsp="bsp1 bsp2 .."],
[BSPs to include in build, required for SMP and MP builds])],
[AC_HELP_STRING([--enable-rtemsbsp="bsp1 bsp2 .."],
[BSPs to include in build])],
[case "${enable_rtemsbsp}" in
yes ) enable_rtemsbsp="" ;;
no ) enable_rtemsbsp="no" ;;
*) enable_rtemsbsp="$enable_rtemsbsp"
srctop=${srcdir}
while test x${srctop} != x/
do
if test -d ${srctop}/cpukit -a -d ${srctop}/c/src/lib/libbsp; then
break
fi
srctop=$(dirname ${srctop})
done
if test x${srctop} = x/; then
AC_MSG_ERROR([Cannot find the top of source tree, please report to devel@rtems.org])
fi
target_arch=$(echo ${target_alias} | sed -e "s/\-.*//g")
libbsp=${srctop}/bsps
libbsp_e=$(echo ${libbsp} | sed -e 's/\//\\\//g')
cfg_list=$(LANG=C LC_COLLATE=C find ${libbsp} -mindepth 1 -name \*.cfg)
for bsp in ${enable_rtemsbsp};
do
found=no
for bsp_path in ${cfg_list};
do
cfg_bsp=$(echo ${bsp_path} | sed -e "s/.*\///" -e 's/\.cfg//')
if test x$bsp = x$cfg_bsp; then
cfg_arch=$(echo ${bsp_path} | sed -e "s/${libbsp_e}*\///" -e 's/\/.*//')
case ${target_arch} in
${cfg_arch}* )
;;
* )
AC_MSG_ERROR([BSP '$bsp' architecture does not match the --target architecture, run 'rtems-bsps' (in the top of the source tree) for a valid BSP list])
;;
esac
found=yes
break
fi
done
if test $found = no; then
AC_MSG_ERROR([BSP '$bsp' not found, run 'rtems-bsps' (in the top of the source tree) for a valid BSP list])
fi
done
;;
*) enable_rtemsbsp="$enable_rtemsbsp" ;;
esac],[enable_rtemsbsp=""])
])

View File

@@ -1,18 +0,0 @@
AC_DEFUN([RTEMS_ENABLE_SMP],
[
## AC_BEFORE([$0], [RTEMS_CHECK_SMP])dnl
AC_ARG_ENABLE(smp,
[AS_HELP_STRING([--enable-smp],[enable support for symmetric multiprocessing
(SMP)])],
[case "${enableval}" in
yes) test -z $enable_rtemsbsp && AC_MSG_ERROR([SMP requires BSPs to be provided, none have, see --enable-rtemsbsp])
case "${RTEMS_CPU}" in
arm|powerpc|riscv*|sparc|i386) RTEMS_HAS_SMP=yes ;;
*) RTEMS_HAS_SMP=no ;;
esac
;;
no) RTEMS_HAS_SMP=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for enable-smp option) ;;
esac],[RTEMS_HAS_SMP=no])
])

View File

@@ -1,7 +1,9 @@
dnl $Id$
AC_DEFUN([RTEMS_ENABLE_TESTS],
[
AC_ARG_ENABLE(tests,
[AS_HELP_STRING([--enable-tests],[enable tests (default:samples)])],
[AC_HELP_STRING([--enable-tests],[enable tests (default:samples)])],
[case "${enableval}" in
samples) enable_tests=samples;;
yes) enable_tests=yes ;;

View File

@@ -5,7 +5,7 @@ dnl parts of these macros are derived from newlib-1.8.2's multilib support
AC_DEFUN([RTEMS_ENABLE_MULTILIB],
[
AC_ARG_ENABLE(multilib,
AS_HELP_STRING([--enable-multilib],
AC_HELP_STRING([--enable-multilib],
[build many library versions (default=no)]),
[case "${enableval}" in
yes) multilib=yes ;;

View File

@@ -1,3 +1,5 @@
dnl $Id$
AC_DEFUN([RTEMS_PATH_KSH],
[
dnl NOTE: prefer bash over ksh over sh

View File

@@ -1,17 +1,22 @@
dnl
dnl $Id$
dnl
dnl
dnl PROJECT_TOPdir .. relative path to the top of the build-tree
dnl PROJECT_ROOT .. relative path to the top of the temporary
dnl installation directory inside the build-tree
dnl RTEMS_TOPdir .. relative path of a subpackage's configure.ac to the
dnl toplevel configure.ac of the source-tree
dnl RTEMS_TOPdir .. relative path of a subpackage's configure.in to the
dnl toplevel configure.in of the source-tree
dnl RTEMS_ROOT .. path to the top of a bsp's build directory
dnl [Applied by custom/*.cfg, deprecated otherwise]
dnl [Applied by custom/*.cfg, depredicated otherwise]
dnl
AC_DEFUN([RTEMS_PROJECT_ROOT],
[dnl
AC_REQUIRE([RTEMS_TOP])
BIN2C=rtems-bin2c
AC_SUBST(BIN2C)
PACKHEX="\$(PROJECT_TOPdir)/tools/build/packhex"
AC_SUBST(PACKHEX)
])

View File

@@ -2,19 +2,19 @@ AC_DEFUN([RTEMS_ENABLE_RPMPREFIX],[
AC_ARG_ENABLE([rpmprefix],
[ --enable-rpmprefix=<rpmprefix> prefix rpms],
[case $enable_rpmprefix in
yes ) rpmprefix="rtems-"]_RTEMS_API["-";;
yes ) rpmprefix="rtems-"]RTEMS_API["-";;
no ) rpmprefix="%{nil}";;
* ) AS_IF([test -z "$enable_rpmprefix"],
[rpmprefix="%{nil}"],
[rpmprefix="$enable_rpmprefix"]);;
esac],
[rpmprefix="rtems-"]_RTEMS_API["-"])
[rpmprefix="rtems-"]RTEMS_API["-"])
AC_ARG_ENABLE([osversions],
[ --enable-osversions whether to use version numbers in os-tripples],
[case $enable_osversions in
yes ) osversion=_RTEMS_API;;
yes ) osversion=RTEMS_API;;
* ) osversion=;;
esac],
[osversion=_RTEMS_API])
[osversion=RTEMS_API])
])

View File

@@ -1,13 +0,0 @@
dnl
dnl RTEMS Include paths.
dnl
AC_DEFUN([RTEMS_BSP_INCLUDES],
[
AC_REQUIRE([RTEMS_SOURCE_TOP])
AC_REQUIRE([RTEMS_BUILD_TOP])
RTEMS_BSP_CPPFLAGS="-I${RTEMS_BUILD_ROOT}/lib/libbsp/\$(RTEMS_CPU)/\$(RTEMS_BSP_FAMILY)/include \
-I${RTEMS_SOURCE_ROOT}/bsps/include \
-I${RTEMS_SOURCE_ROOT}/bsps/\$(RTEMS_CPU)/include \
-I${RTEMS_SOURCE_ROOT}/bsps/\$(RTEMS_CPU)/\$(RTEMS_BSP_FAMILY)/include"
AC_SUBST([RTEMS_BSP_CPPFLAGS])
])

View File

@@ -1,12 +0,0 @@
dnl
dnl RTEMS_BUILD_TOP($1)
dnl
AC_DEFUN([RTEMS_BUILD_TOP],
[dnl
#
# This is a copy of the horrible hack in rtems-top.m4 and it is simpler to
# copy it than attempt to clean this crap up.
#
RTEMS_BUILD_ROOT="${with_rtems_build_top}"
AC_SUBST([RTEMS_BUILD_ROOT])
])dnl

View File

@@ -1,23 +0,0 @@
dnl
dnl RTEMS Include paths.
dnl
AC_DEFUN([RTEMS_INCLUDES],
[
AC_REQUIRE([RTEMS_SOURCE_TOP])
AC_REQUIRE([RTEMS_BUILD_TOP])
# Was CFLAGS set?
rtems_cv_CFLAGS_set="${CFLAGS+set}"
RTEMS_INCLUDE_CPUKIT="-I${RTEMS_SOURCE_ROOT}/cpukit/include"
RTEMS_INCLUDE_CPUKIT_ARCH="-I${RTEMS_SOURCE_ROOT}/cpukit/score/cpu/\$(RTEMS_CPU)/include"
RTEMS_CPUKIT_INCLUDE="${RTEMS_INCLUDE_CPUKIT} ${RTEMS_INCLUDE_CPUKIT_ARCH}"
RTEMS_BUILD_INCLUDE="-I\$(top_builddir) -I${RTEMS_BUILD_ROOT}/include"
RTEMS_INCLUDE="${RTEMS_BUILD_INCLUDE} ${RTEMS_CPUKIT_INCLUDE}"
RTEMS_CPPFLAGS="${RTEMS_INCLUDE}"
AC_SUBST([RTEMS_CPPFLAGS])
])

View File

@@ -1,8 +0,0 @@
dnl
dnl RTEMS_SOURCE_TOP
dnl
AC_DEFUN([RTEMS_SOURCE_TOP],
[dnl
RTEMS_SOURCE_ROOT="${with_rtems_source_top}"
AC_SUBST([RTEMS_SOURCE_ROOT])
])dnl

View File

@@ -1,20 +1,18 @@
# AC_DISABLE_OPTION_CHECKING is not available before 2.62
AC_PREREQ(2.62)
dnl $Id$
dnl
dnl RTEMS_TOP($1)
dnl
dnl $1 .. relative path from this configure.ac to the toplevel configure.ac
dnl $1 .. relative path from this configure.in to the toplevel configure.in
dnl
AC_DEFUN([RTEMS_TOP],
[dnl
AC_REQUIRE([RTEMS_VERSIONING])
AC_REQUIRE([AC_DISABLE_OPTION_CHECKING])
AC_CONFIG_AUX_DIR([$1])
AC_CHECK_PROGS(MAKE, gmake make)
AC_BEFORE([$0], [AM_INIT_AUTOMAKE])dnl
AC_PREFIX_DEFAULT([/opt/rtems-][_RTEMS_API])
AC_PREFIX_DEFAULT([/opt/rtems-][RTEMS_API])
RTEMS_TOPdir="$1";
AC_SUBST(RTEMS_TOPdir)
@@ -29,6 +27,4 @@ AC_SUBST(PROJECT_ROOT)
AC_MSG_CHECKING([for RTEMS Version])
AC_MSG_RESULT([_RTEMS_VERSION])
pkgdatadir="${datadir}"/rtems[]_RTEMS_API;
AC_SUBST([pkgdatadir])
])dnl

View File

@@ -1,4 +1,4 @@
AC_DEFUN([RTEMS_VERSIONING],
m4_define([_RTEMS_VERSION],[5.0.0]))
m4_define([_RTEMS_VERSION],[4.7.1]))
m4_define([_RTEMS_API],[5])
m4_define([RTEMS_API],[4.7])

276
ampolish3 Executable file
View File

@@ -0,0 +1,276 @@
#! /usr/bin/perl -w
# $Id$
# Copyright (C) 2005, 2006 Ralf Corsépius, Ulm, Germany
#
# Permission to use, copy, modify, and distribute this software
# is freely granted, provided that this notice is preserved.
# Helper script to generate pre/tmpinstall rules for RTEMS Makefile.am.
#
# Usage: ampolish3 Makefile.am > preinstall.am
#
# Reads a Makefile.am from stdin and writes corresponding
# pre/tmpinstall rules to stdout.
sub replace($);
sub print_dirstamp($$$);
# Predefined directory mappings:
#
# final-installation directory => temp installation directory
my %dirmap = (
'$(includedir)' => '$(PROJECT_INCLUDE)',
'$(libdir)' => '$(PROJECT_LIB)',
'$(project_libdir)' => '$(PROJECT_LIB)',
'$(project_includedir)' => '$(PROJECT_INCLUDE)'
);
# Conventions on automake primaries:
#
# *_HEADERS -> preinstall
# noinst*_HEADERS -> noinst
# noinst_*_LIBRARIES -> noinst
# project_*_LIBRARIES -> tmpinstall
# *_LIBRARIES -> ignore (no preinstallation)
# dist_project_*_DATA -> preinstall (bsp_specs,linkcmds)
# project_*_DATA -> tmpinstall (*.o, *.a)
# dist_*_DATA -> ignore (no preinstallation)
# *SCRIPTS -> ignore (no preinstallation)
# noinst_*_PROGRAMS -> noinst
# project_*_PROGRAMS -> tmpinstall
# *_PROGRAMS -> ignore (no preinstallation)
## 1st pass: read in file
my @buffer1 = () ;
my %seen = ();
my %predefs = ();
{
my $mode = 0 ;
my $line = '';
while ( <> )
{
if ( $mode == 0 )
{
if ( /^([a-zA-Z0-9_]+\s*[\+]?[:=].*)\\$/o )
{
$line = "$1" ;
$mode = 1;
} else {
push @buffer1, $_ ;
}
} elsif ( $mode == 1 ) {
if ( /^(.*)\\$/o ) {
$line .= $1;
} else {
$line .= $_ ;
push @buffer1, $line ;
$line = '';
$mode = 0 ;
}
}
}
}
#foreach my $l ( @buffer1 ) { print STDERR "1:<$l>"; }
# Filter out all Makefile code not relevant here
my @buffer2 = ();
foreach my $l ( @buffer1 ) {
if ( $l=~ /^\t.*$/o )
{ #ignore: Production of a make rule.
} elsif ( $l =~ /^\s*([a-zA-Z0-9_]*dir)\s*\=\s*(.*)\s*$/o )
{ # dirs
push @buffer2, "$l";
$dirmap{"\$\($1\)"} = replace($2);
} elsif ( $l =~ /^\s*noinst_(.*)\s*[\+]?\=(.*)$/o )
{
#ignore: noinst_* are not relevant here.
} elsif ( $l =~ /^\s*(nodist_|dist_|)(project_|)([a-zA-Z0-9_]+)_(HEADERS|LIBRARIES|DATA|SCRIPTS|PROGRAMS)\s*([\+]?\=)\s*(.*)/o )
{
if ( ( "$5" eq '=' ) ) {
my $v = $dirmap{"\$\($3dir\)"};
if ( $v =~ /\$\(PROJECT_[^\)]+\)$/ )
{
$predefs{"$v"} = 1;
}
}
foreach my $f ( split(' ',$6) ) {
push @buffer2, "$1$2$3_$4 +=$f\n";
}
} elsif ( $l =~ /^\s*(if|else|endif)\s*.*$/o )
{ # conditionals
push @buffer2, "$l";
}
# Check if Makefile.am already contains CLEANFILES or DISTCLEANFILES
if ( $l =~ /^\s*(CLEANFILES|DISTCLEANFILES|SUBDIRS)\s*\=.*$/o )
{
$predefs{"$1"} = 1;
}
}
if ( $predefs{"\$(PROJECT_INCLUDE)"} ){
unshift @buffer2, "includedir = \$(includedir)\n";
}
if ( $predefs{"\$(PROJECT_LIB)"} ){
unshift @buffer2, "libdir = \$(libdir)\n";
}
# foreach my $l ( @buffer2 ) { print STDERR "2:<$l>"; }
my @buffer3 = ();
foreach my $l ( @buffer2 ) {
if ( $l =~ /^\s*([a-zA-Z0-9_]*dir)\s*\=\s*(.*)\s*$/o )
{ # dirs
my $v = $dirmap{"\$\($1\)"};
print_dirstamp(\@buffer3,$v,"PREINSTALL_DIRS");
$seen{"PREINSTALL_DIRS"} = 1;
} elsif ( $l =~ /^\s*(nodist_|dist_|)(project_|)([a-zA-Z0-9_]+)_HEADERS\s*\+\=(.*)/o )
{ # preinstall
my $v = $dirmap{"\$\($3dir\)"};
my $f = $4;
my $x ; my $i = rindex($f,'/');
if ($i < 0) { $x="$f";
} else { $x = substr($f,$i+1);
}
push @buffer3,
"$v/$x: $f $v/\$(dirstamp)\n",
"\t\$(INSTALL_DATA) \$< $v/$x\n",
"PREINSTALL_FILES += $v/$x\n\n";
$seen{"PREINSTALL_FILES"} = 1;
} elsif ( $l =~ /^\s*(nodist_|dist_|)(project_)([a-zA-Z0-9_]+)_LIBRARIES\s*\+\=(.*)/o )
{ # tmpinstall
my $v = $dirmap{"\$\($3dir\)"};
my $f = $4;
my $x ; my $i = rindex($f,'/');
if ($i < 0) { $x="$f";
} else { $x = substr($f,$i+1);
}
push @buffer3,
"$v/$x: $f $v/\$(dirstamp)\n",
"\t\$(INSTALL_DATA) \$< $v/$x\n",
"TMPINSTALL_FILES += $v/$x\n\n";
$seen{"TMPINSTALL_FILES"} = 1;
} elsif ( $l =~ /^\s*(nodist_|dist_|)([a-zA-Z0-9_]+)_LIBRARIES\s*\+\=(.*)/o )
{ # ignore
} elsif ( $l =~ /^\s*(dist_)(project_)([a-zA-Z0-9_]+)_DATA\s*\+\=(.*)/o )
{ # preinstall
my $v = $dirmap{"\$\($3dir\)"};
my $f = $4;
my $x ; my $i = rindex($f,'/');
if ($i < 0) { $x="$f";
} else { $x = substr($f,$i+1);
}
push @buffer3,
"$v/$x: $f $v/\$(dirstamp)\n",
"\t\$(INSTALL_DATA) \$< $v/$x\n",
"PREINSTALL_FILES += $v/$x\n\n";
$seen{"PREINSTALL_FILES"} = 1;
} elsif ( $l =~ /^\s*(nodist_|)(project_)([a-zA-Z0-9_]+)_DATA\s*\+\=(.*)/o )
{ # tmpinstall
my $v = $dirmap{"\$\($3dir\)"};
my $f = $4;
my $x ; my $i = rindex($f,'/');
if ($i < 0) { $x="$f";
} else { $x = substr($f,$i+1);
}
push @buffer3,
"$v/$x: $f $v/\$(dirstamp)\n",
"\t\$(INSTALL_DATA) \$< $v/$x\n",
"TMPINSTALL_FILES += $v/$x\n\n";
$seen{"TMPINSTALL_FILES"} = 1;
} elsif ( $l =~ /^\s*(dist_|)([a-zA-Z0-9_]+)_DATA\s*\+\=(.*)/o )
{ # ignore
} elsif ( $l =~ /^\s*(nodist_|dist_|)([a-zA-Z0-9_]+)_SCRIPTS\s*\+\=(.*)/o )
{ # ignore
} elsif ( $l =~ /^\s*(nodist_|dist_|)(project_)([a-zA-Z0-9_]+)_PROGRAMS\s*\+\=(.*)/o )
{ # tmpinstall
my $v = $dirmap{"\$\($3dir\)"};
my $f = $4;
my $x ; my $i = rindex($f,'/');
if ($i < 0) { $x="$f";
} else { $x = substr($f,$i+1);
}
push @buffer3,
"$v/$x: $f $v/\$(dirstamp)\n",
"\t\$(INSTALL_PROGRAM) \$< $v/$x\n",
"TMPINSTALL_FILES += $v/$x\n\n";
$seen{"TMPINSTALL_FILES"} = 1;
} elsif ( $l =~ /^\s*(nodist_|dist_|)([a-zA-Z0-9_]+)_PROGRAMS\s*\+\=(.*)/o )
{ # ignore
} elsif ( $l =~ /^\s*(if|else|endif)\s*.*$/o )
{ # conditionals
push @buffer3, "$l";
}
}
# foreach my $l ( @buffer3 ) { print STDERR "3:<$l>"; }
my $output;
$output .= "## Automatically generated by ampolish3 - Do not edit\n\n";
$output .= "if AMPOLISH3\n";
$output .= "\$(srcdir)/preinstall.am: Makefile.am\n";
$output .= "\t\$(AMPOLISH3) \$(srcdir)/Makefile.am > \$(srcdir)/preinstall.am\n";
$output .= "endif\n\n";
foreach my $k ( keys %seen )
{
if ( $k =~ /PREINSTALL_FILES/o ) {
$output .= "all-am: \$(PREINSTALL_FILES)\n\n";
$output .= "$k =\n";
$output .= "CLEANFILES ";
if ( $predefs{"CLEANFILES"} ) { $output .= "+"; }
$output .= "= \$($k)\n";
$predefs{"CLEANFILES"} = 1;
} elsif ( $k =~ /TMPINSTALL_FILES/o ) {
$output .= "all-local: \$(TMPINSTALL_FILES)\n\n";
$output .= "$k =\n";
$output .= "CLEANFILES ";
if ( $predefs{"CLEANFILES"} ) { $output .= "+"; }
$output .= "= \$($k)\n";
$predefs{"CLEANFILES"} = 1;
} elsif ( $k =~ /.*DIRS/o ) {
$output .= "$k =\n";
$output .= "DISTCLEANFILES ";
if ( $predefs{"DISTCLEANFILES"} ) { $output .= "+"; }
$output .= "= \$($k)\n";
$predefs{"DISTCLEANFILES"} = 1;
}
$output .= "\n";
}
# Pretty printing
$output .= join ( '', @buffer3 );
$output =~ s/\nelse\n+endif/\nendif/g;
$output =~ s/\n\n+endif/\nendif/g;
$output =~ s/\nif [a-zA-Z0-9_!]+\n+endif//g;
print STDOUT $output;
exit 0;
sub replace($)
{
my ($v) = @_;
foreach my $i ( keys %dirmap )
{
$v =~ s/\Q$i/$dirmap{$i}/g;
}
return $v;
}
sub print_dirstamp($$$)
{
my ($obuf,$file,$inst) = @_ ;
push @{$obuf}, "$file/\$(dirstamp):\n\t\@\$\(MKDIR_P\) $file\n" ;
push @{$obuf}, "\t\@: \> $file/\$(dirstamp)\n" ;
push @{$obuf}, "$inst += $file/\$(dirstamp)\n\n" ;
}

View File

@@ -1,5 +1,10 @@
## $Id$
## NOTE: This is a temporary work-around to keep
## RTEMS's non automake standard make targets working.
## Once automake is fully integrated these make targets
## and this file will probably be removed
preinstall-am: $(PREINSTALL_FILES)
preinstall: preinstall-am
.PHONY: preinstall preinstall-am

7
automake/local.am Normal file
View File

@@ -0,0 +1,7 @@
## $Id$
preinstall-am: $(PREINSTALL_FILES)
preinstall: preinstall-am
.PHONY: preinstall preinstall-am
PROJECT_TOOLS = $(PROJECT_RELEASE)/build-tools

View File

@@ -1,3 +1,5 @@
## $Id$
## Borrowed from automake-1.4 and adapted to RTEMS
## NOTE: This is a temporary work-around to keep
@@ -5,3 +7,26 @@
## Once automake is fully integrated these make targets
## and this file will probably be removed
preinstall-recursive:
@set fnord $(MAKEFLAGS); amf=$$2; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
## This trick allows "-k" to keep its natural meaning when running a
## recursive rule.
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
preinstall: preinstall-recursive
.PHONY: preinstall-recursive

292
bootstrap
View File

@@ -1,45 +1,73 @@
#!/bin/sh
#! /bin/sh
#
# helps bootstrapping, when checked out from CVS
# requires GNU autoconf and GNU automake
#
# $Id$
# this is not meant to be exported outside the source tree
#
# NOTE: Inspired by libtool's autogen script
#
# to be run from the toplevel directory of RTEMS'
# source tree
progname=`basename $0`
top_srcdir=`dirname $0`
LC_ALL=C
export LC_ALL
verbose=""
verbose="";
quiet="false"
mode="autoreconf"
force=0
mode="generate"
usage()
{
echo
echo "usage: ${progname} [-c|-h|-H] [-q][-v]"
echo "usage: ${progname} [-c|-p|-h] [-q][-v]"
echo
echo "options:"
echo " -c .. clean, remove all aclocal/autoconf/automake generated files"
echo " -h .. display this message and exit"
echo " -H .. regenerate headers.am files"
echo " -p .. regenerate preinstall.am files"
echo " -q .. quiet, don't display directories"
echo " -v .. verbose, pass -v to autotools"
echo
exit 1
exit 1;
}
generate_bspdir_acinclude()
{
cat << EOF > acinclude.m4~
# RTEMS_CHECK_BSPDIR(RTEMS_BSP_FAMILY)
AC_DEFUN([RTEMS_CHECK_BSPDIR],
[
case "\$1" in
EOF
for i in */bsp_specs; do
d=`dirname $i`
cat << EOF >> acinclude.m4~
$d )
AC_CONFIG_SUBDIRS([$d]);;
EOF
done
cat << EOF >> acinclude.m4~
*)
AC_MSG_ERROR([Invalid BSP]);;
esac
])
EOF
if cmp -s acinclude.m4 acinclude.m4~ 2>/dev/null; then
echo "acinclude.m4 is unchanged";
else
cp acinclude.m4~ acinclude.m4
fi
rm -f acinclude.m4~
}
if test ! -f $top_srcdir/aclocal/version.m4; then
echo "${progname}:"
echo " Installation problem: Can't find file aclocal/version.m4"
exit 1
exit 1;
fi
while test $# -gt 0; do
@@ -47,135 +75,35 @@ case $1 in
-h|--he|--hel|--help)
usage ;;
-q|--qu|--qui|--quie|--quiet)
quiet="true"
quiet="true";
shift;;
-v|--ve|--ver|--verb|--verbo|--verbos|--verbose)
verbose="-v"
verbose="-v";
shift;;
-c|--cl|--cle|--clea|--clean)
mode="clean"
mode="clean";
shift;;
-f|--fo|--for|--forc|--force)
force=`expr $force + 1`
shift;;
-H|--headers)
mode="headers"
-p|--pr|--pre|--prei|--prein|--preins|--preinst)
mode="preinstall";
shift;;
-r|--re|--rec|--reco|--recon|--reconf)
mode="autoreconf"
mode="autoreconf";
shift;;
-g|--ge|--gen|--gene|--gener|--genera|--generat|--generate)
mode="generate"
shift;;
-*) echo "unknown option $1"
-*) echo "unknown option $1" ;
usage ;;
*) echo "invalid parameter $1"
*) echo "invalid parameter $1" ;
usage ;;
esac
done
case $mode in
headers)
if test "." != "$top_srcdir"; then
echo "To generate the headers.am you must call the script via \"./$progname -H\""
exit 1
fi
base="$PWD"
# Generate cpukit/header-dirs.am
tmp="$base/cpukit/header-dirs.am.new"
hdr_dirs=`for i in cpukit/include cpukit/libnetworking cpukit/score/cpu/*/include ; do
cd "$i"
find -mindepth 1 -type d
cd "$base"
done | sort -u | sed 's%^\./%%'`
echo '## This file was generated by "./boostrap -H".' > "$tmp"
echo 'include_HEADERS =' >> "$tmp"
for dir in $hdr_dirs ; do
am_dir=`echo $dir | sed 's%[/-]%_%g'`
echo "include_${am_dir}dir = \$(includedir)/$dir" >> "$tmp"
echo "include_${am_dir}_HEADERS =" >> "$tmp"
preinstall)
confs=`find -name Makefile.am -exec grep -l 'include .*/preinstall\.am' {} \;`
for i in $confs; do
dir=$(dirname $i);
test "$quite" = "true" || echo "Generating $dir/preinstall.am"
${top_srcdir}/ampolish3 "$dir/Makefile.am" > "$dir/preinstall.am"
done
diff -q "$tmp" "cpukit/header-dirs.am" || mv "$tmp" "cpukit/header-dirs.am"
rm -f "$tmp"
# Generate cpukit/*/headers.am
tmp="$base/headers.am.new"
cpukit="$base/cpukit"
cd "$cpukit"
for inc in include score/cpu/*/include ; do
echo '## This file was generated by "./boostrap -H".' > "$tmp"
hdr=`dirname $inc`
am_dir=""
cd $inc
for b in `find -type d | sort` ; do
for j in `find $b -mindepth 1 -maxdepth 1 -name '*.h' | sed 's%^\.%%' | sed 's%^/%%' | sort` ; do
dir=`dirname $j`
if test x$dir != x. ; then
am_dir=`echo $dir | sed 's%[/-]%_%g'`
am_dir="_$am_dir"
else
am_dir=""
fi
echo "include${am_dir}_HEADERS += $inc/$j" >> "$tmp"
done
done
cd "$cpukit"
diff -q "$tmp" "${hdr}/headers.am" || mv "$tmp" "${hdr}/headers.am"
done
rm -f "$tmp"
cd "$base"
# Generate bsps/*/headers.am
tmp="$base/headers.am.new"
for i in bsps/include bsps/*/include bsps/*/*/include ; do
dir=""
am_dir=""
echo '## This file was generated by "./boostrap -H".' > "$tmp"
case $i in
bsps/*/*/include)
hdr="../"
inc="../../../../../../$i/"
;;
bsps/*/include)
hdr="../"
inc="../../../../../$i/"
;;
bsps/include)
hdr="../"
inc="../../$i/"
;;
*)
hdr=""
inc=""
;;
esac
cd $i
for b in `find -type d | sort` ; do
for j in `find $b -mindepth 1 -maxdepth 1 -name '*.h' -or -name '*.inc' | sed 's%^\.%%' | sed 's%^/%%' | sort` ; do
d=`dirname $j`
if test x$d != x$dir ; then
dir=$d
if test x$d != x. ; then
am_dir=`echo $dir | sed 's%[/-]%_%g'`
am_dir="_$am_dir"
printf "\ninclude%sdir = \$(includedir)/$dir\n" "$am_dir" >> "$tmp"
else
am_dir=""
echo "" >> "$tmp"
fi
echo "include${am_dir}_HEADERS =" >> "$tmp"
fi
echo "include${am_dir}_HEADERS += $inc$j" >> "$tmp"
if test $j = bsp.h ; then
echo "include_HEADERS += include/bspopts.h" >> "$tmp"
fi
done
done
cd "$base"
diff -q "$tmp" "$i/${hdr}headers.am" || mv "$tmp" "$i/${hdr}headers.am"
done
rm -f "$tmp"
;;
generate)
@@ -184,19 +112,19 @@ generate)
echo "You must have autoconf installed to run $program"
exit 1
fi
AUTOHEADER=${AUTOHEADER-autoheader}
if test -z "$AUTOHEADER"; then
echo "You must have autoconf installed to run $program"
exit 1
fi
AUTOMAKE=${AUTOMAKE-automake}
if test -z "$AUTOMAKE"; then
echo "You must have automake installed to run $program"
exit 1
fi
ACLOCAL=${ACLOCAL-aclocal}
if test -z "$ACLOCAL"; then
echo "You must have automake installed to run $program"
@@ -212,21 +140,23 @@ generate)
confs=`find . \( -name 'configure.in' -o -name 'configure.ac' \) -print`
for i in $confs; do
dir=`dirname $i`
configure=`basename $i`
( test "$quiet" = "true" || echo "$dir"
cd $dir
dir=`dirname $i`;
configure=`basename $i`;
( test "$quiet" = "true" || echo "$dir";
cd $dir;
test -n "`grep RTEMS_CHECK_BSPDIR ${configure}`" && \
generate_bspdir_acinclude;
pat="s,\$(RTEMS_TOPdir),${aclocal_dir},g"
aclocal_args=`grep '^[ ]*ACLOCAL_AMFLAGS' Makefile.am | \
sed -e 's%.*ACLOCAL_AMFLAGS.*\=[ ]*%%g' -e $pat `
sed -e 's%.*ACLOCAL_AMFLAGS.*\=[ ]*%%g' -e $pat ` ;
test "$verbose" = "-v" && echo "${ACLOCAL} $aclocal_args"
${ACLOCAL} $aclocal_args
${ACLOCAL} $aclocal_args;
test -n "`grep CONFIG_HEADER ${configure}`" && ${AUTOHEADER} \
&& test "$verbose" = "-v" && echo "${AUTOHEADER}"
&& test "$verbose" = "-v" && echo "${AUTOHEADER}";
test -n "`grep RTEMS_BSP_CONFIGURE ${configure}`" && ${AUTOHEADER} \
&& test "$verbose" = "-v" && echo "${AUTOHEADER}"
test -f Makefile.am && ${AUTOMAKE} -a -c $verbose
${AUTOCONF}
&& test "$verbose" = "-v" && echo "${AUTOHEADER}";
test -f Makefile.am && ${AUTOMAKE} -a -c $verbose ;
${AUTOCONF};
test -f Makefile.am && test -n "`grep 'stamp-h\.in' Makefile.in`" \
&& echo timestamp > stamp-h.in
)
@@ -242,11 +172,13 @@ autoreconf)
confs=`find . -name 'configure.ac' -print`
for i in $confs; do
dir=`dirname $i`
configure=`basename $i`
( test "$quiet" = "true" || echo "$dir"
cd $dir
${AUTORECONF} -i --no-recursive $verbose
dir=`dirname $i`;
configure=`basename $i`;
( test "$quiet" = "true" || echo "$dir";
cd $dir;
test -n "`grep RTEMS_CHECK_BSPDIR ${configure}`" && \
generate_bspdir_acinclude;
${AUTORECONF} -i --no-recursive $verbose;
test -f Makefile.am && test -n "`grep 'stamp-h\.in' Makefile.in`" \
&& echo timestamp > stamp-h.in
)
@@ -255,58 +187,28 @@ autoreconf)
clean)
test "$quiet" = "true" || echo "removing automake generated Makefile.in files"
files=`find . -name 'Makefile.am' -print | sed -e 's%\.am%\.in%g'`
for i in $files; do
if test -f $i; then
rm -f $i
test "$verbose" = "-v" && echo "$i"
fi
done
files=`find . -name 'Makefile.am' -print | sed -e 's%\.am%\.in%g'` ;
for i in $files; do if test -f $i; then
rm -f $i
test "$verbose" = "-v" && echo "$i"
fi; done
test "$quiet" = "true" || echo "removing configure files"
files=`find . -name 'configure' -print`
for i in $files; do
if test -f $i; then
rm -f $i
test "$verbose" = "-v" && echo "$i"
fi
done
if test $force -gt 0; then
needles=""
if test $force -gt 1; then
# Manually maintained
needles="$needles config.sub"
needles="$needles config.guess"
fi
if test $force -gt 0; then
# Inherited from automake
needles="$needles compile"
needles="$needles depcomp"
needles="$needles install-sh"
needles="$needles missing"
needles="$needles mdate-sh"
fi
for j in $needles; do
files=`find . -name "$j" -print`
for i in $files; do
if test -f $i; then
rm -f $i
test "$verbose" = "-v" && echo "$i"
fi
done
done
fi
files=`find . -name 'configure' -print` ;
test "$verbose" = "-v" && test -n "$files" && echo "$files" ;
for i in $files; do if test -f $i; then
rm -f $i config.sub config.guess depcomp install-sh mdate-sh missing \
mkinstalldirs texinfo.tex compile
test "$verbose" = "-v" && echo "$i"
fi; done
test "$quiet" = "true" || echo "removing aclocal.m4 files"
files=`find . -name 'aclocal.m4' -print`
test "$verbose" = "-v" && test -n "$files" && echo "$files"
for i in $files; do
if test -f $i; then
rm -f $i
test "$verbose" = "-v" && echo "$i"
fi
done
files=`find . -name 'aclocal.m4' -print` ;
test "$verbose" = "-v" && test -n "$files" && echo "$files" ;
for i in $files; do if test -f $i; then
rm -f $i
test "$verbose" = "-v" && echo "$i"
fi; done
find . -name '*~' -print | xargs rm -f
find . -name 'bspopts.h.in' -print | xargs rm -f
@@ -315,7 +217,7 @@ clean)
find . -name 'config.status' -print | xargs rm -f
find . -name 'config.log' -print | xargs rm -f
find . -name 'config.cache' -print | xargs rm -f
find . -name 'Makefile' -and -not -path ./testsuites/ada/sptests/sp19/Makefile -print | xargs rm -f
find . -name 'Makefile' -print | xargs rm -f
find . -name '.deps' -print | xargs rm -rf
find . -name '.libs' -print | xargs rm -rf
find . -name 'stamp-h.in' | xargs rm -rf

View File

@@ -1,44 +0,0 @@
Overview
--------
Evaluation board for this BSP:
- Cyclone V SoC FPGA Development Kit
- DK-DEV-5CSXC6N/ES-0L
RTC
---
The evaluation board contains a DS1339C RTC connected to I2C0. To use it you
have to set the following options:
#define CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
#define CONFIGURE_BSP_PREREQUISITE_DRIVERS I2C_DRIVER_TABLE_ENTRY
Additional there has to be one free file descriptor to access the i2c. Set the
CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS accordingly.
Network
-------
The default PHY address can be overwritten by the application. To do this, the
drv_ctrl pointer of the rtems_bsdnet_ifconfig structure should point to a
dwmac_ifconfig_drv_ctrl object with the appropriate settings before the
rtems_bsdnet_initialize_network() is called. E.g.:
#include <libchip/dwmac.h>
#include <bsp.h>
static dwmac_ifconfig_drv_ctrl drv_ctrl = {
.phy_addr = 1
};
...
static struct rtems_bsdnet_ifconfig some_ifconfig = {
.name = RTEMS_BSP_NETWORK_DRIVER_NAME,
.attach = RTEMS_BSP_NETWORK_DRIVER_ATTACH,
.drv_ctrl = &drv_ctrl
};
...
rtems_bsdnet_initialize_network();
If drv_ctrl is the NULL pointer, default values will be used instead.

View File

@@ -1,12 +0,0 @@
include $(RTEMS_ROOT)/make/custom/default.cfg
RTEMS_CPU = arm
CPU_CFLAGS = -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard -mtune=cortex-a9
#CFLAGS_OPTIMIZE_V ?= -O0 -g
CFLAGS_OPTIMIZE_V ?= -O2 -g
# Add CFLAGS and LDFLAGS for compiling and linking with per item sections
CFLAGS_OPTIMIZE_V += -ffunction-sections -fdata-sections
LDFLAGS = -Wl,--gc-sections

View File

@@ -1 +0,0 @@
include $(RTEMS_ROOT)/make/custom/altcycv.inc

View File

@@ -1,164 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycV
*/
/*
* Copyright (c) 2013-2014 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
* 82178 Puchheim
* Germany
* <info@embedded-brains.de>
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.org/license/LICENSE.
*/
#include <libchip/ns16550.h>
#include <rtems/bspIo.h>
#include <bsp.h>
#include <bsp/irq.h>
#include <bsp/alt_clock_manager.h>
#include <bsp/console-termios.h>
#include <bsp/socal/alt_rstmgr.h>
#include <bsp/socal/socal.h>
#include <bsp/socal/alt_uart.h>
#include <bsp/socal/hps.h>
#ifdef BSP_USE_UART_INTERRUPTS
#define DEVICE_FNS &ns16550_handler_interrupt
#else
#define DEVICE_FNS &ns16550_handler_polled
#endif
static uint8_t altera_cyclone_v_uart_get_register(uintptr_t addr, uint8_t i)
{
volatile uint32_t *reg = (volatile uint32_t *) addr;
return (uint8_t) reg [i];
}
static void altera_cyclone_v_uart_set_register(uintptr_t addr, uint8_t i, uint8_t val)
{
volatile uint32_t *reg = (volatile uint32_t *) addr;
reg [i] = val;
}
static bool altera_cyclone_v_uart_probe(
rtems_termios_device_context *base,
uint32_t uart_set_mask
)
{
ns16550_context *ctx = (ns16550_context *) base;
bool ret = true;
uint32_t ucr;
ALT_STATUS_CODE sc;
void* location = (void *) ctx->port;
/* The ALT_CLK_L4_SP is required for all SoCFPGA UARTs.
* Check that it's enabled. */
if ( alt_clk_is_enabled(ALT_CLK_L4_SP) != ALT_E_TRUE ) {
ret = false;
}
if ( ret ) {
sc = alt_clk_freq_get(ALT_CLK_L4_SP, &ctx->clock);
if ( sc != ALT_E_SUCCESS ) {
ret = false;
}
}
if ( ret ) {
// Bring UART out of reset.
alt_clrbits_word(ALT_RSTMGR_PERMODRST_ADDR, uart_set_mask);
// Verify the UCR (UART Component Version)
ucr = alt_read_word( ALT_UART_UCV_ADDR( location ) );
if ( ucr != ALT_UART_UCV_UART_COMPONENT_VER_RESET ) {
ret = false;
}
}
if ( ret ) {
// Write SRR::UR (Shadow Reset Register :: UART Reset)
alt_write_word( ALT_UART_SRR_ADDR( location ), ALT_UART_SRR_UR_SET_MSK );
// Read the MSR to work around case:119085.
(void)alt_read_word( ALT_UART_MSR_ADDR( location ) );
ret = ns16550_probe( base );
}
return ret;
}
#ifdef CYCLONE_V_CONFIG_CONSOLE
static bool altera_cyclone_v_uart_probe_0(rtems_termios_device_context *base)
{
return altera_cyclone_v_uart_probe(base, ALT_RSTMGR_PERMODRST_UART0_SET_MSK);
}
static ns16550_context altera_cyclone_v_uart_context_0 = {
.base = RTEMS_TERMIOS_DEVICE_CONTEXT_INITIALIZER("UART 0"),
.get_reg = altera_cyclone_v_uart_get_register,
.set_reg = altera_cyclone_v_uart_set_register,
.port = (uintptr_t) ALT_UART0_ADDR,
.irq = ALT_INT_INTERRUPT_UART0,
.initial_baud = CYCLONE_V_UART_BAUD
};
#endif
#ifdef CYCLONE_V_CONFIG_UART_1
static bool altera_cyclone_v_uart_probe_1(rtems_termios_device_context *base)
{
return altera_cyclone_v_uart_probe(base, ALT_RSTMGR_PERMODRST_UART1_SET_MSK);
}
static ns16550_context altera_cyclone_v_uart_context_1 = {
.base = RTEMS_TERMIOS_DEVICE_CONTEXT_INITIALIZER("UART 1"),
.get_reg = altera_cyclone_v_uart_get_register,
.set_reg = altera_cyclone_v_uart_set_register,
.port = (uintptr_t) ALT_UART1_ADDR,
.irq = ALT_INT_INTERRUPT_UART1,
.initial_baud = CYCLONE_V_UART_BAUD
};
#endif
const console_device console_device_table[] = {
#ifdef CYCLONE_V_CONFIG_CONSOLE
{
.device_file = "/dev/ttyS0",
.probe = altera_cyclone_v_uart_probe_0,
.handler = DEVICE_FNS,
.context = &altera_cyclone_v_uart_context_0.base
},
#endif
#ifdef CYCLONE_V_CONFIG_UART_1
{
.device_file = "/dev/ttyS1",
.probe = altera_cyclone_v_uart_probe_1,
.handler = DEVICE_FNS,
.context = &altera_cyclone_v_uart_context_1.base
},
#endif
};
const size_t console_device_count = RTEMS_ARRAY_SIZE(console_device_table);
static void output_char(char c)
{
rtems_termios_device_context *ctx = console_device_table[0].context;
ns16550_polled_putchar( ctx, c );
}
BSP_output_char_function_type BSP_output_char = output_char;
BSP_polling_getchar_function_type BSP_poll_char = NULL;

View File

@@ -1,85 +0,0 @@
/**
* @defgroup RTEMSBSPsARMCycVContrib Contributed Code
*
* @ingroup RTEMSBSPsARMCycV
*
* @brief Contributed code from Altera.
*/
/**
* @defgroup CACHE_MGR Cache Management API
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/**
* @defgroup ALT_DMA DMA Controller API
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/**
* @defgroup ALT_DMA_COMMON DMA Controller Common API Definitions
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/**
* @defgroup ALT_DMA_PRG DMA Controller Programming API
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/**
* @defgroup ALT_I2C I2C Controller API
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/**
* @defgroup INT_COMMON Interrupt Controller Common Definitions
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/**
* @defgroup ALT_QSPI QSPI Flash Controller Module
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/**
* @defgroup ALT_SOCAL_UTIL SoCAL Utilities
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/**
* @defgroup ADDR_SPACE_MGR The Address Space Manager
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/**
* @defgroup CLK_MGR The Clock Manager API
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/**
* @defgroup ALT_GPIO_API The General Purpose Input/Output Manager API
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/**
* @defgroup RST_MGR The Reset Manager
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/**
* @defgroup UART UART Driver API
*
* @ingroup RTEMSBSPsARMCycVContrib
*/

View File

@@ -1,19 +0,0 @@
HWLIB
=====
Hwlib is a collection of sources provided by Altera for the Cyclone-V.
As hwlib is third party software, please keep modifications and additions
to the sources to a minimum for easy maintenance. Otherwise updating to a
new version of hwlib released by Altera can become difficult.
The hwlib directory contains only those files from Alteras hwlib which are
required by the BSP (the whole hwlib was considered too big).
The directory structure within the hwlib directory is equivalent to Alteras
hwlib directory structure. For easy maintenance only whole files have been
left out.
Altera provides the hwlib with their SoC Embedded Design Suite (EDS).
HWLIB Version:
--------------
All files are from hwlib 13.1 distributed with SoC EDS 14.0.0.200.

View File

@@ -1,515 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/******************************************************************************
*
* alt_address_space.c - API for the Altera SoC FPGA address space.
*
******************************************************************************/
/******************************************************************************
*
* Copyright 2013 Altera Corporation. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
******************************************************************************/
#include <stddef.h>
#include <bsp/alt_address_space.h>
#include <bsp/socal/alt_l3.h>
#include <bsp/socal/socal.h>
#include <bsp/socal/alt_acpidmap.h>
#include <bsp/hwlib.h>
#define ALT_ACP_ID_MAX_INPUT_ID 7
#define ALT_ACP_ID_MAX_OUTPUT_ID 4096
/******************************************************************************/
ALT_STATUS_CODE alt_addr_space_remap(ALT_ADDR_SPACE_MPU_ATTR_t mpu_attr,
ALT_ADDR_SPACE_NONMPU_ATTR_t nonmpu_attr,
ALT_ADDR_SPACE_H2F_BRIDGE_ATTR_t h2f_bridge_attr,
ALT_ADDR_SPACE_LWH2F_BRIDGE_ATTR_t lwh2f_bridge_attr)
{
uint32_t remap_reg_val = 0;
// Parameter checking and validation...
if (mpu_attr == ALT_ADDR_SPACE_MPU_ZERO_AT_BOOTROM)
{
remap_reg_val |= ALT_L3_REMAP_MPUZERO_SET(ALT_L3_REMAP_MPUZERO_E_BOOTROM);
}
else if (mpu_attr == ALT_ADDR_SPACE_MPU_ZERO_AT_OCRAM)
{
remap_reg_val |= ALT_L3_REMAP_MPUZERO_SET(ALT_L3_REMAP_MPUZERO_E_OCRAM);
}
else
{
return ALT_E_INV_OPTION;
}
if (nonmpu_attr == ALT_ADDR_SPACE_NONMPU_ZERO_AT_SDRAM)
{
remap_reg_val |= ALT_L3_REMAP_NONMPUZERO_SET(ALT_L3_REMAP_NONMPUZERO_E_SDRAM);
}
else if (nonmpu_attr == ALT_ADDR_SPACE_NONMPU_ZERO_AT_OCRAM)
{
remap_reg_val |= ALT_L3_REMAP_NONMPUZERO_SET(ALT_L3_REMAP_NONMPUZERO_E_OCRAM);
}
else
{
return ALT_E_INV_OPTION;
}
if (h2f_bridge_attr == ALT_ADDR_SPACE_H2F_INACCESSIBLE)
{
remap_reg_val |= ALT_L3_REMAP_H2F_SET(ALT_L3_REMAP_H2F_E_INVISIBLE);
}
else if (h2f_bridge_attr == ALT_ADDR_SPACE_H2F_ACCESSIBLE)
{
remap_reg_val |= ALT_L3_REMAP_H2F_SET(ALT_L3_REMAP_H2F_E_VISIBLE);
}
else
{
return ALT_E_INV_OPTION;
}
if (lwh2f_bridge_attr == ALT_ADDR_SPACE_LWH2F_INACCESSIBLE)
{
remap_reg_val |= ALT_L3_REMAP_LWH2F_SET(ALT_L3_REMAP_LWH2F_E_INVISIBLE);
}
else if (lwh2f_bridge_attr == ALT_ADDR_SPACE_LWH2F_ACCESSIBLE)
{
remap_reg_val |= ALT_L3_REMAP_LWH2F_SET(ALT_L3_REMAP_LWH2F_E_VISIBLE);
}
else
{
return ALT_E_INV_OPTION;
}
// Perform the remap.
alt_write_word(ALT_L3_REMAP_ADDR, remap_reg_val);
return ALT_E_SUCCESS;
}
/******************************************************************************/
// Remap the MPU address space view of address 0 to access the SDRAM controller.
// This is done by setting the L2 cache address filtering register start address
// to 0 and leaving the address filtering address end address value
// unmodified. This causes all physical addresses in the range
// address_filter_start <= physical_address < address_filter_end to be directed
// to the to the AXI Master Port M1 which is connected to the SDRAM
// controller. All other addresses are directed to AXI Master Port M0 which
// connect the MPU subsystem to the L3 interconnect.
//
// It is unnecessary to modify the MPU remap options in the L3 remap register
// because those options only affect addresses in the MPU subsystem address
// ranges that are now redirected to the SDRAM controller and never reach the L3
// interconnect anyway.
ALT_STATUS_CODE alt_mpu_addr_space_remap_0_to_sdram(void)
{
uint32_t addr_filt_end = (alt_read_word(L2_CACHE_ADDR_FILTERING_END_ADDR) &
L2_CACHE_ADDR_FILTERING_END_ADDR_MASK);
return alt_l2_addr_filter_cfg_set(0x0, addr_filt_end);
}
/******************************************************************************/
// Return the L2 cache address filtering registers configuration settings in the
// user provided start and end address range out parameters.
ALT_STATUS_CODE alt_l2_addr_filter_cfg_get(uint32_t* addr_filt_start,
uint32_t* addr_filt_end)
{
if (addr_filt_start == NULL || addr_filt_end == NULL)
{
return ALT_E_BAD_ARG;
}
uint32_t addr_filt_start_reg = alt_read_word(L2_CACHE_ADDR_FILTERING_START_ADDR);
uint32_t addr_filt_end_reg = alt_read_word(L2_CACHE_ADDR_FILTERING_END_ADDR);
*addr_filt_start = (addr_filt_start_reg & L2_CACHE_ADDR_FILTERING_START_ADDR_MASK);
*addr_filt_end = (addr_filt_end_reg & L2_CACHE_ADDR_FILTERING_END_ADDR_MASK);
return ALT_E_SUCCESS;
}
/******************************************************************************/
ALT_STATUS_CODE alt_l2_addr_filter_cfg_set(uint32_t addr_filt_start,
uint32_t addr_filt_end)
{
// Address filtering start and end values must be 1 MB aligned.
if ( (addr_filt_start & ~L2_CACHE_ADDR_FILTERING_START_ADDR_MASK)
|| (addr_filt_end & ~L2_CACHE_ADDR_FILTERING_END_ADDR_MASK) )
{
return ALT_E_ARG_RANGE;
}
// While it is possible to set the address filtering end value above its
// reset value and thereby access a larger SDRAM address range, it is not
// recommended. Doing so would potentially obscure any mapped HPS to FPGA
// bridge address spaces and peripherals on the L3 interconnect.
if (addr_filt_end > L2_CACHE_ADDR_FILTERING_END_RESET)
{
return ALT_E_ARG_RANGE;
}
// NOTE: ARM (ARM DDI 0246F CoreLink Level 2 Cache Controller L2C-310 TRM)
// recommends programming the Address Filtering End Register before the
// Address Filtering Start Register to avoid unpredictable behavior between
// the two writes.
alt_write_word(L2_CACHE_ADDR_FILTERING_END_ADDR, addr_filt_end);
// It is recommended that address filtering always remain enabled.
addr_filt_start |= L2_CACHE_ADDR_FILTERING_ENABLE_MASK;
alt_write_word(L2_CACHE_ADDR_FILTERING_START_ADDR, addr_filt_start);
return ALT_E_SUCCESS;
}
/******************************************************************************/
ALT_STATUS_CODE alt_acp_id_map_fixed_read_set(const uint32_t input_id,
const uint32_t output_id,
const ALT_ACP_ID_MAP_PAGE_t page,
const uint32_t aruser)
{
if (input_id > ALT_ACP_ID_OUT_DYNAM_ID_7 || output_id == ALT_ACP_ID_MAX_OUTPUT_ID)
{
return ALT_E_BAD_ARG;
}
switch (output_id)
{
case ALT_ACP_ID_OUT_FIXED_ID_2:
alt_write_word(ALT_ACPIDMAP_VID2RD_ADDR,
ALT_ACPIDMAP_VID2RD_MID_SET(input_id)
| ALT_ACPIDMAP_VID2RD_PAGE_SET(page)
| ALT_ACPIDMAP_VID2RD_USER_SET(aruser)
| ALT_ACPIDMAP_VID2RD_FORCE_SET(1UL));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_3:
alt_write_word(ALT_ACPIDMAP_VID3RD_ADDR,
ALT_ACPIDMAP_VID3RD_MID_SET(input_id)
| ALT_ACPIDMAP_VID3RD_PAGE_SET(page)
| ALT_ACPIDMAP_VID3RD_USER_SET(aruser)
| ALT_ACPIDMAP_VID3RD_FORCE_SET(1UL));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_4:
alt_write_word(ALT_ACPIDMAP_VID4RD_ADDR,
ALT_ACPIDMAP_VID4RD_MID_SET(input_id)
| ALT_ACPIDMAP_VID4RD_PAGE_SET(page)
| ALT_ACPIDMAP_VID4RD_USER_SET(aruser)
| ALT_ACPIDMAP_VID4RD_FORCE_SET(1UL));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_5:
alt_write_word(ALT_ACPIDMAP_VID5RD_ADDR,
ALT_ACPIDMAP_VID5RD_MID_SET(input_id)
| ALT_ACPIDMAP_VID5RD_PAGE_SET(page)
| ALT_ACPIDMAP_VID5RD_USER_SET(aruser)
| ALT_ACPIDMAP_VID5RD_FORCE_SET(1UL));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_6:
alt_write_word(ALT_ACPIDMAP_VID6RD_ADDR,
ALT_ACPIDMAP_VID6RD_MID_SET(input_id)
| ALT_ACPIDMAP_VID6RD_PAGE_SET(page)
| ALT_ACPIDMAP_VID6RD_USER_SET(aruser)
| ALT_ACPIDMAP_VID6RD_FORCE_SET(1UL));
break;
default:
return ALT_E_BAD_ARG;
}
return ALT_E_SUCCESS;
}
/******************************************************************************/
ALT_STATUS_CODE alt_acp_id_map_fixed_write_set(const uint32_t input_id,
const uint32_t output_id,
const ALT_ACP_ID_MAP_PAGE_t page,
const uint32_t awuser)
{
if (input_id > ALT_ACP_ID_OUT_DYNAM_ID_7 || output_id == ALT_ACP_ID_MAX_OUTPUT_ID)
{
return ALT_E_BAD_ARG;
}
switch (output_id)
{
case ALT_ACP_ID_OUT_FIXED_ID_2:
alt_write_word(ALT_ACPIDMAP_VID2WR_ADDR,
ALT_ACPIDMAP_VID2WR_MID_SET(input_id)
| ALT_ACPIDMAP_VID2WR_PAGE_SET(page)
| ALT_ACPIDMAP_VID2WR_USER_SET(awuser)
| ALT_ACPIDMAP_VID2WR_FORCE_SET(1UL));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_3:
alt_write_word(ALT_ACPIDMAP_VID3WR_ADDR,
ALT_ACPIDMAP_VID3WR_MID_SET(input_id)
| ALT_ACPIDMAP_VID3WR_PAGE_SET(page)
| ALT_ACPIDMAP_VID3WR_USER_SET(awuser)
| ALT_ACPIDMAP_VID3WR_FORCE_SET(1UL));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_4:
alt_write_word(ALT_ACPIDMAP_VID4WR_ADDR,
ALT_ACPIDMAP_VID4WR_MID_SET(input_id)
| ALT_ACPIDMAP_VID4WR_PAGE_SET(page)
| ALT_ACPIDMAP_VID4WR_USER_SET(awuser)
| ALT_ACPIDMAP_VID4WR_FORCE_SET(1UL));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_5:
alt_write_word(ALT_ACPIDMAP_VID5WR_ADDR,
ALT_ACPIDMAP_VID5WR_MID_SET(input_id)
| ALT_ACPIDMAP_VID5WR_PAGE_SET(page)
| ALT_ACPIDMAP_VID5WR_USER_SET(awuser)
| ALT_ACPIDMAP_VID5WR_FORCE_SET(1UL));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_6:
alt_write_word(ALT_ACPIDMAP_VID6WR_ADDR,
ALT_ACPIDMAP_VID6WR_MID_SET(input_id)
| ALT_ACPIDMAP_VID6WR_PAGE_SET(page)
| ALT_ACPIDMAP_VID6WR_USER_SET(awuser)
| ALT_ACPIDMAP_VID6WR_FORCE_SET(1UL)
);
break;
default:
return ALT_E_BAD_ARG;
}
return ALT_E_SUCCESS;
}
/******************************************************************************/
ALT_STATUS_CODE alt_acp_id_map_dynamic_read_set(const uint32_t output_id)
{
if (output_id == ALT_ACP_ID_MAX_OUTPUT_ID)
{
return ALT_E_BAD_ARG;
}
uint32_t aruser, page;
switch (output_id)
{
case ALT_ACP_ID_OUT_FIXED_ID_2:
aruser = ALT_ACPIDMAP_VID2RD_USER_GET(alt_read_word(ALT_ACPIDMAP_VID2RD_ADDR));
page = ALT_ACPIDMAP_VID2RD_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID2RD_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_3:
aruser = ALT_ACPIDMAP_VID3RD_USER_GET(alt_read_word(ALT_ACPIDMAP_VID3RD_ADDR));
page = ALT_ACPIDMAP_VID3RD_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID3RD_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_4:
aruser = ALT_ACPIDMAP_VID4RD_USER_GET(alt_read_word(ALT_ACPIDMAP_VID4RD_ADDR));
page = ALT_ACPIDMAP_VID4RD_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID4RD_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_5:
aruser = ALT_ACPIDMAP_VID5RD_USER_GET(alt_read_word(ALT_ACPIDMAP_VID5RD_ADDR));
page = ALT_ACPIDMAP_VID5RD_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID5RD_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_6:
aruser = ALT_ACPIDMAP_VID6RD_USER_GET(alt_read_word(ALT_ACPIDMAP_VID6RD_ADDR));
page = ALT_ACPIDMAP_VID6RD_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID6RD_ADDR));
break;
default:
return ALT_E_BAD_ARG;
}
alt_write_word(ALT_ACPIDMAP_DYNRD_ADDR,
ALT_ACPIDMAP_DYNRD_PAGE_SET(page)
| ALT_ACPIDMAP_DYNRD_USER_SET(aruser));
return ALT_E_SUCCESS;
}
/******************************************************************************/
ALT_STATUS_CODE alt_acp_id_map_dynamic_write_set(const uint32_t output_id)
{
if (output_id == ALT_ACP_ID_MAX_OUTPUT_ID)
{
return ALT_E_BAD_ARG;
}
uint32_t awuser, page;
switch (output_id)
{
case ALT_ACP_ID_OUT_FIXED_ID_2:
awuser = ALT_ACPIDMAP_VID2WR_USER_GET(alt_read_word(ALT_ACPIDMAP_VID2WR_ADDR));
page = ALT_ACPIDMAP_VID2WR_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID2WR_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_3:
awuser = ALT_ACPIDMAP_VID3WR_USER_GET(alt_read_word(ALT_ACPIDMAP_VID3WR_ADDR));
page = ALT_ACPIDMAP_VID3WR_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID3WR_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_4:
awuser = ALT_ACPIDMAP_VID4WR_USER_GET(alt_read_word(ALT_ACPIDMAP_VID4WR_ADDR));
page = ALT_ACPIDMAP_VID4WR_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID4WR_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_5:
awuser = ALT_ACPIDMAP_VID5WR_USER_GET(alt_read_word(ALT_ACPIDMAP_VID5WR_ADDR));
page = ALT_ACPIDMAP_VID5WR_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID5WR_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_6:
awuser = ALT_ACPIDMAP_VID6WR_USER_GET(alt_read_word(ALT_ACPIDMAP_VID6WR_ADDR));
page = ALT_ACPIDMAP_VID6WR_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID6WR_ADDR));
break;
default:
return ALT_E_BAD_ARG;
}
alt_write_word(ALT_ACPIDMAP_DYNWR_ADDR,
ALT_ACPIDMAP_DYNWR_PAGE_SET(page)
| ALT_ACPIDMAP_DYNWR_USER_SET(awuser));
return ALT_E_SUCCESS;
}
/******************************************************************************/
ALT_STATUS_CODE alt_acp_id_map_dynamic_read_options_set(const ALT_ACP_ID_MAP_PAGE_t page,
const uint32_t aruser)
{
alt_write_word(ALT_ACPIDMAP_DYNRD_ADDR,
ALT_ACPIDMAP_DYNRD_PAGE_SET(page)
| ALT_ACPIDMAP_DYNRD_USER_SET(aruser));
return ALT_E_SUCCESS;
}
/******************************************************************************/
ALT_STATUS_CODE alt_acp_id_map_dynamic_write_options_set(const ALT_ACP_ID_MAP_PAGE_t page,
const uint32_t awuser)
{
alt_write_word(ALT_ACPIDMAP_DYNWR_ADDR,
ALT_ACPIDMAP_DYNWR_PAGE_SET(page)
| ALT_ACPIDMAP_DYNWR_USER_SET(awuser));
return ALT_E_SUCCESS;
}
/******************************************************************************/
ALT_STATUS_CODE alt_acp_id_map_read_options_get(const uint32_t output_id,
bool * fixed,
uint32_t * input_id,
ALT_ACP_ID_MAP_PAGE_t * page,
uint32_t * aruser)
{
if (output_id == ALT_ACP_ID_MAX_OUTPUT_ID)
{
return ALT_E_BAD_ARG;
}
switch (output_id)
{
case ALT_ACP_ID_OUT_FIXED_ID_2:
*aruser = ALT_ACPIDMAP_VID2RD_S_USER_GET(alt_read_word(ALT_ACPIDMAP_VID2RD_S_ADDR));
*page = (ALT_ACP_ID_MAP_PAGE_t)ALT_ACPIDMAP_VID2RD_S_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID2RD_S_ADDR));
*input_id = ALT_ACPIDMAP_VID2RD_S_MID_GET(alt_read_word(ALT_ACPIDMAP_VID2RD_S_ADDR));
*fixed = ALT_ACPIDMAP_VID2RD_S_FORCE_GET(alt_read_word(ALT_ACPIDMAP_VID2RD_S_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_3:
*aruser = ALT_ACPIDMAP_VID3RD_S_USER_GET(alt_read_word(ALT_ACPIDMAP_VID3RD_S_ADDR));
*page = (ALT_ACP_ID_MAP_PAGE_t)ALT_ACPIDMAP_VID3RD_S_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID3RD_S_ADDR));
*input_id = ALT_ACPIDMAP_VID3RD_S_MID_GET(alt_read_word(ALT_ACPIDMAP_VID3RD_S_ADDR));
*fixed = ALT_ACPIDMAP_VID3RD_S_FORCE_GET(alt_read_word(ALT_ACPIDMAP_VID3RD_S_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_4:
*aruser = ALT_ACPIDMAP_VID4RD_S_USER_GET(alt_read_word(ALT_ACPIDMAP_VID4RD_S_ADDR));
*page = (ALT_ACP_ID_MAP_PAGE_t)ALT_ACPIDMAP_VID4RD_S_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID4RD_S_ADDR));
*input_id = ALT_ACPIDMAP_VID4RD_S_MID_GET(alt_read_word(ALT_ACPIDMAP_VID4RD_S_ADDR));
*fixed = ALT_ACPIDMAP_VID4RD_S_FORCE_GET(alt_read_word(ALT_ACPIDMAP_VID4RD_S_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_5:
*aruser = ALT_ACPIDMAP_VID5RD_S_USER_GET(alt_read_word(ALT_ACPIDMAP_VID5RD_S_ADDR));
*page = (ALT_ACP_ID_MAP_PAGE_t)ALT_ACPIDMAP_VID5RD_S_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID5RD_S_ADDR));
*input_id = ALT_ACPIDMAP_VID5RD_S_MID_GET(alt_read_word(ALT_ACPIDMAP_VID5RD_S_ADDR));
*fixed = ALT_ACPIDMAP_VID5RD_S_FORCE_GET(alt_read_word(ALT_ACPIDMAP_VID5RD_S_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_6:
*aruser = ALT_ACPIDMAP_VID6RD_S_USER_GET(alt_read_word(ALT_ACPIDMAP_VID6RD_S_ADDR));
*page = (ALT_ACP_ID_MAP_PAGE_t)ALT_ACPIDMAP_VID6RD_S_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID6RD_S_ADDR));
*input_id = ALT_ACPIDMAP_VID6RD_S_MID_GET(alt_read_word(ALT_ACPIDMAP_VID6RD_S_ADDR));
*fixed = ALT_ACPIDMAP_VID6RD_S_FORCE_GET(alt_read_word(ALT_ACPIDMAP_VID6RD_S_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_7:
*aruser = ALT_ACPIDMAP_DYNRD_S_USER_GET(alt_read_word(ALT_ACPIDMAP_DYNRD_S_ADDR));
*page = (ALT_ACP_ID_MAP_PAGE_t)ALT_ACPIDMAP_DYNRD_S_PAGE_GET(alt_read_word(ALT_ACPIDMAP_DYNRD_S_ADDR));
break;
default:
return ALT_E_BAD_ARG;
}
return ALT_E_SUCCESS;
}
ALT_STATUS_CODE alt_acp_id_map_write_options_get(const uint32_t output_id,
bool * fixed,
uint32_t * input_id,
ALT_ACP_ID_MAP_PAGE_t * page,
uint32_t * awuser)
{
if (output_id == ALT_ACP_ID_MAX_OUTPUT_ID)
{
return ALT_E_BAD_ARG;
}
switch (output_id)
{
case ALT_ACP_ID_OUT_FIXED_ID_2:
*awuser = ALT_ACPIDMAP_VID2WR_S_USER_GET(alt_read_word(ALT_ACPIDMAP_VID2WR_S_ADDR));
*page = (ALT_ACP_ID_MAP_PAGE_t)ALT_ACPIDMAP_VID2WR_S_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID2WR_S_ADDR));
*input_id = ALT_ACPIDMAP_VID2WR_S_MID_GET(alt_read_word(ALT_ACPIDMAP_VID2WR_S_ADDR));
*fixed = ALT_ACPIDMAP_VID2WR_S_FORCE_GET(alt_read_word(ALT_ACPIDMAP_VID2WR_S_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_3:
*awuser = ALT_ACPIDMAP_VID3WR_S_USER_GET(alt_read_word(ALT_ACPIDMAP_VID3WR_S_ADDR));
*page = (ALT_ACP_ID_MAP_PAGE_t)ALT_ACPIDMAP_VID3WR_S_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID3WR_S_ADDR));
*input_id = ALT_ACPIDMAP_VID3WR_S_MID_GET(alt_read_word(ALT_ACPIDMAP_VID3WR_S_ADDR));
*fixed = ALT_ACPIDMAP_VID3WR_S_FORCE_GET(alt_read_word(ALT_ACPIDMAP_VID3WR_S_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_4:
*awuser = ALT_ACPIDMAP_VID4WR_S_USER_GET(alt_read_word(ALT_ACPIDMAP_VID4WR_S_ADDR));
*page = (ALT_ACP_ID_MAP_PAGE_t)ALT_ACPIDMAP_VID4WR_S_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID4WR_S_ADDR));
*input_id = ALT_ACPIDMAP_VID4WR_S_MID_GET(alt_read_word(ALT_ACPIDMAP_VID4WR_S_ADDR));
*fixed = ALT_ACPIDMAP_VID4WR_S_FORCE_GET(alt_read_word(ALT_ACPIDMAP_VID4WR_S_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_5:
*awuser = ALT_ACPIDMAP_VID5WR_S_USER_GET(alt_read_word(ALT_ACPIDMAP_VID5WR_S_ADDR));
*page = (ALT_ACP_ID_MAP_PAGE_t)ALT_ACPIDMAP_VID5WR_S_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID5WR_S_ADDR));
*input_id = ALT_ACPIDMAP_VID5WR_S_MID_GET(alt_read_word(ALT_ACPIDMAP_VID5WR_S_ADDR));
*fixed = ALT_ACPIDMAP_VID5WR_S_FORCE_GET(alt_read_word(ALT_ACPIDMAP_VID5WR_S_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_6:
*awuser = ALT_ACPIDMAP_VID6WR_S_USER_GET(alt_read_word(ALT_ACPIDMAP_VID6WR_S_ADDR));
*page = (ALT_ACP_ID_MAP_PAGE_t)ALT_ACPIDMAP_VID6WR_S_PAGE_GET(alt_read_word(ALT_ACPIDMAP_VID6WR_S_ADDR));
*input_id = ALT_ACPIDMAP_VID6WR_S_MID_GET(alt_read_word(ALT_ACPIDMAP_VID6WR_S_ADDR));
*fixed = ALT_ACPIDMAP_VID6WR_S_FORCE_GET(alt_read_word(ALT_ACPIDMAP_VID6WR_S_ADDR));
break;
case ALT_ACP_ID_OUT_DYNAM_ID_7:
*awuser = ALT_ACPIDMAP_DYNWR_S_USER_GET(alt_read_word(ALT_ACPIDMAP_DYNWR_S_ADDR));
*page = (ALT_ACP_ID_MAP_PAGE_t)ALT_ACPIDMAP_DYNWR_S_PAGE_GET(alt_read_word(ALT_ACPIDMAP_DYNWR_S_ADDR));
break;
default:
return ALT_E_BAD_ARG;
}
return ALT_E_SUCCESS;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,783 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/******************************************************************************
*
* Copyright 2013 Altera Corporation. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
******************************************************************************/
#include <stdint.h>
#include <stdlib.h>
#include <stdbool.h>
#include <bsp/socal/hps.h>
#include <bsp/socal/socal.h>
#include <bsp/socal/alt_gpio.h>
#include <bsp/socal/alt_rstmgr.h>
#include <bsp/hwlib.h>
#include <bsp/alt_generalpurpose_io.h>
/****************************************************************************************/
/******************************* Useful local definitions *******************************/
/****************************************************************************************/
#define ALT_GPIO_EOPA ALT_GPIO_1BIT_28
#define ALT_GPIO_EOPB ALT_GPIO_1BIT_57
#define ALT_GPIO_EOPC ALT_HLGPI_15
#define ALT_GPIO_BITMASK 0x1FFFFFFF
// expands the zero or one bit to the 29-bit GPIO word
#define ALT_GPIO_ALLORNONE(tst) ((uint32_t) ((tst == 0) ? 0 : ALT_GPIO_BITMASK))
/****************************************************************************************/
/* alt_gpio_init() initializes the GPIO modules */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_init(void)
{
// put GPIO modules into system manager reset if not already there
alt_gpio_uninit();
// release GPIO modules from system reset (w/ two-instruction delay)
alt_replbits_word(ALT_RSTMGR_PERMODRST_ADDR, ALT_RSTMGR_PERMODRST_GPIO0_SET_MSK |
ALT_RSTMGR_PERMODRST_GPIO1_SET_MSK |
ALT_RSTMGR_PERMODRST_GPIO2_SET_MSK, 0);
return ALT_E_SUCCESS;
}
/****************************************************************************************/
/* alt_gpio_uninit() uninitializes the GPIO modules */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_uninit(void)
{
// put all GPIO modules into system manager reset
alt_replbits_word(ALT_RSTMGR_PERMODRST_ADDR, ALT_RSTMGR_PERMODRST_GPIO0_SET_MSK |
ALT_RSTMGR_PERMODRST_GPIO1_SET_MSK |
ALT_RSTMGR_PERMODRST_GPIO2_SET_MSK,
ALT_GPIO_BITMASK);
return ALT_E_SUCCESS;
}
/****************************************************************************************/
/* alt_gpio_port_datadir_set() sets the specified GPIO data bits to use the data */
/* direction(s) specified. 0 = input (default). 1 = output. */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_port_datadir_set(ALT_GPIO_PORT_t gpio_pid,
uint32_t mask, uint32_t config)
{
volatile uint32_t *addr;
if ((mask & ~ALT_GPIO_BITMASK) || (config & ~ALT_GPIO_BITMASK)) { return ALT_E_ERROR; }
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_SWPORTA_DDR_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_SWPORTA_DDR_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_SWPORTA_DDR_ADDR; }
else { return ALT_E_BAD_ARG; }
alt_replbits_word(addr, mask, config);
return ALT_E_SUCCESS;
}
/****************************************************************************************/
/* alt_gpio_port_datadir_get() returns the data direction configuration of selected */
/* bits of the designated GPIO module. */
/****************************************************************************************/
uint32_t alt_gpio_port_datadir_get(ALT_GPIO_PORT_t gpio_pid,
uint32_t mask)
{
volatile uint32_t *addr;
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_SWPORTA_DDR_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_SWPORTA_DDR_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_SWPORTA_DDR_ADDR; }
else { return 0; }
return alt_read_word(addr) & mask;
}
/****************************************************************************************/
/* alt_gpio_port_data_write() sets the GPIO data outputs of the specified GPIO module */
/* to a one or zero. Actual outputs are only set if the data direction for that bit(s) */
/* has previously been set to configure them as output(s). */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_port_data_write(ALT_GPIO_PORT_t gpio_pid,
uint32_t mask, uint32_t val)
{
volatile uint32_t *addr;
if ((mask & ~ALT_GPIO_BITMASK) || (val & ~ALT_GPIO_BITMASK)) { return ALT_E_ERROR; }
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_SWPORTA_DR_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_SWPORTA_DR_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_SWPORTA_DR_ADDR; }
else { return ALT_E_BAD_ARG; }
alt_replbits_word(addr, mask, val);
return ALT_E_SUCCESS;
}
/****************************************************************************************/
/* alt_gpio_port_data_read() returns the value of the data inputs of the specified */
/* GPIO module. Data direction for these bits must have been previously set to inputs. */
/****************************************************************************************/
#if (!ALT_GPIO_DATAREAD_TEST_MODE)
/* This is the production code version. For software unit testing, set the */
/* ALT_GPIO_DATAREAD_TEST_MODE flag to true in the makefile, which will compile */
/* the GPIO test software version of alt_gpio_port_data_read() instead. */
uint32_t alt_gpio_port_data_read(ALT_GPIO_PORT_t gpio_pid, uint32_t mask)
{
volatile uint32_t *addr;
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_EXT_PORTA_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_EXT_PORTA_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_EXT_PORTA_ADDR; }
else { return 0; }
return alt_read_word(addr) & mask;
}
#endif
/****************************************************************************************/
/* alt_gpio_port_int_type_set() sets selected signals of the specified GPIO port to */
/* be either level-sensitive ( =0) or edge-triggered ( =1). */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_port_int_type_set(ALT_GPIO_PORT_t gpio_pid,
uint32_t mask, uint32_t config)
{
volatile uint32_t *addr;
if ((mask & ~ALT_GPIO_BITMASK) || (config & ~ALT_GPIO_BITMASK)) { return ALT_E_ERROR; }
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_INTTYPE_LEVEL_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_INTTYPE_LEVEL_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_INTTYPE_LEVEL_ADDR; }
else { return ALT_E_BAD_ARG; }
alt_replbits_word(addr, mask, config);
return ALT_E_SUCCESS;
}
/****************************************************************************************/
/* alt_gpio_port_int_type_get() returns the interrupt configuration (edge-triggered or */
/* level-triggered) for the specified signals of the specified GPIO module. */
/****************************************************************************************/
uint32_t alt_gpio_port_int_type_get(ALT_GPIO_PORT_t gpio_pid,
uint32_t mask)
{
volatile uint32_t *addr;
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_INTTYPE_LEVEL_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_INTTYPE_LEVEL_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_INTTYPE_LEVEL_ADDR; }
else { return 0; }
return alt_read_word(addr) & mask;
}
/****************************************************************************************/
/* alt_gpio_port_int_pol_set() sets the interrupt polarity of the signals of the */
/* specified GPIO register (when used as inputs) to active-high ( =0) or active-low */
/* ( =1). */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_port_int_pol_set(ALT_GPIO_PORT_t gpio_pid,
uint32_t mask, uint32_t config)
{
volatile uint32_t *addr;
if ((mask & ~ALT_GPIO_BITMASK) || (config & ~ALT_GPIO_BITMASK)) { return ALT_E_ERROR; }
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_INT_POL_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_INT_POL_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_INT_POL_ADDR; }
else { return ALT_E_BAD_ARG; }
alt_replbits_word(addr, mask, config);
return ALT_E_SUCCESS;
}
/****************************************************************************************/
/* alt_gpio_port_int_pol_get() returns the active-high or active-low polarity */
/* configuration for the possible interrupt sources of the specified GPIO module. */
/* 0 = The interrupt polarity for this bit is set to active-low mode. 1 = The */
/* interrupt polarity for this bit is set to active-highmode. */
/****************************************************************************************/
uint32_t alt_gpio_port_int_pol_get(ALT_GPIO_PORT_t gpio_pid,
uint32_t mask)
{
volatile uint32_t *addr;
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_INT_POL_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_INT_POL_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_INT_POL_ADDR; }
else { return 0; }
return alt_read_word(addr) & mask;
}
/****************************************************************************************/
/* alt_gpio_port_debounce_set() sets the debounce configuration for input signals of */
/* the specified GPIO module. 0 - Debounce is not selected for this signal (default). */
/* 1 - Debounce is selected for this signal. */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_port_debounce_set(ALT_GPIO_PORT_t gpio_pid,
uint32_t mask, uint32_t config)
{
volatile uint32_t *addr;
if ((mask & ~ALT_GPIO_BITMASK) || (config & ~ALT_GPIO_BITMASK)) { return ALT_E_ERROR; }
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_DEBOUNCE_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_DEBOUNCE_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_DEBOUNCE_ADDR; }
else { return ALT_E_BAD_ARG; }
alt_replbits_word(addr, mask, config);
return ALT_E_SUCCESS;
}
/****************************************************************************************/
/* alt_gpio_port_debounce_get() returns the debounce configuration for the input */
/* signals of the specified GPIO register. 0 - Debounce is not selected for this */
/* signal. 1 - Debounce is selected for this signal. */
/****************************************************************************************/
uint32_t alt_gpio_port_debounce_get(ALT_GPIO_PORT_t gpio_pid,
uint32_t mask)
{
volatile uint32_t *addr;
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_DEBOUNCE_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_DEBOUNCE_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_DEBOUNCE_ADDR; }
else { return 0; }
return alt_read_word(addr) & mask;
}
/****************************************************************************************/
/* alt_gpio_port_sync_set() sets the synchronization configuration for the signals of */
/* the specified GPIO register. This allows for synchronizing level-sensitive */
/* interrupts to the internal clock signal. This is a port-wide option that controls */
/* all level-sensitive interrupt signals of that GPIO port. */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_port_sync_set(ALT_GPIO_PORT_t gpio_pid, uint32_t config)
{
volatile uint32_t *addr;
config = (config != 0) ? 1 : 0;
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_LS_SYNC_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_LS_SYNC_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_LS_SYNC_ADDR; }
else { return ALT_E_BAD_ARG; }
alt_write_word(addr, config);
return ALT_E_SUCCESS;
}
/****************************************************************************************/
/* alt_gpio_port_sync_get() returns the synchronization configuration for the signals */
/* of the specified GPIO register. This allows for synchronizing level-sensitive */
/* interrupts to the internal clock signal. This is a port-wide option that controls */
/* all level-sensitive interrupt signals of that GPIO port. */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_port_sync_get(ALT_GPIO_PORT_t gpio_pid)
{
volatile uint32_t *addr;
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_LS_SYNC_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_LS_SYNC_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_LS_SYNC_ADDR; }
else { return ALT_E_BAD_ARG; } // error
return (alt_read_word(addr) != 0) ? ALT_E_TRUE : ALT_E_FALSE;
}
/****************************************************************************************/
/* alt_gpio_port_config() configures a group of GPIO signals with the same parameters. */
/* Allows for configuring all parameters of a given port at one time. */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_port_config(ALT_GPIO_PORT_t gpio_pid,
uint32_t mask, ALT_GPIO_PIN_DIR_t dir, ALT_GPIO_PIN_TYPE_t type,
ALT_GPIO_PIN_POL_t pol, ALT_GPIO_PIN_DEBOUNCE_t debounc,
uint32_t data)
{
ALT_STATUS_CODE ret;
// set all affected GPIO bits to inputs
ret = alt_gpio_port_datadir_set(gpio_pid, mask, ALT_GPIO_ALLORNONE(ALT_GPIO_PIN_INPUT));
// the ALT_GPIO_ALLORNONE() macro expands the zero or one bit to the 29-bit GPIO word
// set trigger type
if (ret == ALT_E_SUCCESS)
{
ret = alt_gpio_port_int_type_set(gpio_pid, mask, ALT_GPIO_ALLORNONE(type));
}
// set polarity
if (ret == ALT_E_SUCCESS)
{
alt_gpio_port_int_pol_set(gpio_pid, mask, ALT_GPIO_ALLORNONE(pol));
}
// set debounce
if (ret == ALT_E_SUCCESS)
{
alt_gpio_port_debounce_set(gpio_pid, mask, ALT_GPIO_ALLORNONE(debounc));
}
// set data output(s)
if (ret == ALT_E_SUCCESS)
{
alt_gpio_port_data_write(gpio_pid, mask, ALT_GPIO_ALLORNONE(data));
}
if (ret == ALT_E_SUCCESS)
{
// set data direction of one or more bits to select output
ret = alt_gpio_port_datadir_set(gpio_pid, mask, ALT_GPIO_ALLORNONE(dir));
}
return ret;
}
/****************************************************************************************/
/* Enables the specified GPIO data register interrupts. */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_port_int_enable(ALT_GPIO_PORT_t gpio_pid, uint32_t config)
{
volatile uint32_t *addr;
if (config & ~ALT_GPIO_BITMASK) { return ALT_E_ERROR; }
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_INTEN_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_INTEN_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_INTEN_ADDR; }
else { return ALT_E_BAD_ARG; }
alt_replbits_word(addr, config, UINT32_MAX);
return ALT_E_SUCCESS;
}
/****************************************************************************************/
/* Disables the specified GPIO data module interrupts. */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_port_int_disable(ALT_GPIO_PORT_t gpio_pid, uint32_t config)
{
volatile uint32_t *addr;
if (config & ~ALT_GPIO_BITMASK) { return ALT_E_ERROR; }
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_INTEN_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_INTEN_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_INTEN_ADDR; }
else { return ALT_E_BAD_ARG; }
alt_replbits_word(addr, config, 0);
return ALT_E_SUCCESS;
}
/****************************************************************************************/
/* Get the current state of the specified GPIO port interrupts enables. */
/****************************************************************************************/
uint32_t alt_gpio_port_int_enable_get(ALT_GPIO_PORT_t gpio_pid)
{
volatile uint32_t *addr;
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_INTEN_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_INTEN_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_INTEN_ADDR; }
else { return 0; }
return alt_read_word(addr);
}
/****************************************************************************************/
/* Masks or unmasks selected interrupt source bits of the data register of the */
/* specified GPIO module. Uses a second bit mask to determine which signals may be */
/* changed by this call. */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_port_int_mask_set(ALT_GPIO_PORT_t gpio_pid,
uint32_t mask, uint32_t val)
{
volatile uint32_t *addr;
if ((mask & ~ALT_GPIO_BITMASK) || (val & ~ALT_GPIO_BITMASK)) { return ALT_E_ERROR; }
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_INTMSK_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_INTMSK_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_INTMSK_ADDR; }
else { return ALT_E_BAD_ARG; } // argument error
alt_replbits_word(addr, mask, val);
return ALT_E_SUCCESS;
}
/****************************************************************************************/
/* Returns the interrupt source mask of the specified GPIO module. */
/****************************************************************************************/
uint32_t alt_gpio_port_int_mask_get(ALT_GPIO_PORT_t gpio_pid)
{
volatile uint32_t *addr;
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_INTMSK_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_INTMSK_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_INTMSK_ADDR; }
else { return 0; } // error
return alt_read_word(addr);
}
/****************************************************************************************/
/* alt_gpio_port_int_status_get() returns the interrupt pending status of all signals */
/* of the specified GPIO register. */
/****************************************************************************************/
uint32_t alt_gpio_port_int_status_get(ALT_GPIO_PORT_t gpio_pid)
{
volatile uint32_t *addr;
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_INTSTAT_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_INTSTAT_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_INTSTAT_ADDR; }
else { return 0; } // error
return alt_read_word(addr);
}
/****************************************************************************************/
/* Clear the interrupt pending status of selected signals of the specified GPIO */
/* register. */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_port_int_status_clear(ALT_GPIO_PORT_t gpio_pid,
uint32_t clrmask)
{
volatile uint32_t *addr;
if (clrmask & ~ALT_GPIO_BITMASK) { return ALT_E_ERROR; }
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_INTSTAT_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_INTSTAT_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_INTSTAT_ADDR; }
else { return ALT_E_BAD_ARG; } // argument error
alt_write_word(addr, clrmask);
return ALT_E_SUCCESS;
}
/****************************************************************************************/
/* alt_gpio_port_idcode_get() returns the ID code of the specified GPIO module. */
/****************************************************************************************/
uint32_t alt_gpio_port_idcode_get(ALT_GPIO_PORT_t gpio_pid)
{
volatile uint32_t *addr;
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_ID_CODE_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_ID_CODE_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_ID_CODE_ADDR; }
else { return 0; }
return alt_read_word(addr);
}
/****************************************************************************************/
/* alt_gpio_port_ver_get() returns the version code of the specified GPIO module. */
/****************************************************************************************/
uint32_t alt_gpio_port_ver_get(ALT_GPIO_PORT_t gpio_pid)
{
volatile uint32_t *addr;
if (gpio_pid == ALT_GPIO_PORTA) { addr = ALT_GPIO0_VER_ID_CODE_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTB) { addr = ALT_GPIO1_VER_ID_CODE_ADDR; }
else if (gpio_pid == ALT_GPIO_PORTC) { addr = ALT_GPIO2_VER_ID_CODE_ADDR; }
else { return 0; }
return alt_read_word(addr);
}
/****************************************************************************************/
/* alt_gpio_bit_config() configures one bit (signal) of the GPIO ports. */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_bit_config(ALT_GPIO_1BIT_t signal_num,
ALT_GPIO_PIN_DIR_t dir, ALT_GPIO_PIN_TYPE_t type,
ALT_GPIO_PIN_POL_t pol, ALT_GPIO_PIN_DEBOUNCE_t debounce,
ALT_GPIO_PIN_DATA_t data)
{
ALT_GPIO_PORT_t pid;
uint32_t mask;
pid = alt_gpio_bit_to_pid(signal_num);
mask = 0x1 << alt_gpio_bit_to_port_pin(signal_num);
return alt_gpio_port_config(pid, mask, dir, type, pol, debounce, data);
}
/****************************************************************************************/
/* Returns the configuration parameters of a given GPIO bit. */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_bitconfig_get(ALT_GPIO_1BIT_t signal_num,
ALT_GPIO_CONFIG_RECORD_t *config)
{
ALT_STATUS_CODE ret = ALT_E_ERROR;
ALT_GPIO_PORT_t pid;
uint32_t mask, shift;
if ((config != NULL) && (signal_num != ALT_END_OF_GPIO_SIGNALS) && (signal_num <= ALT_LAST_VALID_GPIO_BIT))
{
pid = alt_gpio_bit_to_pid(signal_num);
shift = alt_gpio_bit_to_port_pin(signal_num);
if ((pid != ALT_GPIO_PORT_UNKNOWN) && (shift <= ALT_GPIO_BIT_MAX))
{
config->signal_number = signal_num;
mask = 0x00000001 << shift;
config->direction = (alt_gpio_port_datadir_get(pid, mask) == 0) ? ALT_GPIO_PIN_INPUT : ALT_GPIO_PIN_OUTPUT;
config->type = (alt_gpio_port_int_type_get(pid, mask) == 0) ? ALT_GPIO_PIN_LEVEL_TRIG_INT : ALT_GPIO_PIN_EDGE_TRIG_INT;
// save the following data whatever the state of config->direction
config->polarity = (alt_gpio_port_int_pol_get(pid, mask) == 0) ? ALT_GPIO_PIN_ACTIVE_LOW : ALT_GPIO_PIN_ACTIVE_HIGH;
config->debounce = (alt_gpio_port_debounce_get(pid, mask) == 0) ? ALT_GPIO_PIN_NODEBOUNCE : ALT_GPIO_PIN_DEBOUNCE;
config->data = (alt_gpio_port_data_read(pid, mask) == 0) ? ALT_GPIO_PIN_DATAZERO : ALT_GPIO_PIN_DATAONE;
ret = ALT_E_SUCCESS;
}
}
return ret;
}
/****************************************************************************************/
/* alt_gpio_group_config() configures a list of GPIO bits. The GPIO bits do not have */
/* to be configured the same, as was the case for the mask version of this function, */
/* alt_gpio_port_config(). Each bit may be configured differently and bits may be */
/* listed in any order. */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_group_config(ALT_GPIO_CONFIG_RECORD_t* config_array, uint32_t len)
{
ALT_STATUS_CODE ret = ALT_E_ERROR;
if (config_array != NULL)
{
if (config_array->signal_number == ALT_END_OF_GPIO_SIGNALS) { ret = ALT_E_SUCCESS; }
// catches the condition where the pointers are good, but the
// first index is the escape character - which isn't an error
else
{
for (; (len-- > 0) && (config_array->signal_number != ALT_END_OF_GPIO_SIGNALS) && (config_array != NULL); config_array++)
{
ret = alt_gpio_bit_config(config_array->signal_number,
config_array->direction, config_array->type, config_array->polarity,
config_array->debounce, config_array->data);
if ((config_array->direction == ALT_GPIO_PIN_OUTPUT) && (ret == ALT_E_SUCCESS))
{
// if the pin is set to be an output, set it to the correct value
alt_gpio_port_data_write(alt_gpio_bit_to_pid(config_array->signal_number),
0x1 << alt_gpio_bit_to_port_pin(config_array->signal_number),
ALT_GPIO_ALLORNONE(config_array->data));
// ret should retain the value returned by alt_gpio_bit_config() above
// and should not be changed by the alt_gpio_port_data_write() call.
}
if (((ret != ALT_E_SUCCESS) && (config_array->signal_number <= ALT_LAST_VALID_GPIO_BIT))
|| ((ret == ALT_E_SUCCESS) && (config_array->signal_number > ALT_LAST_VALID_GPIO_BIT)))
{
ret = ALT_E_ERROR;
break;
}
}
}
}
return ret;
}
/****************************************************************************************/
/* Returns a list of the pin signal indices and the associated configuration settings */
/* (data direction, interrupt type, polarity, debounce, and synchronization) of that */
/* list of signals. Only the signal indices in the first field of each configuration */
/* record need be filled in. This function will fill in all the other fields of the */
/* configuration record, returning all configuration parameters in the array. A signal */
/* number index in the array equal to ALT_END_OF_GPIO_SIGNALS (-1) also terminates the */
/* function. */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_group_config_get(ALT_GPIO_CONFIG_RECORD_t *config_array,
uint32_t len)
{
ALT_STATUS_CODE ret = ALT_E_ERROR;
if ((config_array != NULL) && (config_array->signal_number == ALT_END_OF_GPIO_SIGNALS))
{
ret = ALT_E_SUCCESS;
}
else
{
for ( ; (len > 0) && (config_array != NULL) && (config_array->signal_number != ALT_END_OF_GPIO_SIGNALS)
&& (config_array->signal_number <= ALT_LAST_VALID_GPIO_BIT); len--)
{
ret = alt_gpio_bitconfig_get(config_array->signal_number, config_array);
config_array++;
if (ret != ALT_E_SUCCESS) { break; }
}
}
return ret;
}
/****************************************************************************************/
/* Another way to return a configuration list. The difference between this version and */
/* alt_gpio_group_config_get() is that this version follows a separate list of signal */
/* indices instead of having the signal list provided in the first field of the */
/* configuration records in the array. This function will fill in the fields of the */
/* configuration record, returning all configuration parameters in the array. A signal */
/* number index in the array equal to ALT_END_OF_GPIO_SIGNALS (-1) also terminates */
/* operation. */
/****************************************************************************************/
ALT_STATUS_CODE alt_gpio_group_config_get2(ALT_GPIO_1BIT_t* pinid_array,
ALT_GPIO_CONFIG_RECORD_t *config_array, uint32_t len)
{
ALT_STATUS_CODE ret = ALT_E_ERROR;
if ((config_array != NULL) && (pinid_array != NULL) && (*pinid_array == ALT_END_OF_GPIO_SIGNALS))
{
ret = ALT_E_SUCCESS;
// catches the condition where the pointers are good, but the
// first index is the escape character - which isn't an error
}
else
{
for ( ;(len > 0) && (pinid_array != NULL) && (*pinid_array != ALT_END_OF_GPIO_SIGNALS) && (config_array != NULL); len--)
{
ret = alt_gpio_bitconfig_get(*pinid_array, config_array);
config_array++;
pinid_array++;
if (ret != ALT_E_SUCCESS) { break; }
}
}
return ret;
}
/****************************************************************************************/
/* A useful utility function. Extracts the GPIO port ID from the supplied GPIO Signal */
/* Index Number. */
/****************************************************************************************/
ALT_GPIO_PORT_t alt_gpio_bit_to_pid(ALT_GPIO_1BIT_t pin_num)
{
ALT_GPIO_PORT_t pid = ALT_GPIO_PORT_UNKNOWN;
if (pin_num <= ALT_GPIO_EOPA) { pid = ALT_GPIO_PORTA; }
else if (pin_num <= ALT_GPIO_EOPB) { pid = ALT_GPIO_PORTB; }
else if (pin_num <= ALT_GPIO_EOPC) { pid = ALT_GPIO_PORTC; }
return pid;
}
/****************************************************************************************/
/* A useful utility function. Extracts the GPIO signal (pin) mask from the supplied */
/* GPIO Signal Index Number. */
/****************************************************************************************/
ALT_GPIO_PORTBIT_t alt_gpio_bit_to_port_pin(ALT_GPIO_1BIT_t pin_num)
{
if (pin_num <= ALT_GPIO_EOPA) {}
else if (pin_num <= ALT_GPIO_EOPB) { pin_num -= (ALT_GPIO_EOPA + 1); }
else if (pin_num <= ALT_GPIO_EOPC) { pin_num -= (ALT_GPIO_EOPB + 1); }
else { return ALT_END_OF_GPIO_PORT_SIGNALS; }
return (ALT_GPIO_PORTBIT_t) pin_num;
}
/****************************************************************************************/
/* A useful utility function. Extracts the GPIO Signal Index Number from the supplied */
/* GPIO port ID and signal mask. If passed a bitmask composed of more than one signal, */
/* the signal number of the lowest bitmask presented is returned. */
/****************************************************************************************/
ALT_GPIO_1BIT_t alt_gpio_port_pin_to_bit(ALT_GPIO_PORT_t pid,
uint32_t bitmask)
{
uint32_t i;
for (i=0; i <= ALT_GPIO_BITNUM_MAX ;i++)
{
if (bitmask & 0x00000001)
{
if (pid == ALT_GPIO_PORTA) {}
else if (pid == ALT_GPIO_PORTB) { i += ALT_GPIO_EOPA + 1; }
else if (pid == ALT_GPIO_PORTC) { i += ALT_GPIO_EOPB + 1; }
else { return ALT_END_OF_GPIO_SIGNALS; }
return (ALT_GPIO_1BIT_t) i;
}
bitmask >>= 1;
}
return ALT_END_OF_GPIO_SIGNALS;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,141 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/******************************************************************************
*
* alt_reset_manager.c - API for the Altera SoC FPGA reset manager.
*
******************************************************************************/
/******************************************************************************
*
* Copyright 2013 Altera Corporation. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
******************************************************************************/
#include <bsp/alt_reset_manager.h>
#include <bsp/socal/socal.h>
#include <bsp/socal/hps.h>
#include <bsp/socal/alt_rstmgr.h>
/////
uint32_t alt_reset_event_get(void)
{
return alt_read_word(ALT_RSTMGR_STAT_ADDR);
}
ALT_STATUS_CODE alt_reset_event_clear(uint32_t event_mask)
{
alt_write_word(ALT_RSTMGR_STAT_ADDR, event_mask);
return ALT_E_SUCCESS;
}
ALT_STATUS_CODE alt_reset_cold_reset(void)
{
alt_write_word(ALT_RSTMGR_CTL_ADDR, ALT_RSTMGR_CTL_SWCOLDRSTREQ_SET_MSK);
return ALT_E_SUCCESS;
}
ALT_STATUS_CODE alt_reset_warm_reset(uint32_t warm_reset_delay,
uint32_t nRST_pin_clk_assertion,
bool sdram_refresh_enable,
bool fpga_mgr_handshake,
bool scan_mgr_handshake,
bool fpga_handshake,
bool etr_stall)
{
// Cached register values
uint32_t ctrl_reg = ALT_RSTMGR_CTL_SWWARMRSTREQ_SET_MSK;
uint32_t counts_reg = 0;
/////
// Validate warm_reset_delay is above 16 and below the field width
if ((warm_reset_delay < 16) || (warm_reset_delay >= (1 << ALT_RSTMGR_COUNTS_WARMRSTCYCLES_WIDTH)))
{
return ALT_E_BAD_ARG;
}
// Validate nRST_pin_clk_assertion delay is non-zero and below the field width
if (!nRST_pin_clk_assertion)
{
return ALT_E_ERROR;
}
if (nRST_pin_clk_assertion >= (1 << ALT_RSTMGR_COUNTS_NRSTCNT_WIDTH))
{
return ALT_E_BAD_ARG;
}
// Update counts register with warm_reset_delay information
counts_reg |= ALT_RSTMGR_COUNTS_WARMRSTCYCLES_SET(warm_reset_delay);
// Update counts register with nRST_pin_clk_assertion information
counts_reg |= ALT_RSTMGR_COUNTS_NRSTCNT_SET(nRST_pin_clk_assertion);
/////
// Update ctrl register with the specified option flags
if (sdram_refresh_enable)
{
ctrl_reg |= ALT_RSTMGR_CTL_SDRSELFREFEN_SET_MSK;
}
if (fpga_mgr_handshake)
{
ctrl_reg |= ALT_RSTMGR_CTL_FPGAMGRHSEN_SET_MSK;
}
if (scan_mgr_handshake)
{
ctrl_reg |= ALT_RSTMGR_CTL_SCANMGRHSEN_SET_MSK;
}
if (fpga_handshake)
{
ctrl_reg |= ALT_RSTMGR_CTL_FPGAHSEN_SET_MSK;
}
if (etr_stall)
{
ctrl_reg |= ALT_RSTMGR_CTL_ETRSTALLEN_SET_MSK;
}
/////
// Commit registers to hardware
alt_write_word(ALT_RSTMGR_COUNTS_ADDR, counts_reg);
alt_write_word(ALT_RSTMGR_CTL_ADDR, ctrl_reg);
return ALT_E_SUCCESS;
}

View File

@@ -1,45 +0,0 @@
## This file was generated by "./boostrap -H".
include_HEADERS =
include_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp.h
include_HEADERS += include/bspopts.h
include_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/tm27.h
include_bspdir = $(includedir)/bsp
include_bsp_HEADERS =
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/alt_16550_uart.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/alt_address_space.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/alt_cache.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/alt_clock_group.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/alt_clock_manager.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/alt_dma.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/alt_dma_common.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/alt_dma_program.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/alt_generalpurpose_io.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/alt_hwlibs_ver.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/alt_i2c.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/alt_interrupt_common.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/alt_mpu_registers.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/alt_qspi_private.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/alt_reset_manager.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/hwlib.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/i2cdrv.h
include_bsp_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/irq.h
include_bsp_socaldir = $(includedir)/bsp/socal
include_bsp_socal_HEADERS =
include_bsp_socal_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/socal/alt_acpidmap.h
include_bsp_socal_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/socal/alt_clkmgr.h
include_bsp_socal_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/socal/alt_dmanonsecure.h
include_bsp_socal_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/socal/alt_dmasecure.h
include_bsp_socal_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/socal/alt_gpio.h
include_bsp_socal_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/socal/alt_i2c.h
include_bsp_socal_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/socal/alt_l3.h
include_bsp_socal_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/socal/alt_qspi.h
include_bsp_socal_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/socal/alt_qspidata.h
include_bsp_socal_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/socal/alt_rstmgr.h
include_bsp_socal_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/socal/alt_sdr.h
include_bsp_socal_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/socal/alt_sysmgr.h
include_bsp_socal_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/socal/alt_uart.h
include_bsp_socal_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/socal/hps.h
include_bsp_socal_HEADERS += ../../../../../../bsps/arm/altera-cyclone-v/include/bsp/socal/socal.h

View File

@@ -1,30 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVI2C
*/
/*
* Copyright (c) 2014 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
* 82178 Puchheim
* Germany
* <info@embedded-brains.de>
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.org/license/LICENSE.
*/
#include <bsp.h>
#include "i2cdrv-config.h"
const i2cdrv_configuration i2cdrv_config[CYCLONE_V_NO_I2C] = {
{
.controller = ALT_I2C_I2C0,
.device_name = "/dev/i2c0",
.speed = CYCLONE_V_I2C0_SPEED,
}
};

View File

@@ -1,43 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVI2C
*/
/*
* Copyright (c) 2014 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
* 82178 Puchheim
* Germany
* <info@embedded-brains.de>
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.org/license/LICENSE.
*/
#ifndef XXX_H
#define XXX_H
#include <rtems.h>
#include <bsp/alt_i2c.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
typedef struct {
ALT_I2C_CTLR_t controller;
char *device_name;
uint32_t speed;
} i2cdrv_configuration;
extern const i2cdrv_configuration i2cdrv_config[];
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* XXX_H */

View File

@@ -1,221 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVI2C
*/
/*
* Copyright (c) 2014 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
* 82178 Puchheim
* Germany
* <info@embedded-brains.de>
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.org/license/LICENSE.
*/
#include <bsp.h>
#include <bsp/i2cdrv.h>
#include <assert.h>
#include <rtems/libio.h>
#include "i2cdrv-config.h"
typedef struct {
ALT_I2C_DEV_t i2c_dev;
rtems_id mutex;
} i2cdrv_entry;
i2cdrv_entry i2cdrv_table[CYCLONE_V_NO_I2C];
static ALT_I2C_DEV_t *get_device(i2cdrv_entry *e)
{
return &e->i2c_dev;
}
static rtems_status_code init_i2c_module(
i2cdrv_entry *e,
const i2cdrv_configuration *cfg
)
{
ALT_STATUS_CODE asc = ALT_E_SUCCESS;
ALT_I2C_CTLR_t controller = cfg->controller;
ALT_I2C_DEV_t *dev = get_device(e);
ALT_I2C_MASTER_CONFIG_t i2c_cfg = {
.addr_mode = ALT_I2C_ADDR_MODE_7_BIT,
.restart_enable = false,
};
asc = alt_i2c_init(controller, dev);
if ( asc != ALT_E_SUCCESS ) {
return RTEMS_IO_ERROR;
}
asc = alt_i2c_op_mode_set(dev, ALT_I2C_MODE_MASTER);
if ( asc != ALT_E_SUCCESS ) {
return RTEMS_IO_ERROR;
}
asc = alt_i2c_master_config_speed_set(dev, &i2c_cfg, cfg->speed);
if ( asc != ALT_E_SUCCESS ) {
return RTEMS_IO_ERROR;
}
asc = alt_i2c_master_config_set(dev, &i2c_cfg);
if ( asc != ALT_E_SUCCESS ) {
return RTEMS_IO_ERROR;
}
asc = alt_i2c_enable(dev);
if ( asc != ALT_E_SUCCESS ) {
return RTEMS_IO_ERROR;
}
return RTEMS_SUCCESSFUL;
}
rtems_device_driver i2cdrv_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
for ( size_t i = 0; i < CYCLONE_V_NO_I2C; ++i ) {
i2cdrv_entry *e = &i2cdrv_table[i];
const i2cdrv_configuration *cfg = &i2cdrv_config[i];
sc = rtems_io_register_name(cfg->device_name, major, i);
assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_semaphore_create(
rtems_build_name ('I', '2', 'C', '0' + i),
0,
RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY | RTEMS_INHERIT_PRIORITY,
0,
&e->mutex
);
assert(sc == RTEMS_SUCCESSFUL);
sc = init_i2c_module(e, cfg);
if ( sc != RTEMS_SUCCESSFUL ) {
/* I2C is not usable at this point. Releasing the mutex would allow the
* usage which could lead to undefined behaviour. */
return sc;
}
sc = rtems_semaphore_release(e->mutex);
assert(sc == RTEMS_SUCCESSFUL);
}
return sc;
}
rtems_device_driver i2cdrv_open(
rtems_device_major_number major,
rtems_device_major_number minor,
void *arg
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
i2cdrv_entry *e = &i2cdrv_table[minor];
sc = rtems_semaphore_obtain(e->mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
return sc;
}
rtems_device_driver i2cdrv_close(
rtems_device_major_number major,
rtems_device_major_number minor,
void *arg
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
i2cdrv_entry *e = &i2cdrv_table[minor];
sc = rtems_semaphore_release(e->mutex);
return sc;
}
rtems_device_driver i2cdrv_read(
rtems_device_major_number major,
rtems_device_major_number minor,
void *arg
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
i2cdrv_entry *e = &i2cdrv_table[minor];
rtems_libio_rw_args_t *rw = arg;
ALT_I2C_DEV_t *dev = get_device(e);
ALT_STATUS_CODE asc = ALT_E_SUCCESS;
asc = alt_i2c_master_receive(dev, rw->buffer, rw->count, true, true);
if ( asc == ALT_E_SUCCESS ) {
rw->bytes_moved = rw->count;
} else {
sc = RTEMS_IO_ERROR;
}
return sc;
}
rtems_device_driver i2cdrv_write(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
i2cdrv_entry *e = &i2cdrv_table[minor];
rtems_libio_rw_args_t *rw = arg;
ALT_I2C_DEV_t *dev = get_device(e);
ALT_STATUS_CODE asc = ALT_E_SUCCESS;
asc = alt_i2c_master_transmit(dev, rw->buffer, rw->count, true, true);
if ( asc == ALT_E_SUCCESS ) {
rw->bytes_moved = rw->count;
} else {
sc = RTEMS_IO_ERROR;
}
return sc;
}
static rtems_status_code ioctl_set_slave_address(
i2cdrv_entry *e,
rtems_libio_ioctl_args_t *args
)
{
ALT_I2C_DEV_t *dev = get_device(e);
ALT_STATUS_CODE asc = ALT_E_SUCCESS;
uint32_t address = (uint32_t) args->buffer;
asc = alt_i2c_master_target_set(dev, address);
if ( asc != ALT_E_SUCCESS ) {
return RTEMS_IO_ERROR;
}
return RTEMS_SUCCESSFUL;
}
rtems_device_driver i2cdrv_ioctl(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
i2cdrv_entry *e = &i2cdrv_table[minor];
rtems_libio_ioctl_args_t *args = arg;
switch (args->command) {
case I2C_IOC_SET_SLAVE_ADDRESS:
sc = ioctl_set_slave_address(e, args);
break;
default:
sc = RTEMS_INVALID_NUMBER;
break;
}
return sc;
}

View File

@@ -1,76 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycV
*/
/*
* Copyright (c) 2013, 2018 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
* 82178 Puchheim
* Germany
* <info@embedded-brains.de>
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.org/license/LICENSE.
*/
#ifndef LIBBSP_ARM_ALTERA_CYCLONE_V_BSP_H
#define LIBBSP_ARM_ALTERA_CYCLONE_V_BSP_H
/**
* @defgroup RTEMSBSPsARMCycV Intel Cyclone V
*
* @ingroup RTEMSBSPsARM
*
* @brief Intel Cyclone V Board Support Package.
*
* @{
*/
#include <bspopts.h>
#define BSP_FEATURE_IRQ_EXTENSION
#ifndef ASM
#include <rtems.h>
#include <bsp/default-initial-extension.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#define BSP_ARM_A9MPCORE_SCU_BASE 0xFFFEC000
#define BSP_ARM_GIC_ENABLE_FIQ_FOR_GROUP_0
#define BSP_ARM_GIC_CPUIF_BASE ( BSP_ARM_A9MPCORE_SCU_BASE + 0x00000100 )
#define BSP_ARM_A9MPCORE_GT_BASE ( BSP_ARM_A9MPCORE_SCU_BASE + 0x00000200 )
#define BSP_ARM_GIC_DIST_BASE ( BSP_ARM_A9MPCORE_SCU_BASE + 0x00001000 )
#ifndef BSP_ARM_A9MPCORE_PERIPHCLK
extern uint32_t altera_cyclone_v_a9mpcore_periphclk;
#define BSP_ARM_A9MPCORE_PERIPHCLK altera_cyclone_v_a9mpcore_periphclk
#define ALTERA_CYCLONE_V_NEED_A9MPCORE_PERIPHCLK
#endif
#define BSP_ARM_L2C_310_BASE 0xfffef000
#define BSP_ARM_L2C_310_ID 0x410000c9
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* ASM */
/* @} */
#endif /* LIBBSP_ARM_ALTERA_CYCLONE_V_BSP_H */

File diff suppressed because it is too large Load Diff

View File

@@ -1,831 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/*! \file
* Altera - SoC FPGA Address Space Manager
*/
/******************************************************************************
*
* Copyright 2013 Altera Corporation. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
******************************************************************************/
#ifndef __ALT_ADDRESS_SPACE_H__
#define __ALT_ADDRESS_SPACE_H__
#include <stdbool.h>
#include "hwlib.h"
#include "socal/hps.h"
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
/******************************************************************************/
// ARM Level 2 Cache Controller L2C-310 Register Interface
// Address Filtering Start Register
// The Address Filtering Start Register is a read and write register.
// Bits Field Description
// :-------|:--------------------------|:-----------------------------------------
// [31:20] | address_filtering_start | Address filtering start address for
// | | bits [31:20] of the filtering address.
// [19:1] | Reserved | SBZ/RAZ
// [0] | address_filtering_enable | 0 - address filtering disabled
// | | 1 - address filtering enabled.
// Address Filtering Start Register Address
#define L2_CACHE_ADDR_FILTERING_START_OFST 0xC00
#define L2_CACHE_ADDR_FILTERING_START_ADDR (ALT_MPUL2_OFST + L2_CACHE_ADDR_FILTERING_START_OFST)
// Address Filtering Start Register - Start Value Mask
#define L2_CACHE_ADDR_FILTERING_START_ADDR_MASK 0xFFF00000
// Address Filtering Start Register - Reset Start Address Value (1 MB)
#define L2_CACHE_ADDR_FILTERING_START_RESET 0x100000
// Address Filtering Start Register - Enable Flag Mask
#define L2_CACHE_ADDR_FILTERING_ENABLE_MASK 0x00000001
// Address Filtering Start Register - Reset Enable Flag Value (Enabled)
#define L2_CACHE_ADDR_FILTERING_ENABLE_RESET 0x1
// Address Filtering End Register
// The Address Filtering End Register is a read and write register.
// Bits Field Description
// :-------|:--------------------------|:-----------------------------------------
// [31:20] | address_filtering_end | Address filtering end address for bits
// | | [31:20] of the filtering address.
// [19:0] | Reserved | SBZ/RAZ
// Address Filtering End Register Address
#define L2_CACHE_ADDR_FILTERING_END_OFST 0xC04
#define L2_CACHE_ADDR_FILTERING_END_ADDR (ALT_MPUL2_OFST + L2_CACHE_ADDR_FILTERING_END_OFST)
// Address Filtering End Register - End Value Mask
#define L2_CACHE_ADDR_FILTERING_END_ADDR_MASK 0xFFF00000
// Address Filtering End Register - Reset End Address Value (3 GiB)
#define L2_CACHE_ADDR_FILTERING_END_RESET 0xC0000000
#ifndef __ASSEMBLY__
/******************************************************************************/
/*! \addtogroup ADDR_SPACE_MGR The Address Space Manager
*
* This module contains group APIs for managing the HPS address space. This
* module contains group APIs to manage:
* * Memory Map Control
* * Memory Coherence
* * Cache Managment
* * MMU Managment
*
* @{
*/
/******************************************************************************/
/*! \addtogroup ADDR_SPACE_MGR_REMAP Address Space Mapping Control
*
* This group API provides functions to map and remap selected address ranges
* into the accessible (visible) views of the MPU and non MPU address spaces.
*
* \b Caveats
*
* \b NOTE: Caution should be observed when remapping address 0 to different
* memory. The code performing the remapping operation should not be executing
* in the address range being remapped to different memory.
*
* For example, if address 0 is presently mapped to OCRAM and the code is
* preparing to remap address 0 to SDRAM, then the code must not be executing in
* the range 0 to 64 KB as this address space is about to be remapped to
* different memory. If the code performing the remap operation is executing
* from OCRAM then it needs to be executing from its permanently mapped OCRAM
* address range in upper memory (i.e. ALT_OCRAM_LB_ADDR to ALT_OCRAM_UB_ADDR).
*
* \b NOTE: The MPU address space view is controlled by two disparate hardware
* control interfaces: the L3 remap register and the L2 cache address filtering
* registers. To complicate matters, the L3 remap register is write-only which
* means not only that current remap register state cannot be read but also that
* a read-modify-write operation cannot be performed on the register.
*
* This should not present a problem in most use case scenarios except for the
* case where a current MPU address space mapping of 0 to SDRAM is being changed
* to to a mapping of 0 to Boot ROM or OCRAM.
*
* In this case, a two step process whereby the L3 remap register is first set
* to the new desired MPU address 0 mapping and then the L2 cache address
* filtering registers have their address ranges adjusted accordingly must be
* followed. An example follows:
\verbatim
// 1 MB reset default value for address filtering start
#define L2_CACHE_ADDR_FILTERING_START_RESET 0x100000
uint32_t addr_filt_start;
uint32_t addr_filt_end;
// Perform L3 remap register programming first by setting the desired new MPU
// address space 0 mapping. Assume OCRAM for the example.
alt_addr_space_remap(ALT_ADDR_SPACE_MPU_ZERO_AT_OCRAM, ...);
// Next, adjust the L2 cache address filtering range. Set the start address to
// the default reset value and retain the existing end address configuration.
alt_l2_addr_filter_cfg_get(&addr_filt_start, &addr_filt_end);
if (addr_filt_start != L2_CACHE_ADDR_FILTERING_START_RESET)
{
alt_l2_addr_filter_cfg_set(L2_CACHE_ADDR_FILTERING_START_RESET, addr_filt_end);
}
\endverbatim
* @{
*/
/******************************************************************************/
/*!
* This type definition enumerates the MPU address space attributes.
*
* The MPU address space consists of the ARM Cortex A9 processors and associated
* processor peripherals (cache, MMU).
*/
typedef enum ALT_ADDR_SPACE_MPU_ATTR_e
{
ALT_ADDR_SPACE_MPU_ZERO_AT_BOOTROM, /*!< Maps the Boot ROM to address
* 0x0 for the MPU L3 master. Note
* that the Boot ROM is also
* always mapped to address
* 0xfffd_0000 for the MPU L3
* master independent of
* attribute.
*/
ALT_ADDR_SPACE_MPU_ZERO_AT_OCRAM /*!< Maps the On-chip RAM to address
* 0x0 for the MPU L3 master. Note
* that the On-chip RAM is also
* always mapped to address
* 0xffff_0000 for the MPU L3
* master independent of this
* attribute.
*/
} ALT_ADDR_SPACE_MPU_ATTR_t;
/******************************************************************************/
/*!
* This type definition enumerates the non-MPU address space attributes.
*
* The non-MPU address space consists of the non-MPU L3 masters including the
* DMA controllers (standalone and those built into peripherals), the F2H AXI
* Bridge, and the DAP.
*/
typedef enum ALT_ADDR_SPACE_NONMPU_ATTR_e
{
ALT_ADDR_SPACE_NONMPU_ZERO_AT_SDRAM, /*!< Maps the SDRAM to address 0x0
* for the non-MPU L3 masters.
*/
ALT_ADDR_SPACE_NONMPU_ZERO_AT_OCRAM /*!< Maps the On-chip RAM to address
* 0x0 for the non-MPU L3
* masters. Note that the On-chip
* RAM is also always mapped to
* address 0xffff_0000 for the
* non-MPU L3 masters independent
* of this attribute.
*/
} ALT_ADDR_SPACE_NONMPU_ATTR_t;
/******************************************************************************/
/*!
* This type definition enumerates the HPS to FPGA bridge accessiblity
* attributes.
*/
typedef enum ALT_ADDR_SPACE_H2F_BRIDGE_ATTR_e
{
ALT_ADDR_SPACE_H2F_INACCESSIBLE, /*!< The H2F AXI Bridge is not
* visible to L3 masters. Accesses
* to the associated address range
* return an AXI decode error to
* the master.
*/
ALT_ADDR_SPACE_H2F_ACCESSIBLE /*!< The H2F AXI Bridge is visible
* to L3 masters.
*/
} ALT_ADDR_SPACE_H2F_BRIDGE_ATTR_t;
/******************************************************************************/
/*!
* This type definition enumerates the Lightweight HPS to FPGA bridge
* accessiblity attributes.
*/
typedef enum ALT_ADDR_SPACE_LWH2F_BRIDGE_ATTR_e
{
ALT_ADDR_SPACE_LWH2F_INACCESSIBLE, /*!< The LWH2F AXI Bridge is not
* visible to L3 masters. Accesses
* to the associated address range
* return an AXI decode error to
* the master.
*/
ALT_ADDR_SPACE_LWH2F_ACCESSIBLE /*!< The LWH2F AXI Bridge is visible
* to L3 masters.
*/
} ALT_ADDR_SPACE_LWH2F_BRIDGE_ATTR_t;
/******************************************************************************/
/*!
* Configures the mapped and accessible (visible) address ranges for the HPS
* MPU, non-MPU, and Bridge address spaces.
*
* \param mpu_attr
* The MPU address space configuration attributes.
*
* \param nonmpu_attr
* The non-MPU address space configuration attributes.
*
* \param h2f_attr
* The H2F Bridge attribute mapping and accessibility attributes.
*
* \param lwh2f_attr
* The Lightweight H2F Bridge attribute mapping and accessibility
* attributes.
*
*
* \retval ALT_E_SUCCESS The operation was succesful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_INV_OPTION One or more invalid attribute options were
* specified.
*/
ALT_STATUS_CODE alt_addr_space_remap(ALT_ADDR_SPACE_MPU_ATTR_t mpu_attr,
ALT_ADDR_SPACE_NONMPU_ATTR_t nonmpu_attr,
ALT_ADDR_SPACE_H2F_BRIDGE_ATTR_t h2f_attr,
ALT_ADDR_SPACE_LWH2F_BRIDGE_ATTR_t lwh2f_attr);
/******************************************************************************/
/*!
* Maps SDRAM to address 0x0 for the MPU address space view.
*
* When address 0x0 is mapped to the Boot ROM or on-chip RAM, only the lowest
* 64KB of the boot region are accessible because the size of the Boot ROM and
* on-chip RAM are only 64KB. Addresses in the range 0x100000 (1MiB) to
* 0xC0000000 (3GiB) access SDRAM and addresses in the range 0xC0000000 (3GiB) to
* 0xFFFFFFFF access the L3 interconnect. Thus, the lowest 1MiB of SDRAM is not
* accessible to the MPU unless address 0 is remapped to SDRAM after reset.
*
* This function remaps the addresses between 0x0 to 0x100000 (1MiB) to access
* SDRAM.
*
* \internal
* The remap to address 0x0 is achieved by configuring the L2 cache Address
* Filtering Registers to redirect address 0x0 to \e sdram_end_addr to the SDRAM
* AXI (M1) master port by calling:
*
* alt_l2_addr_filter_cfg_set(0x0, <current_addr_filt_end_value>);
*
* See: <em>ARM DDI 0246F, CoreLink Level 2 Cache Controller L2C-310 Technical
* Reference Manual, Section 3.3.12 Address Filtering </em>.
* \endinternal
*
* \retval ALT_E_SUCCESS The operation was succesful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_mpu_addr_space_remap_0_to_sdram(void);
/*! @} */
/******************************************************************************/
/*! \addtogroup L2_ADDR_FLTR L2 Cache Address Filter
*
* The L2 cache address filter controls where physical addresses within certain
* ranges of the MPU address space are directed.
*
* The L2 cache has master port connections to the L3 interconnect and the SDRAM
* controller. A programmable address filter controls which portions of the
* 32-bit physical address space use each master.
*
* When l2 address filtering is configured and enabled, a physical address will
* be redirected to one master or the other based upon the address filter
* configuration.
*
* If \b address_filter_start <= \e physical_address < \b address_filter_end:
* * then redirect \e physical_address to AXI Master Port M1 (SDRAM controller)
* * else redirect \e physical_address to AXI Master Port M0 (L3 interconnect)
*
* See: <em>ARM DDI 0246F, CoreLink Level 2 Cache Controller L2C-310 Technical
* Reference Manual, Section 3.3.12 Address Filtering </em> for more information.
* @{
*/
/******************************************************************************/
/*!
* Get the L2 cache address filtering configuration settings.
*
* \param addr_filt_start
* [out] An output parameter variable for the address filtering
* start address for the range of physical addresses redirected to
* the SDRAM AXI master port. The value returned is always a 1 MiB
* aligned address.
*
* \param addr_filt_end
* [out] An output parameter variable for the address filtering
* end address for the range of physical addresses redirected to
* the SDRAM AXI master port. The value returned is always a 1 MiB
* aligned address.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_BAD_ARG An bad argument was passed. Either \e addr_filt_start
* or \e addr_filt_end or both are invalid addresses.
*/
ALT_STATUS_CODE alt_l2_addr_filter_cfg_get(uint32_t* addr_filt_start,
uint32_t* addr_filt_end);
/******************************************************************************/
/*!
* Set the L2 cache address filtering configuration settings.
*
* Address filtering start and end values must be 1 MiB aligned.
*
* \param addr_filt_start
* The address filtering start address for the range of physical
* addresses redirected to the SDRAM AXI master port. Only bits
* [31:20] of the address are valid. Any bits outside the range
* [31:20] are invalid and will cause an error status to be
* returned.
*
* \param addr_filt_end
* The address filtering end address for the range of physical
* addresses redirected to the SDRAM AXI master port. Only bits
* [31:20] of the address are valid. Any bits outside the range
* [31:20] are invalid and will cause an error status to be
* returned.
*
* \retval ALT_E_SUCCESS The operation was succesful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_ARG_RANGE An argument violates a range constraint. One or
* more address arguments do not satisfy the argument
* constraints.
*/
ALT_STATUS_CODE alt_l2_addr_filter_cfg_set(uint32_t addr_filt_start,
uint32_t addr_filt_end);
/*! @} */
/******************************************************************************/
/*! \addtogroup ADDR_SPACE_MGR_MEM_COHERENCE ACP Memory Coherence and ID Mapping
*
* This API provides management of the ACP ID Mapper that enables data coherent
* access to the MPU address space by external masters. The set of external
* masters include L3 master peripherals and FPGA soft IP.
*
* The Accelerator Coherency Port (ACP) allows peripherals - including FPGA
* based soft IP - to maintain data coherency with the Cortex-A9 MPCore
* processors and the Snoop Control Unit (SCU).
*
* The ACP supports up to six masters. However, soft IP implemented in the FPGA
* fabric can have a larger number of masters that need to access the ACP. The
* ACP ID Mapper expands the number of masters able to access the ACP. The ACP
* ID Mapper is situated between the interconnect and the ACP of the MPU
* subsystem. It has the following characteristics:
* * Support for up to six concurrent ID mappings.
* * 1 GiB coherent window into 4 GiB MPU address space
* * Remaps the 5-bit user sideband signals used by the Snoop Control Unit (SCU)
* and L2 cache.
*
* The function of the ACP ID Mapper is to map 12-bit Advanced Microcontroller
* Bus Architecture (AMBA) Advanced eXtensible Interface (AXI) IDs (input
* identifiers) from the Level 3 (L3) interconnect to 3-bit AXI IDs (output
* identifiers) required by the ACP slave port.
*
* The ACP ID Mapper supports the two ID mapping modes:
* * Dynamic Mapping - In this mode an input ID is automatically mapped to an
* available output ID. The dynamic mode is more flexible because the hardware
* handles the mapping. The hardware mapping allows an output ID to be used
* for more than one input ID. Output IDs are assigned to input IDs on a
* first-come, first-served basis.
* * Fixed Mapping - In this mode there is a one-to-one mapping from input IDs
* to output IDs.
*
* Out of the total of eight ACP output ID values, only six are available to the
* ACP ID Mapper for remapping. The first two output IDs (0 and 1) are
* dedicated to the Cortex-A9 processor cores in the MPU subsystem, leaving the
* last six output IDs (2-7) available to the ACP ID mapper. Output IDs 2-6
* support fixed and dynamic modes of operation while output ID 7 supports
* dynamic mode only.
*
* The following table summarizes the usage of the 3-bit ouput ID values by the
* ACP ID Mapper and their settings at reset.
*
* Output ID | Usage | Reset State
* :-----------|:--------------------------------------------------|:------------
* 0 | Reserved for Cortex-A9 cores. | -
* 1 | Reserved for Cortex-A9 cores. | -
* 2 | Assigned to Debug Access Port (DAP) input ID at | Fixed
* : | reset. After reset, can be reconfigured to either | DAP Master
* : | fixed or dynamic. |:
* 3 | Configurable fixed or dynamic mode. | Dynamic
* 4 | Configurable fixed or dynamic mode. | Dynamic
* 5 | Configurable fixed or dynamic mode. | Dynamic
* 6 | Configurable fixed or dynamic mode. | Dynamic
* 7 | Dynamic mode only. | Dynamic
*
* Where <em>Output ID</em> is the ACP ID Mapper output value that goes to the ACP.
*
* Additionally, for masters unable to drive the AXI user sideband signals of
* incoming transactions, the ACP ID Mapper allows control of the AXI user
* sideband signal values. Not all masters drive these signals, so the ACP ID
* Mapper makes it possible to drive the 5-bit user sideband signal with either
* a default value (in dynamic mode) or specific values (in fixed mode).
*
* The ACP ID Mapper can also control which 1 GiB coherent window into memory is
* accessed by masters of the L3 interconnect. Each fixed mapping can be
* assigned a different user sideband signal and memory window to allow specific
* settings for different masters. All dynamic mappings share a common user
* sideband signal and memory window setting. One important exception, however,
* is that the ACP ID mapper always allows user sideband signals from the
* FPGA-to-HPS bridge to pass through to the ACP regardless of the configured
* user sideband value associated with the ID.
*
* The ACP ID Mapper has a 1 GiB address window into the MPU address space, which
* is by default a view into the bottom 1 GiB of SDRAM. The ACP ID Mapper allows
* transactions to be routed to different 1 GiB-sized memory views, called pages,
* in both dynamic and fixed modes.
*
* See: <em>Chapter 6: Cortex-A9 Microprocessor Unit Subsystem</em> in
* <em>Volume 3: Hard Processor System Technical Reference Manual</em> of the
* <em>Arria V or Cyclone V Device Handbook</em> for a complete discussion of
* the operation and restrictions on the ACP and the ACP ID Mapper.
*
* @{
*/
/******************************************************************************/
/*!
* \name External Master ID Macros
*
* These macros define the HPS external master identifiers that are 12-bit input
* IDs to the ACP ID Mapper. Some of the masters have a range of identifier
* values assigned to them and are distinguished by taking a <em>(var)\</em>
* argument.
* @{
*/
/*! Bit mask for the relevant 12 bits of an external master ID */
#define ALT_ACP_ID_MAP_MASTER_ID_MASK 0xfff
/*! Master ID for L2M0 */
#define ALT_ACP_ID_MAP_MASTER_ID_L2M0(var) (0x00000002 | (0x000007f8 & (var)))
/*! Master ID for DMA */
#define ALT_ACP_ID_MAP_MASTER_ID_DMA(var) (0x00000001 | (0x00000078 & (var)))
/*! Master ID for EMAC0 */
#define ALT_ACP_ID_MAP_MASTER_ID_EMAC0(var) (0x00000801 | (0x00000878 & (var)))
/*! Master ID for EMAC1 */
#define ALT_ACP_ID_MAP_MASTER_ID_EMAC1(var) (0x00000802 | (0x00000878 & (var)))
/*! Master ID for USB0 */
#define ALT_ACP_ID_MAP_MASTER_ID_USB0 0x00000803
/*! Master ID for USB1 */
#define ALT_ACP_ID_MAP_MASTER_ID_USB1 0x00000806
/*! Master ID for NAND controller */
#define ALT_ACP_ID_MAP_MASTER_ID_NAND(var) (0x00000804 | (0x00000ff8 & (var)))
/*! Master ID for Embedded Trace Router (ETR) */
#define ALT_ACP_ID_MAP_MASTER_ID_TMC 0x00000800
/*! Master ID for Debug Access Port (DAP) */
#define ALT_ACP_ID_MAP_MASTER_ID_DAP 0x00000004
/*! Master ID for SD/MMC controller */
#define ALT_ACP_ID_MAP_MASTER_ID_SDMMC 0x00000805
/*! Master ID for FPGA to HPS (F2H) bridge - conduit for soft IP masters in FPGA fabric */
#define ALT_ACP_ID_MAP_MASTER_ID_F2H(var) (0x00000000 | (0x000007f8 & (var)))
/*! @} */
/******************************************************************************/
/*!
* This type defines the enumerations 3-bit output ids to ACP ID mapper.
*/
typedef enum ALT_ACP_ID_OUTPUT_ID_e
{
ALT_ACP_ID_OUT_FIXED_ID_2 = 2, /*!< Assigned to the input ID of the DAP at reset.
* After reset, can be either fixed or dynamic,
* programmed by software.
*/
ALT_ACP_ID_OUT_DYNAM_ID_3 = 3, /*!< Fixed or dynamic, programmed by software output id */
ALT_ACP_ID_OUT_DYNAM_ID_4 = 4, /*!< Fixed or dynamic, programmed by software output id */
ALT_ACP_ID_OUT_DYNAM_ID_5 = 5, /*!< Fixed or dynamic, programmed by software output id */
ALT_ACP_ID_OUT_DYNAM_ID_6 = 6, /*!< Fixed or dynamic, programmed by software output id */
ALT_ACP_ID_OUT_DYNAM_ID_7 = 7 /*!< Dynamic mapping only */
} ALT_ACP_ID_OUTPUT_ID_t;
/*!
* This type defines the enumerations used to specify the 1 GiB page view of the
* MPU address space used by an ACP ID mapping configuration.
*/
typedef enum ALT_ACP_ID_MAP_PAGE_e
{
ALT_ACP_ID_MAP_PAGE_0 = 0, /*!< Page 0 - MPU address range 0x00000000 - 0x3FFFFFFF */
ALT_ACP_ID_MAP_PAGE_1 = 1, /*!< Page 1 - MPU address range 0x40000000 - 0x7FFFFFFF */
ALT_ACP_ID_MAP_PAGE_2 = 2, /*!< Page 2 - MPU address range 0x80000000 - 0xBFFFFFFF */
ALT_ACP_ID_MAP_PAGE_3 = 3 /*!< Page 3 - MPU address range 0xC0000000 - 0xFFFFFFFF */
} ALT_ACP_ID_MAP_PAGE_t;
/******************************************************************************/
/*!
* Configure a fixed ACP ID mapping for read transactions originating from
* external masters identified by \e input_id. The \e input_id value is
* translated to the specified 3-bit \e output_id required by the ACP slave
* port.
*
* \param input_id
* The 12 bit external master ID originating read transactions
* targeted for ID translation. Valid argument range must be 0 <=
* \e output_id <= 4095.
*
* \param output_id
* The 3-bit output ID value the ACP ID Mapper translates read
* transactions identified by \e input_id to. This is the value
* propogated to the ACP slave port. Valid argument values must be
* 0 <= \e output_id <= 7.
*
* \param page
* The MPU address space page view to use for the ACP window used
* by the ID tranlation mapping.
*
* \param aruser
* The 5-bit AXI ARUSER read user sideband signal value to use for
* masters unable to drive the AXI user sideband signals. Valid
* argument range is 0 <= \e aruser <= 31.
*
* \retval ALT_E_SUCCESS The operation was succesful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_RESERVED The argument value is reserved or unavailable.
* \retval ALT_E_ARG_RANGE An argument violates a range constraint. One or
* more of the \e input_id, and/or \e output_id
* arguments violates its range constraint.
* \retval ALT_E_BAD_ARG The \e page argument is invalid.
*/
ALT_STATUS_CODE alt_acp_id_map_fixed_read_set(const uint32_t input_id,
const uint32_t output_id,
const ALT_ACP_ID_MAP_PAGE_t page,
const uint32_t aruser);
/******************************************************************************/
/*!
* Configure a fixed ACP ID mapping for write transactions originating from
* external masters identified by \e input_id. The \e input_id value is
* translated to the specified 3-bit \e output_id required by the ACP slave
* port.
*
* \param input_id
* The 12 bit external master ID originating write transactions
* targeted for ID translation. Valid argument range must be 0 <=
* \e output_id <= 4095.
*
* \param output_id
* The 3-bit output ID value the ACP ID Mapper translates write
* transactions identified by \e input_id to. This is the value
* propogated to the ACP slave port. Valid argument values must be
* 0 <= \e output_id <= 7.
*
* \param page
* The MPU address space page view to use for the ACP window used
* by the ID tranlation mapping.
*
* \param awuser
* The 5-bit AXI AWUSER write user sideband signal value to use for
* masters unable to drive the AXI user sideband signals. Valid
* argument range is 0 <= \e awuser <= 31.
*
* \retval ALT_E_SUCCESS The operation was succesful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_RESERVED The argument value is reserved or unavailable.
* \retval ALT_E_ARG_RANGE An argument violates a range constraint. One or
* more of the \e input_id, and/or \e output_id
* arguments violates its range constraint.
* \retval ALT_E_BAD_ARG The \e page argument is invalid.
*/
ALT_STATUS_CODE alt_acp_id_map_fixed_write_set(const uint32_t input_id,
const uint32_t output_id,
const ALT_ACP_ID_MAP_PAGE_t page,
const uint32_t awuser);
/******************************************************************************/
/*!
* Configure the designated 3-bit output ID as an available identifier resource
* for use by the dynamic ID mapping function of the ACP ID Mapper for read
* transactions. The \e output_id value is available for dynamic assignment to
* external master read transaction IDs that do not have an explicit fixed ID
* mapping.
*
* \param output_id
* The 3-bit output ID value designated as an available ID for use
* by the dynamic mapping function of the ACP ID Mapper. The \e
* ouput_id value is used exclusively for dynamic ID mapping until
* reconfigured as a fixed ID mapping by a call to
* alt_acp_id_map_fixed_read_set(). Valid argument values must be
* 0 <= \e output_id <= 7.
*
* \retval ALT_E_SUCCESS The operation was succesful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_RESERVED The argument value is reserved or unavailable.
* \retval ALT_E_ARG_RANGE An argument violates a range constraint.
*/
ALT_STATUS_CODE alt_acp_id_map_dynamic_read_set(const uint32_t output_id);
/******************************************************************************/
/*!
* Configure the designated 3-bit output ID as an available identifier resource
* for use by the dynamic ID mapping function of the ACP ID Mapper for write
* transactions. The \e output_id value is available for dynamic assignment to
* external master write transaction IDs that do not have an explicit fixed ID
* mapping.
*
* \param output_id
* The 3-bit output ID value designated as an available ID for use
* by the dynamic mapping function of the ACP ID Mapper. The \e
* ouput_id value is used exclusively for dynamic ID mapping until
* reconfigured as a fixed ID mapping by a call to
* alt_acp_id_map_fixed_write_set(). Valid argument values must be
* 0 <= \e output_id <= 7.
*
* \retval ALT_E_SUCCESS The operation was succesful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_RESERVED The argument value is reserved or unavailable.
* \retval ALT_E_ARG_RANGE An argument violates a range constraint.
*/
ALT_STATUS_CODE alt_acp_id_map_dynamic_write_set(const uint32_t output_id);
/******************************************************************************/
/*!
* Configure the page and user read sideband signal options that are applied to
* all read transactions that have their input IDs dynamically mapped.
*
* \param page
* The MPU address space page view to use for the ACP window used
* by the dynamic ID tranlation mapping.
*
* \param aruser
* The 5-bit AXI ARUSER read user sideband signal value to use for
* masters unable to drive the AXI user sideband signals. Valid
* argument range is 0 <= \e aruser <= 31.
*
* \retval ALT_E_SUCCESS The operation was succesful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_RESERVED The argument value is reserved or unavailable.
* \retval ALT_E_ARG_RANGE An argument violates a range constraint. One or
* more of the \e page and/or \e aruser
* arguments violates its range constraint.
* \retval ALT_E_BAD_ARG The \e mid argument is not a valid master
* identifier.
*/
ALT_STATUS_CODE alt_acp_id_map_dynamic_read_options_set(const ALT_ACP_ID_MAP_PAGE_t page,
const uint32_t aruser);
/******************************************************************************/
/*!
* Configure the page and user write sideband signal options that are applied to
* all write transactions that have their input IDs dynamically mapped.
*
* \param page
* The MPU address space page view to use for the ACP window used
* by the dynamic ID tranlation mapping.
*
* \param awuser
* The 5-bit AXI AWUSER write user sideband signal value to use for
* masters unable to drive the AXI user sideband signals. Valid
* argument range is 0 <= \e aruser <= 31.
*
* \retval ALT_E_SUCCESS The operation was succesful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_RESERVED The argument value is reserved or unavailable.
* \retval ALT_E_ARG_RANGE An argument violates a range constraint. One or
* more of the \e page and/or \e awuser
* arguments violates its range constraint.
* \retval ALT_E_BAD_ARG The \e mid argument is not a valid master
* identifier.
*/
ALT_STATUS_CODE alt_acp_id_map_dynamic_write_options_set(const ALT_ACP_ID_MAP_PAGE_t page,
const uint32_t awuser);
/******************************************************************************/
/*!
* Return the current read transaction mapping configuration used by the ACP ID
* Mapper for the specified output ID.
*
* If \e output_id is configured as a fixed mapping then \b true is returned in
* the \e fixed output parameter and the translation mapping options configured
* for that \e output_id are returned in the other output parameters.
*
* If \e output_id is configured as a dynamic mapping then \b false is returned
* in the \e fixed output parameter and the translation mapping options
* configured for all dynamically remapped output IDs are returned in the other
* output parameters.
*
* \param output_id
* The output ID to return the mapping configuration for. 0 <= \e
* output_id <= 7.
*
* \param fixed
* [out] Set to \b true if the specified \e output_id is a fixed ID
* mapping configuration. Set to \b false if the mapping
* configuration is dynamic.
*
* \param input_id
* [out] The input ID of the external master that a fixed ID
* mapping is applied to for the \e output_id. If \e fixed is \b
* false then this output parameter is set to 0 and its value
* should be considered as not applicable.
*
* \param page
* [out] The MPU address space page view used by the mapping
* configuration.
*
* \param aruser
* [out] The 5-bit AXI ARUSER read user sideband signal value used
* by the mapping configuration when masters are unable to drive
* the AXI user sideband signals.
*
* \retval ALT_E_SUCCESS The operation was succesful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_RESERVED The argument value is reserved or unavailable.
* \retval ALT_E_ARG_RANGE An argument violates a range constraint. The \e
* output_id argument violates its range constraint.
*/
ALT_STATUS_CODE alt_acp_id_map_read_options_get(const uint32_t output_id,
bool* fixed,
uint32_t* input_id,
ALT_ACP_ID_MAP_PAGE_t* page,
uint32_t* aruser);
/******************************************************************************/
/*!
* Return the current write transaction mapping configuration used by the ACP ID
* Mapper for the specified output ID.
*
* If \e output_id is configured as a fixed mapping then \b true is returned in
* the \e fixed output parameter and the translation mapping options configured
* for that \e output_id are returned in the other output parameters.
*
* If \e output_id is configured as a dynamic mapping then \b false is returned
* in the \e fixed output parameter and the translation mapping options
* configured for all dynamically remapped output IDs are returned in the other
* output parameters.
*
* \param output_id
* The output ID to return the mapping configuration for. 0 <= \e
* output_id <= 7.
*
* \param fixed
* [out] Set to \b true if the specified \e output_id is a fixed ID
* mapping configuration. Set to \b false if the mapping
* configuration is dynamic.
*
* \param input_id
* [out] The input ID of the external master that a fixed ID
* mapping is applied to for the \e output_id. If \e fixed is \b
* false then this output parameter is set to 0 and its value
* should be considered as not applicable.
*
* \param page
* [out] The MPU address space page view used by the mapping
* configuration.
*
* \param awuser
* [out] The 5-bit AXI AWUSER write user sideband signal value used
* by the mapping configuration when masters are unable to drive
* the AXI user sideband signals.
*
* \retval ALT_E_SUCCESS The operation was succesful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_RESERVED The argument value is reserved or unavailable.
* \retval ALT_E_ARG_RANGE An argument violates a range constraint. The \e
* output_id argument violates its range constraint.
*/
ALT_STATUS_CODE alt_acp_id_map_write_options_get(const uint32_t output_id,
bool* fixed,
uint32_t* input_id,
ALT_ACP_ID_MAP_PAGE_t* page,
uint32_t* awuser);
/*! @} */
/*! @} */
#endif /* __ASSEMBLY__ */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __ALT_ADDRESS_SPACE_H__ */

View File

@@ -1,970 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/******************************************************************************
*
* Copyright 2013 Altera Corporation. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
******************************************************************************/
#ifndef __ALT_CACHE_H__
#define __ALT_CACHE_H__
#include "hwlib.h"
#ifdef __cplusplus
extern "C"
{
#endif
/*!
* \addtogroup CACHE_MGR Cache Management API
*
* This module defines the cache management API for enabling and disabling L1
* data cache, L1 instruction cache, L1 dynamic branch prediction caches, L1
* TLB cache, and L2 cache in the SoC. As well, many it allows users to perform
* cache maintenance operations on these caches. This includes the following
* operations:
* * Invalidate: Marks the cache line as being invalid, freeing up the space
* to cache other data. All APIs which enable caches invalidates the memory
* before being enabling the cache.
* * Clean: If the cache line is dirty, it synchronizes the cache line data
* with the upper level memory system and marks that line as clean. All APIs
* which disable caches cleans the memory before disabling the cache.
* * Purge: A term used in this API as a short form for clean and invalidate.
* This operation cleans and invalidates a cache line in that order, as a
* single command to the cache controller.
*
* The following reference materials were used in the design of this API:
* * ARM&reg; Architecture Reference Manual, ARMv7-A and ARMv7-R edition
* * Cortex&trade;-A9 Technical Reference Manual
* * Cortex&trade;-A9 MPCore Technical Reference Manual
* * CoreLink&trade; Level 2 Cache Controller L2C-310 Technical Reference
* Manual
*
* @{
*/
/*!
* \addtogroup CACHE_SYS System Level Cache Management API
*
* This API group provides cache maintenance operations which affects multiple
* cache levels.
*
* The enable and disable functions enables and disables all caches in the
* system respectively. For caches shared by the CPU core(s), particularly the
* L2 cache, once that cache is enabled or disabled it will not be invalidated
* or cleaned again respectively. This allows the safe system-wide enable and
* disable to be used in single-core and multi-core scenarios.
*
* For cache maintenance operations, this API implements the procedures
* outlined in the L2C-310 Technical Reference Manual, section 3.3.10,
* subsection "System cache maintenance considerations". This allows for a
* convenient way to invalidate, clean, or clean and invalidate cache data from
* the L1 to L2 to L3 while avoiding any potential race conditions in
* mutli-core or multi-master scenarios. It assumes that the L1 and L2 cache is
* set in "non-exclusive" mode. This means a segment of data can reside in both
* the L1 and L2 simultaneously. This is the default mode for caches in the
* system.
*
* The current implementation of the system cache APIs assumes that the MMU is
* configured with a flat memory mapping or that every virtual address matches
* perfectly with the physical address. This restriction may be lifted in a
* future release of the cache API implementation.
*
* @{
*/
/*!
* Enables support for a non-flat virtual memory. A flat virtual memory is
* where every virtual address matches exactly to the physical address, making
* the virtual to physical translation trivial. Adding support for non-flat
* adds some overhead for the VA to PA translation and error detection.
*
* To enable non-flat virtual memory support, defined
* ALT_CACHE_SUPPORT_NON_FLAT_VIRTUAL_MEMORY=1 in your Makefile when compiling
* HWLibs.
*/
#ifndef ALT_CACHE_SUPPORT_NON_FLAT_VIRTUAL_MEMORY
#define ALT_CACHE_SUPPORT_NON_FLAT_VIRTUAL_MEMORY (0)
#endif
/*!
* This is the system wide cache line size, given in bytes.
*/
#define ALT_CACHE_LINE_SIZE 32
/*!
* Enables all caches and features which improve reliability and speed on all
* cache controllers visible to the current CPU core. This includes parity
* error detection. Cache controllers visible to multiple CPU cores, for
* example the L2, will first be checked to be disabled before being enabled.
* All necessary cache maintenance operations will be done automatically.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_system_enable(void);
/*!
* Disables all cache controllers visible to the current CPU core. Cache
* controllers visible to multiple CPU cores, for example the L2, will first
* be checked to be enabled before being disabled. All necessary cache
* maintenance operations will be done automatically.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_system_disable(void);
/*!
* Invalidates the specified contents of all cache levels visible to the
* current CPU core for the given memory segment.
*
* The memory segment address and length specified must align to the
* characteristics of the cache line. This means the address and length must be
* multiples of the cache line size. To determine the cache line size, use the
* \b ALT_CACHE_LINE_SIZE macro.
*
* The following pseudocode outlines the operations carried out by this
* function:
* -# L2 invalidate address(es)
* -# L2 cache sync
* -# L1 invalidate address(es)
* -# DSB instruction
*
* The current implementation of the system cache APIs assumes that the MMU is
* configured with a flat memory mapping or that every virtual address matches
* perfectly with the physical address. This restriction may be lifted in a
* future release of the cache API implementation.
*
* \param vaddress
* The virtual address of the memory segment to be invalidated.
*
* \param length
* The length of the memory segment to be invalidated.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_BAD_ARG The memory segment is invalid.
* \retval ALT_E_TMO The memory operation timed out.
*/
ALT_STATUS_CODE alt_cache_system_invalidate(void * vaddress, size_t length);
/*!
* Cleans the specified contents of all cache levels visible to the current
* CPU core for the given memory segment.
*
* The memory segment address and length specified must align to the
* characteristics of the cache line. This means the address and length must be
* multiples of the cache line size. To determine the cache line size, use the
* \b ALT_CACHE_LINE_SIZE macro.
*
* The following pseudocode outlines the operations carried out by this
* function:
* -# L1 clean address(es)
* -# DSB instruction
* -# L2 clean address(es)
* -# L2 cache sync
*
* The current implementation of the system cache APIs assumes that the MMU is
* configured with a flat memory mapping or that every virtual address matches
* perfectly with the physical address. This restriction may be lifted in a
* future release of the cache API implementation.
*
* \param vaddress
* The virtual address of the memory segment to be cleaned.
*
* \param length
* The length of the memory segment to be cleaned.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_BAD_ARG The memory segment is invalid.
* \retval ALT_E_TMO The memory operation timed out.
*/
ALT_STATUS_CODE alt_cache_system_clean(void * vaddress, size_t length);
/*!
* Cleans and invalidates the specified contents of all cache levels visible
* to the current CPU core for the given memory segment.
*
* The memory segment address and length specified must align to the
* characteristics of the cache line. This means the address and length must be
* multiples of the cache line size. To determine the cache line size, use the
* \b ALT_CACHE_LINE_SIZE macro.
*
* The following pseudocode outlines the operations carried out by this
* function:
* -# L1 clean address(es)
* -# DSB instruction
* -# L2 clean and invalidate address(es)
* -# L2 cache sync
* -# L1 invalidate address(es)
* -# DSB instruction
*
* The current implementation of the system cache APIs assumes that the MMU is
* configured with a flat memory mapping or that every virtual address matches
* perfectly with the physical address. This restriction may be lifted in a
* future release of the cache API implementation.
*
* \param vaddress
* The virtual address of the memory segment to be purged.
*
* \param length
* The length of the memory segment to be purged.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_BAD_ARG The memory segment is invalid.
* \retval ALT_E_TMO The memory operation timed out.
*/
ALT_STATUS_CODE alt_cache_system_purge(void * vaddress, size_t length);
/*!
* @}
*/
/*!
* \addtogroup CACHE_L1 L1 Cache Management API
*
* This API group provides functions to interact with various components of the
* L1 cache on the SoCFPGA. This includes the following cache components:
* * Instruction Cache
* * Data Cache
* * Parity error detection
* * Dynamic branch prediction
* * Data prefetching
*
* The API within this group only affects the L1 cache on the current CPU. To
* interact the L1 cache on another CPU, the API must be called from that other
* CPU.
*
* With respect to bring-up, the L1 and L2 cache controller setups are fully
* independent. The L2 can be setup at any time, before or after the L1 is setup.
* \internal
* Source: Cortex-A9 MPCore TRM, section 5.3.4 "Multiprocessor bring-up".
* \endinternal
*
* @{
*/
/*!
* Enables all L1 caches and features on the current CPU core. This includes
* the instruction cache, data cache, parity error detection, branch target
* address cache, global history buffer, and data prefetching. All necessary
* maintenance tasks will be taken care of.
*
* This function should not be mixed with other L1 cache related functions
* which enable or disable caches individually.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_enable_all(void);
/*!
* Disables all L1 caches and features on the current CPU core. This includes
* the instruction cache, data cache, parity error detection, branch target
* address cache, global history buffer, and data prefetching. All necessary
* maintenance tasks will be taken care of.
*
* This function should not be mixed with other L1 cache related functions
* which enable or disable caches individually.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_disable_all(void);
/*!
* Enables the L1 instruction cache on the current CPU core. If the cache is
* already enabled, nothing is done. Otherwise the instruction cache is first
* invalidated before being enabled.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_instruction_enable(void);
/*!
* Disables the L1 instruction cache on the current CPU core.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_instruction_disable(void);
/*!
* Returns \b true when the L1 instruction cache is enabled and \b false when
* it is disabled on the current CPU core.
*
* \retval true The L1 instruction cache is enabled.
* \retval false The L1 instruction cache is disabled.
*/
bool alt_cache_l1_instruction_is_enabled(void);
/*!
* Invalidates the contents of the L1 instruction cache on the current CPU
* core.
*
* Normally this is done automatically as part of
* alt_cache_l1_instruction_enable(), but in certain circumstances it may be
* necessary to invalidate it manually. An example of this situation is when
* the address space is remapped and the processor executes instructions from
* the new memory area.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_instruction_invalidate(void);
/*!
* Enables the L1 data cache on the current CPU core.
*
* If the cache is already enabled nothing is done. Otherwise the data cache is
* first invalidated before being enabled.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_data_enable(void);
/*!
* Disables the L1 data cache on the current CPU core.
*
* If the cache is already disabled nothing is done. Otherwise the data cache
* is first cleaned before being disabled.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_data_disable(void);
/*!
* Returns \b true when the L1 data cache is enabled and \b false when it is
* disabled on the current CPU core.
*
* \retval true The L1 data cache is enabled.
* \retval false The L1 data cache is disabled.
*/
bool alt_cache_l1_data_is_enabled(void);
/*!
* Invalidates the specified contents of the L1 data cache on the current CPU
* core for the given memory segment.
*
* The memory segment address and length specified must align to the
* characteristics of the cache line. This means the address and length must be
* multiples of the cache line size. To determine the cache line size, use the
* \b ALT_CACHE_LINE_SIZE macro.
*
* \param vaddress
* The virtual address of the memory segment to be invalidated.
*
* \param length
* The length of the memory segment to be invalidated.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_BAD_ARG The memory segment is invalid.
*/
ALT_STATUS_CODE alt_cache_l1_data_invalidate(void * vaddress, size_t length);
/*!
* Invalidates the entire contents of the L1 data cache on the current CPU
* core.
*
* Normally this is done automatically as part of alt_cache_l1_data_enable(),
* but in certain circumstances it may be necessary to invalidate it manually.
* An example of this situation is when the address space is remapped and the
* processor accesses memory from the new memory area.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_data_invalidate_all(void);
/*!
* Cleans the specified contents of the L1 data cache on the current CPU core
* for the given memory segment.
*
* The memory segment address and length specified must align to the
* characteristics of the cache line. This means the address and length must be
* multiples of the cache line size. To determine the cache line size, use the
* \b ALT_CACHE_LINE_SIZE macro.
*
* \param vaddress
* The virtual address of the memory segment to be cleaned.
*
* \param length
* The length of the memory segment to be cleaned.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_BAD_ARG The memory segment is invalid.
*/
ALT_STATUS_CODE alt_cache_l1_data_clean(void * vaddress, size_t length);
/*!
* Cleans the entire L1 data cache for the current CPU core.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_data_clean_all(void);
/*!
* Cleans and invalidates the specified contents of the L1 data cache on the
* current CPU core for the given memory segment.
*
* The memory segment address and length specified must align to the
* characteristics of the cache line. This means the address and length must be
* multiples of the cache line size. To determine the cache line size, use the
* \b ALT_CACHE_LINE_SIZE macro.
*
* Normally this is done automatically as part of alt_cache_l1_data_disable(),
* but in certain circumstances it may be necessary to purged it manually.
* An example of this situation is when the address space is remapped and the
* processor accesses memory from the new memory area.
*
* \param vaddress
* The virtual address of the memory segment to be purged.
*
* \param length
* The length of the memory segment to be purged.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_BAD_ARG The memory segment is invalid.
*/
ALT_STATUS_CODE alt_cache_l1_data_purge(void * vaddress, size_t length);
/*!
* Cleans and invalidates the entire L1 data cache for the current CPU core.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_data_purge_all(void);
/*!
* Enables the parity error detection feature in the L1 caches on the current
* CPU core.
*
* Ideally parity should be enabled before any L1 caches are enabled. If the
* instruction, data, and / or dynamic branch predictor caches are already
* enabled, they will first be cleaned (if needed) and disabled before parity
* is enabled in hardware. Afterwards, the affected caches will be invalidated
* and enabled.
*
* Parity and TLB interaction deserves special attention. The TLB is considered
* to be a L1 cache but is enabled when the MMU, which is grouped in another
* API, is enabled. Due to the system-wide influence of the MMU, it cannot be
* disabled and enabled with impunity as the other L1 caches, which are
* designed to operate as transparently as possible. Thus parity error
* detection must be enabled before the L1 TLB cache, and by extension the MMU,
* is enabled.
*
* For a parity error to be reported, the appropriate CPU PARITYFAIL interrupt
* for the current CPU core must be enabled using the interrupt controller API.
* For CPU0, ALT_INT_INTERRUPT_CPU0_PARITYFAIL is asserted if any parity error
* is detected while the other PARITYFAIL interrupts are for parity errors in a
* specific memory. Refer to the interrupt controller API for more details
* about programming the interrupt controller.
*
* In the event of a parity error is detected, the appropriate CPU parity
* interrupt will be raised. CPU parity interrupts are all edge triggered and
* are cleared by acknowledging them in the interrupt controller API.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_parity_enable(void);
/*!
* Disables parity error detection in the L1 caches.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_parity_disable(void);
/*!
* Returns \b true when parity error detection is enabled and \b false when it
* is disabled on the current CPU core.
*
* \retval true Parity error detection for L1 caches is
* enabled.
* \retval false Parity error detection for L1 caches is
* disabled.
*/
bool alt_cache_l1_parity_is_enabled(void);
/*!
* Enables the dynamic branch predictor features on the current CPU core.
*
* This operation enables both the Branch Target Address Cache (BTAC) and
* the Global History Buffer (GHB). Affected caches are automatically
* invalidated before use.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_branch_enable(void);
/*!
* Disables the dynamic branch predictor features on the current CPU core.
*
* This operation disables both the Branch Target Address Cache (BTAC) and
* the Global History Buffer (GHB).
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_branch_disable(void);
/*!
* Returns \b true when both the dynamic predictor features are enabled and
* \b false when they are disabled on the current CPU core.
*
* \retval true The L1 branch predictor caches are all enabled.
* \retval false Some or all L1 branch predictor caches are
* disabled.
*/
bool alt_cache_l1_branch_is_enabled(void);
/*!
* Invalidates the dynamic branch predictor feature caches on the current CPU
* core.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_branch_invalidate(void);
/*!
* Enables the L1 cache data prefetch feature on the current CPU core.
*
* This allows data to be prefetched into the data cache before it is to be
* used. For example in a loop the current iteration may want to preload the
* data which will be used in the next teration. This is done by using the PLD
* instructions.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_prefetch_enable(void);
/*!
* Disables the L1 cache data prefetch feature on the current CPU core.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l1_prefetch_disable(void);
/*!
* Returns \b true if the L1 cache data prefetch feature is enabled and
* \b false if it is disabled on the current CPU core.
*
* \retval true The L1 data cache prefetch feature is enabled.
* \retval false The L1 data cache prefetch feature is disabled.
*/
bool alt_cache_l1_prefetch_is_enabled(void);
/*!
* @}
*/
/*!
* \addtogroup CACHE_L2 L2 Cache Management API
*
* This API group provides functions to interact with various features of the
* L2 cache on the SoCFPGA. This includes the following features:
* * L2 cache
* * Parity error detection
* * Data prefetching
* * Interrupt Management
*
* \internal
* Additional features that may be implemented in the future:
* * Lockdown
* * Event counter
* \endinternal
*
* The API within this group affects the L2 cache which is visible to all CPUs
* on the system.
*
* With respect to bring-up, the L1 and L2 cache controller setups are fully
* independent. The L2 can be setup at any time, before or after the L1 is setup.
* \internal
* Source: Cortex-A9 MPCore TRM, section 5.3.4 "Multiprocessor bring-up".
* \endinternal
*
* @{
*/
/*!
* Initializes the L2 cache controller.
*
* \retval ALT_E_SUCCESS Successful status.
* \retval ALT_E_ERROR Details about error status code
*/
ALT_STATUS_CODE alt_cache_l2_init(void);
/*!
* Uninitializes the L2 cache controller.
*
* \retval ALT_E_SUCCESS Successful status.
* \retval ALT_E_ERROR Details about error status code
*/
ALT_STATUS_CODE alt_cache_l2_uninit(void);
/*!
* Enables the L2 cache features for data and instruction prefetching.
*
* Prefetching can be enabled or disabled while the L2 cache is enabled.
* \internal
* Source: Use the Prefetch Control Register.
* \endinternal
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l2_prefetch_enable(void);
/*!
* Disables the L2 cache features for data and instruction prefetching.
*
* Prefetching can be enabled or disabled while the L2 cache is enabled.
* \internal
* Source: Use the Prefetch Control Register.
* \endinternal
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l2_prefetch_disable(void);
/*!
* Returns \b true if either L2 cache data or instruction prefetch features are
* enabled and \b false if no prefetching features are enabled.
*
* \retval true The L2 data and instruction prefetch features
* are enabled.
* \retval false Some L2 data and instruction prefetch features
* are disabled.
*/
bool alt_cache_l2_prefetch_is_enabled(void);
/*!
* Enables parity error detection in the L2 cache.
*
* Ideally parity should be enabled before the L2 cache is enabled. If the
* cache is already enabled, it will first be cleaned and disabled before
* parity is enabled in hardware. Afterwards, the cache will be invalidated and
* enabled.
*
* For a parity error to be reported, the ALT_CACHE_L2_INTERRUPT_PARRD and / or
* ALT_CACHE_L2_INTERRUPT_PARRT interrupt condition(s) must be enabled. This is
* done by calling alt_cache_l2_int_enable(). As well, the L2 cache interrupt
* must be enabled using the interrupt controller API. Refer to the interrupt
* controller API for more details about programming the interrupt controller.
*
* In the event of a parity error is detected, the appropriate L2 cache parity
* interrupt will be raised. To clear the parity interrupt(s), the appropriate
* L2 cache parity interrupt must be cleared by calling
* alt_cache_l2_int_status_clear().
*
* For ECC support, refer to the ECC related API documentation for more
* information.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l2_parity_enable(void);
/*!
* Disables parity error detection in the L2 cache.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l2_parity_disable(void);
/*!
* Returns \b true when parity error detection is enabled and \b false when it
* is disabled.
*
* \retval true The L2 cache parity error detection feature is
* enabled.
* \retval false The L2 cache parity error detection feature is
* disabled.
*/
bool alt_cache_l2_parity_is_enabled(void);
/*!
* Enables the L2 cache.
*
* If the L2 cache is already enabled, nothing is done. Otherwise the entire
* contents of the cache is first invalidated before being enabled.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l2_enable(void);
/*!
* Disables the L2 cache.
*
* If the L2 cache is already disabled, nothing is done. Otherwise the entire
* contents of the cache is first cleaned before being disabled.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l2_disable(void);
/*!
* Returns \b true when the L2 cache is enabled and \b false when it is
* disabled.
*
* \retval true The L2 cache is enabled.
* \retval false The L2 cache is disabled.
*/
bool alt_cache_l2_is_enabled(void);
/*!
* Flushes the L2 cache controller hardware buffers.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_TMO The memory operation timed out.
*/
ALT_STATUS_CODE alt_cache_l2_sync(void);
/*!
* Invalidates the specified contents of the L2 cache for the given memory
* segment.
*
* The memory segment address and length specified must align to the
* characteristics of the cache line. This means the address and length must be
* multiples of the cache line size. To determine the cache line size, use the
* \b ALT_CACHE_LINE_SIZE macro.
*
* \param paddress
* The physical address of the memory segment to be invalidated.
*
* \param length
* The length of the memory segment to be invalidated.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_BAD_ARG The memory segment is invalid.
* \retval ALT_E_TMO The memory operation timed out.
*/
ALT_STATUS_CODE alt_cache_l2_invalidate(void * paddress, size_t length);
/*!
* Invalidates th entire contents of the L2 cache.
*
* Normally this is done automatically as part of alt_cache_l2_enable(), but
* in certain circumstances it may be necessary to invalidate it manually. An
* example of this situation is when the address space is remapped and the
* processor accesses memory from the new memory area.
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_TMO The memory operation timed out.
*/
ALT_STATUS_CODE alt_cache_l2_invalidate_all(void);
/*!
* Cleans the specified contents of the L2 cache for the given memory segment.
*
* The memory segment address and length specified must align to the
* characteristics of the cache line. This means the address and length must be
* multiples of the cache line size. To determine the cache line size, use the
* \b ALT_CACHE_LINE_SIZE macro.
*
* \param paddress
* The physical address of the memory segment to be cleaned.
*
* \param length
* The length of the memory segment to be cleaned.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_BAD_ARG The memory segment is invalid.
* \retval ALT_E_TMO The memory operation timed out.
*/
ALT_STATUS_CODE alt_cache_l2_clean(void * paddress, size_t length);
/*!
* Cleans the entire L2 cache. All L2 cache controller interrupts will be
* temporarily disabled while the clean operation is in progress and restored
* once the it is finished.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_TMO The memory operation timed out.
*/
ALT_STATUS_CODE alt_cache_l2_clean_all(void);
/*!
* Cleans and invalidates the specified contents of the L2 cache for the
* given memory segment.
*
* The memory segment address and length specified must align to the
* characteristics of the cache line. This means the address and length must be
* multiples of the cache line size. To determine the cache line size, use the
* \b ALT_CACHE_LINE_SIZE macro.
*
* \param paddress
* The physical address of the memory segment to be purged.
*
* \param length
* The length of the memory segment to be purged.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_BAD_ARG The memory segment is invalid.
*/
ALT_STATUS_CODE alt_cache_l2_purge(void * paddress, size_t length);
/*!
* Cleans and invalidates the entire L2 cache. All L2 cache controller
* interrupts will be temporarily disabled while the clean and invalidate
* operation is in progress and restored once the it is finished.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
* \retval ALT_E_TMO The memory operation timed out.
*/
ALT_STATUS_CODE alt_cache_l2_purge_all(void);
/*!
* This type definition enumerates all the interrupt conditions that can be
* generated by the L2 cache controller as register mask values.
*/
enum ALT_CACHE_L2_INTERRUPT_e
{
/*! Decode error received on the master ports from L3. */
ALT_CACHE_L2_INTERRUPT_DECERR = 1 << 8,
/*! Slave error received on the master ports from L3. */
ALT_CACHE_L2_INTERRUPT_SLVERR = 1 << 7,
/*! Error on the L2 data RAM read. */
ALT_CACHE_L2_INTERRUPT_ERRRD = 1 << 6,
/*! Error on the L2 tag RAM read. */
ALT_CACHE_L2_INTERRUPT_ERRRT = 1 << 5,
/*! Error on the L2 data RAM write. */
ALT_CACHE_L2_INTERRUPT_ERRWD = 1 << 4,
/*! Error on the L2 tag RAM write. */
ALT_CACHE_L2_INTERRUPT_ERRWT = 1 << 3,
/*! Parity error on the L2 data RAM read. */
ALT_CACHE_L2_INTERRUPT_PARRD = 1 << 2,
/*! Parity error on the L2 tag RAM read. */
ALT_CACHE_L2_INTERRUPT_PARRT = 1 << 1,
/*! Event counter overflow or increment. */
ALT_CACHE_L2_INTERRUPT_ECNTR = 1 << 0
};
typedef enum ALT_CACHE_L2_INTERRUPT_e ALT_CACHE_L2_INTERRUPT_t;
/*!
* Enables the L2 cache controller interrupts for the specified set of
* condition(s).
*
* \param interrupt
* A register mask of the selected L2 cache controller
* interrupting conditions.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l2_int_enable(uint32_t interrupt);
/*!
* Disables the L2 cache controller interrupts for the specified set of
* condition(s).
*
* \param interrupt
* A register mask of the selected L2 cache controller
* interrupting conditions.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l2_int_disable(uint32_t interrupt);
/*!
* Gets the condition(s) causing the L2 cache controller to interrupt as a
* register mask.
*
* \returns A register mask of the currently asserted and enabled
* conditions resulting in an interrupt being generated.
*/
uint32_t alt_cache_l2_int_status_get(void);
/*!
* Clears the specified conditon(s) causing the L2 cache controller to
* interrupt as a mask. Condition(s) specified which are not causing an
* interrupt or condition(s) specified which are not enabled are ignored.
*
* \param interrupt
* A register mask of the selected L2 cache controller
* interrupting conditions.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_cache_l2_int_status_clear(uint32_t interrupt);
/*!
* @}
*/
/*!
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __ALT_CACHE_H__ */

View File

@@ -1,120 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/******************************************************************************
*
* Copyright 2013 Altera Corporation. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
******************************************************************************/
/*!
* \file
*
* Contains the definition of an opaque data structure that contains raw
* configuration information for a clock group.
*/
#ifndef __ALT_CLK_GRP_H__
#define __ALT_CLK_GRP_H__
#include "hwlib.h"
#include "socal/alt_clkmgr.h"
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
/*!
* This type definition enumerates the clock groups
*/
typedef enum ALT_CLK_GRP_e
{
ALT_MAIN_PLL_CLK_GRP, /*!< Main PLL clock group */
ALT_PERIPH_PLL_CLK_GRP, /*!< Peripheral PLL clock group */
ALT_SDRAM_PLL_CLK_GRP /*!< SDRAM PLL clock group */
} ALT_CLK_GRP_t;
/*!
* This type definition defines an opaque data structure for holding the
* configuration settings for a complete clock group.
*/
typedef struct ALT_CLK_GROUP_RAW_CFG_s
{
uint32_t verid; /*!< SoC FPGA version identifier. This field
* encapsulates the silicon identifier and
* version information associated with this
* clock group configuration. It is used to
* assert that this clock group configuration
* is valid for this device. */
uint32_t siliid2; /*!< Reserved register - reserved for future
* device IDs or capability flags. */
ALT_CLK_GRP_t clkgrpsel; /*!< Clock group union discriminator. */
/*!
* This union holds the register values for configuration of the set of
* possible clock groups on the SoC FPGA. The \e clkgrpsel discriminator
* identifies the valid clock group union data member.
*/
union ALT_CLK_GROUP_RAW_CFG_u
{
/*! Clock group configuration for Main PLL group. */
union
{
ALT_CLKMGR_MAINPLL_t fld; /*!< Field access. */
ALT_CLKMGR_MAINPLL_raw_t raw; /*!< Raw access. */
} mainpllgrp;
/*! Clock group configuration for Peripheral PLL group. */
union
{
ALT_CLKMGR_PERPLL_t fld; /*!< Field access. */
ALT_CLKMGR_PERPLL_raw_t raw; /*!< Raw access. */
} perpllgrp;
/*! Clock group configuration for SDRAM PLL group. */
union
{
ALT_CLKMGR_SDRPLL_t fld; /*!< Field access. */
ALT_CLKMGR_SDRPLL_raw_t raw; /*!< Raw access. */
} sdrpllgrp;
} clkgrp;
} ALT_CLK_GROUP_RAW_CFG_t;
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __ALT_CLK_GRP_H__ */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,168 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/******************************************************************************
*
* Copyright 2013 Altera Corporation. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
******************************************************************************/
#ifndef __ALT_DMA_COMMON_H__
#define __ALT_DMA_COMMON_H__
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
/*!
* \addtogroup ALT_DMA_COMMON DMA Controller Common API Definitions
*
* This module contains the common definitions for the DMA controller related
* APIs.
*
* @{
*/
/*!
* This type definition enumerates the DMA controller channel threads.
*/
typedef enum ALT_DMA_CHANNEL_e
{
ALT_DMA_CHANNEL_0 = 0, /*!< DMA Channel Thread 0 */
ALT_DMA_CHANNEL_1 = 1, /*!< DMA Channel Thread 1 */
ALT_DMA_CHANNEL_2 = 2, /*!< DMA Channel Thread 2 */
ALT_DMA_CHANNEL_3 = 3, /*!< DMA Channel Thread 3 */
ALT_DMA_CHANNEL_4 = 4, /*!< DMA Channel Thread 4 */
ALT_DMA_CHANNEL_5 = 5, /*!< DMA Channel Thread 5 */
ALT_DMA_CHANNEL_6 = 6, /*!< DMA Channel Thread 6 */
ALT_DMA_CHANNEL_7 = 7 /*!< DMA Channel Thread 7 */
}
ALT_DMA_CHANNEL_t;
/*!
* This type definition enumerates the SoC system peripherals implementing the
* required request interface that enables direct DMA transfers to/from the
* device.
*
* FPGA soft IP interface to the DMA are required to comply with the Synopsys
* protocol.
*
* Request interface numbers 4 through 7 are multiplexed between the CAN
* controllers and soft logic implemented in the FPGA fabric. The selection
* between the CAN controller and FPGA interfaces is determined at DMA
* initialization.
*/
typedef enum ALT_DMA_PERIPH_e
{
ALT_DMA_PERIPH_FPGA_0 = 0, /*!< FPGA soft IP interface 0 */
ALT_DMA_PERIPH_FPGA_1 = 1, /*!< FPGA soft IP interface 1 */
ALT_DMA_PERIPH_FPGA_2 = 2, /*!< FPGA soft IP interface 2 */
ALT_DMA_PERIPH_FPGA_3 = 3, /*!< FPGA soft IP interface 3 */
ALT_DMA_PERIPH_FPGA_4_OR_CAN0_IF1 = 4, /*!< Selectively MUXed FPGA 4 or CAN 0 interface 1 */
ALT_DMA_PERIPH_FPGA_5_OR_CAN0_IF2 = 5, /*!< Selectively MUXed FPGA 5 or CAN 0 interface 2 */
ALT_DMA_PERIPH_FPGA_6_OR_CAN1_IF1 = 6, /*!< Selectively MUXed FPGA 6 or CAN 1 interface 1 */
ALT_DMA_PERIPH_FPGA_7_OR_CAN1_IF2 = 7, /*!< Selectively MUXed FPGA 7 or CAN 1 interface 2 */
ALT_DMA_PERIPH_FPGA_4 = 4, /*!< Alias for ALT_DMA_PERIPH_FPGA_4_OR_CAN0_IF1 */
ALT_DMA_PERIPH_FPGA_5 = 5, /*!< Alias for ALT_DMA_PERIPH_FPGA_5_OR_CAN0_IF2 */
ALT_DMA_PERIPH_FPGA_6 = 6, /*!< Alias for ALT_DMA_PERIPH_FPGA_6_OR_CAN1_IF1 */
ALT_DMA_PERIPH_FPGA_7 = 7, /*!< Alias for ALT_DMA_PERIPH_FPGA_7_OR_CAN1_IF2 */
ALT_DMA_PERIPH_CAN0_IF1 = 4, /*!< Alias for ALT_DMA_PERIPH_FPGA_4_OR_CAN0_IF1 */
ALT_DMA_PERIPH_CAN0_IF2 = 5, /*!< Alias for ALT_DMA_PERIPH_FPGA_5_OR_CAN0_IF2 */
ALT_DMA_PERIPH_CAN1_IF1 = 6, /*!< Alias for ALT_DMA_PERIPH_FPGA_6_OR_CAN1_IF1 */
ALT_DMA_PERIPH_CAN1_IF2 = 7, /*!< Alias for ALT_DMA_PERIPH_FPGA_7_OR_CAN1_IF2 */
ALT_DMA_PERIPH_I2C0_TX = 8, /*!< I<sup>2</sup>C 0 TX */
ALT_DMA_PERIPH_I2C0_RX = 9, /*!< I<sup>2</sup>C 0 RX */
ALT_DMA_PERIPH_I2C1_TX = 10, /*!< I<sup>2</sup>C 1 TX */
ALT_DMA_PERIPH_I2C1_RX = 11, /*!< I<sup>2</sup>C 1 RX */
ALT_DMA_PERIPH_I2C2_TX = 12, /*!< I<sup>2</sup>C 2 TX */
ALT_DMA_PERIPH_I2C2_RX = 13, /*!< I<sup>2</sup>C 2 RX */
ALT_DMA_PERIPH_I2C3_TX = 14, /*!< I<sup>2</sup>C 3 TX */
ALT_DMA_PERIPH_I2C3_RX = 15, /*!< I<sup>2</sup>C 3 RX */
ALT_DMA_PERIPH_SPI0_MASTER_TX = 16, /*!< SPI 0 Master TX */
ALT_DMA_PERIPH_SPI0_MASTER_RX = 17, /*!< SPI 0 Master RX */
ALT_DMA_PERIPH_SPI0_SLAVE_TX = 18, /*!< SPI 0 Slave TX */
ALT_DMA_PERIPH_SPI0_SLAVE_RX = 19, /*!< SPI 0 Slave RX */
ALT_DMA_PERIPH_SPI1_MASTER_TX = 20, /*!< SPI 1 Master TX */
ALT_DMA_PERIPH_SPI1_MASTER_RX = 21, /*!< SPI 1 Master RX */
ALT_DMA_PERIPH_SPI1_SLAVE_TX = 22, /*!< SPI 1 Slave TX */
ALT_DMA_PERIPH_SPI1_SLAVE_RX = 23, /*!< SPI 1 Slave RX */
ALT_DMA_PERIPH_QSPI_FLASH_TX = 24, /*!< QSPI Flash TX */
ALT_DMA_PERIPH_QSPI_FLASH_RX = 25, /*!< QSPI Flash RX */
ALT_DMA_PERIPH_STM = 26, /*!< System Trace Macrocell */
ALT_DMA_PERIPH_RESERVED = 27, /*!< Reserved */
ALT_DMA_PERIPH_UART0_TX = 28, /*!< UART 0 TX */
ALT_DMA_PERIPH_UART0_RX = 29, /*!< UART 0 RX */
ALT_DMA_PERIPH_UART1_TX = 30, /*!< UART 1 TX */
ALT_DMA_PERIPH_UART1_RX = 31 /*!< UART 1 RX */
}
ALT_DMA_PERIPH_t;
/*!
* This type enumerates the DMA security state options available.
*/
typedef enum ALT_DMA_SECURITY_e
{
ALT_DMA_SECURITY_DEFAULT = 0, /*!< Use the default security value (e.g. reset default) */
ALT_DMA_SECURITY_SECURE = 1, /*!< Secure */
ALT_DMA_SECURITY_NONSECURE = 2 /*!< Non-secure */
}
ALT_DMA_SECURITY_t;
/*!
* This type definition enumerates the DMA event-interrupt resources.
*/
typedef enum ALT_DMA_EVENT_e
{
ALT_DMA_EVENT_0 = 0, /*!< DMA Event 0 */
ALT_DMA_EVENT_1 = 1, /*!< DMA Event 1 */
ALT_DMA_EVENT_2 = 2, /*!< DMA Event 2 */
ALT_DMA_EVENT_3 = 3, /*!< DMA Event 3 */
ALT_DMA_EVENT_4 = 4, /*!< DMA Event 4 */
ALT_DMA_EVENT_5 = 5, /*!< DMA Event 5 */
ALT_DMA_EVENT_6 = 6, /*!< DMA Event 6 */
ALT_DMA_EVENT_7 = 7, /*!< DMA Event 7 */
ALT_DMA_EVENT_ABORT = 8 /*!< DMA Abort Event */
}
ALT_DMA_EVENT_t;
/*!
* @}
*/
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __ALT_DMA_COMMON_H__ */

View File

@@ -1,957 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/******************************************************************************
*
* Copyright 2013 Altera Corporation. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
******************************************************************************/
#ifndef __ALT_DMA_PROGRAM_H__
#define __ALT_DMA_PROGRAM_H__
#include "hwlib.h"
#include "alt_dma_common.h"
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
/*!
* \addtogroup ALT_DMA_PRG DMA Controller Programming API
*
* This API provides functions for dynamically defining and assembling microcode
* programs for execution on the DMA controller.
*
* The microcode program assembly API provides users with the ability to develop
* highly optimized and tailored algorithms for data transfer between SoC FPGA
* IP blocks and/or system memory.
*
* The same microcode program assembly facilities are also used to implement the
* functions found in the HWLIB Common DMA Operations functional API.
*
* An ALT_DMA_PROGRAM_t structure is used to contain and assemble a DMA
* microcode program. The storage for an ALT_DMA_PROGRAM_t stucture is allocated
* from used specified system memory. Once a microcode program has been
* assembled in a ALT_DMA_PROGRAM_t it may be excecuted on a designated DMA
* channel thread. The microcode program may be rerun on any DMA channel thread
* whenever required as long as the integrity of the ALT_DMA_PROGRAM_t
* containing the program is maintained.
*
* @{
*/
/*!
* This preprocessor declares the DMA channel thread microcode instruction
* cache line width in bytes. It is recommended that the program buffers be
* sized to a multiple of the cache line size. This will allow for the most
* efficient microcode speed and space utilization.
*/
#define ALT_DMA_PROGRAM_CACHE_LINE_SIZE (32)
/*!
* This preprocessor declares the DMA channel thread microcode instruction
* cache line count. Thus the total size of the cache is the cache line size
* multipled by the cache line count. Programs larger than the cache size risk
* having a cache miss while executing.
*/
#define ALT_DMA_PROGRAM_CACHE_LINE_COUNT (16)
/*!
* This preprocessor definition determines the size of the program buffer
* within the ALT_DMA_PROGRAM_t structure. This size should provide adequate
* size for most DMA microcode programs. If calls within this API are
* reporting out of memory response codes, consider increasing the provisioned
* program buffersize.
*
* To specify another DMA microcode program buffer size, redefine the macro
* below by defining ALT_DMA_PROGRAM_PROVISION_BUFFER_SIZE to another size in
* your Makefile. It is recommended that the size be a multiple of the
* microcode engine cache line size. See ALT_DMA_PROGRAM_CACHE_LINE_SIZE for
* more information. The largest supported buffer size is 65536 bytes.
*/
#ifndef ALT_DMA_PROGRAM_PROVISION_BUFFER_SIZE
#define ALT_DMA_PROGRAM_PROVISION_BUFFER_SIZE (ALT_DMA_PROGRAM_CACHE_LINE_SIZE * ALT_DMA_PROGRAM_CACHE_LINE_COUNT)
#endif
/*!
* This type defines the structure used to assemble and contain a microcode
* program which can be executed by the DMA controller. The internal members
* are undocumented and should not be altered outside of this API.
*/
typedef struct ALT_DMA_PROGRAM_s
{
uint32_t flag;
uint16_t buffer_start;
uint16_t code_size;
uint16_t loop0;
uint16_t loop1;
uint16_t sar;
uint16_t dar;
/*
* Add a little extra space so that regardless of where this structure
* sits in memory, a suitable start address can be aligned to the cache
* line stride while providing the requested buffer space.
*/
uint8_t program[ALT_DMA_PROGRAM_PROVISION_BUFFER_SIZE +
ALT_DMA_PROGRAM_CACHE_LINE_SIZE];
}
ALT_DMA_PROGRAM_t;
/*!
* This type definition enumerates the DMA controller register names for use in
* microcode program definition.
*/
typedef enum ALT_DMA_PROGRAM_REG_e
{
/*! Source Address Register */
ALT_DMA_PROGRAM_REG_SAR = 0x0,
/*! Destination Address Register */
ALT_DMA_PROGRAM_REG_DAR = 0x2,
/*! Channel Control Register */
ALT_DMA_PROGRAM_REG_CCR = 0x1
}
ALT_DMA_PROGRAM_REG_t;
/*!
* This type definition enumerates the instruction modifier options available
* for use with selected DMA microcode instructions.
*
* The enumerations values are context dependent upon the instruction being
* modified.
*
* For the <b>DMALD[S|B]</b>, <b>DMALDP\<S|B></b>, <b>DMAST[S|B]</b>, and
* <b>DMASTP\<S|B></b> microcode instructions, the enumeration
* ALT_DMA_PROGRAM_INST_MOD_SINGLE specifies the <b>S</b> option modifier
* while the enumeration ALT_DMA_PROGRAM_INST_MOD_BURST specifies the <b>B</b>
* option modifier. The enumeration ALT_DMA_PROGRAM_INST_MOD_NONE specifies
* that no modifier is present for instructions where use of <b>[S|B]</b> is
* optional.
*
* For the <b>DMAWFP</b> microcode instruction, the enumerations
* ALT_DMA_PROGRAM_INST_MOD_SINGLE, ALT_DMA_PROGRAM_INST_MOD_BURST, or
* ALT_DMA_PROGRAM_INST_MOD_PERIPH each specify one of the corresponding
* options <b>\<single|burst|periph></b>.
*/
typedef enum ALT_DMA_PROGRAM_INST_MOD_e
{
/*!
* This DMA instruction modifier specifies that no special modifier is
* added to the instruction.
*/
ALT_DMA_PROGRAM_INST_MOD_NONE,
/*!
* Depending on the DMA microcode instruction modified, this modifier
* specifies <b>S</b> case for a <b>[S|B]</b> or a <b>\<single></b> for a
* <b>\<single|burst|periph></b>.
*/
ALT_DMA_PROGRAM_INST_MOD_SINGLE,
/*!
* Depending on the DMA microcode instruction modified, this modifier
* specifies <b>B</b> case for a <b>[S|B]</b> or a <b>\<burst></b> for a
* <b>\<single|burst|periph></b>.
*/
ALT_DMA_PROGRAM_INST_MOD_BURST,
/*!
* This DMA instruction modifier specifies a <b>\<periph></b> for a
* <b>\<single|burst|periph></b>.
*/
ALT_DMA_PROGRAM_INST_MOD_PERIPH
}
ALT_DMA_PROGRAM_INST_MOD_t;
/*!
* This function initializes a system memory buffer for use as a DMA microcode
* program buffer. This should be the first API call made on the program
* buffer type.
*
* \param pgm
* A pointer to a DMA program buffer structure.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR Details about error status code
*/
ALT_STATUS_CODE alt_dma_program_init(ALT_DMA_PROGRAM_t * pgm);
/*!
* This function verifies that the DMA microcode program buffer is no longer
* in use and performs any needed uninitialization steps.
*
* \param pgm
* A pointer to a DMA program buffer structure.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR Details about error status code
*/
ALT_STATUS_CODE alt_dma_program_uninit(ALT_DMA_PROGRAM_t * pgm);
/*!
* This function clears the existing DMA microcode program in the given
* program buffer.
*
* \param pgm
* A pointer to a DMA program buffer structure.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR Details about error status code.
*/
ALT_STATUS_CODE alt_dma_program_clear(ALT_DMA_PROGRAM_t * pgm);
/*!
* This function validate that the given DMA microcode program buffer contains
* a well formed program. If caches are enabled, the program buffer contents
* will be cleaned to RAM.
*
* \param pgm
* A pointer to a DMA program buffer structure.
*
* \retval ALT_E_SUCCESS The given program is well formed.
* \retval ALT_E_ERROR The given program is not well formed.
* \retval ALT_E_TMO The cache operation timed out.
*/
ALT_STATUS_CODE alt_dma_program_validate(const ALT_DMA_PROGRAM_t * pgm);
/*!
* This function reports the number bytes incremented for the register
* specified. The purpose is to determine the progress of an ongoing DMA
* transfer.
*
* It is implemented by calculating the difference of the programmed SAR or DAR
* with the current channel SAR or DAR register value.
*
* \param pgm
* A pointer to a DMA program buffer structure.
*
* \param channel
* The channel that the program is running on.
*
* \param reg
* Register to change the value for. Valid for only
* ALT_DMA_PROGRAM_REG_SAR and ALT_DMA_PROGRAM_REG_DAR.
*
* \param current
* The current snapshot value of the register read from the DMA
* channel.
*
* \param progress
* [out] A pointer to a memory location that will be used to store
* the number of bytes transfered.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR Details about error status code.
* \retval ALT_E_BAD_ARG The specified channel is invalid, the specified
* register is invalid, or the DMAMOV for the
* specified register has not yet been assembled
* in the current program buffer.
*/
ALT_STATUS_CODE alt_dma_program_progress_reg(ALT_DMA_PROGRAM_t * pgm,
ALT_DMA_PROGRAM_REG_t reg,
uint32_t current, uint32_t * progress);
/*!
* This function updates a pre-existing DMAMOV value affecting the SAR or DAR
* registers. This allows for pre-assembled programs that can be used on
* different source and destination addresses.
*
* \param pgm
* A pointer to a DMA program buffer structure.
*
* \param reg
* Register to change the value for. Valid for only
* ALT_DMA_PROGRAM_REG_SAR and ALT_DMA_PROGRAM_REG_DAR.
*
* \param val
* The value to update to.
*
* \retval ALT_E_SUCCESS The operation was successful.
* \retval ALT_E_ERROR Details about error status code.
* \retval ALT_E_BAD_ARG The specified register is invalid or the DMAMOV
* for the specified register has not yet been
* assembled in the current program buffer.
*/
ALT_STATUS_CODE alt_dma_program_update_reg(ALT_DMA_PROGRAM_t * pgm,
ALT_DMA_PROGRAM_REG_t reg, uint32_t val);
/*!
*/
/*!
* Assembles a DMAADDH (Add Halfword) instruction into the microcode program
* buffer. This instruction uses 3 bytes of buffer space.
*
* \param pgm
* The DMA program buffer to contain the assembled instruction.
*
* \param addr_reg
* The channel address register (ALT_DMA_PROGRAM_REG_DAR or
* ALT_DMA_PROGRAM_REG_SAR) to add the value to.
*
* \param val
* The 16-bit unsigned value to add to the channel address
* register.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
* \retval ALT_E_BAD_ARG Invalid channel register specified.
*/
// Assembler Syntax: DMAADDH <address_register>, <16-bit immediate>
ALT_STATUS_CODE alt_dma_program_DMAADDH(ALT_DMA_PROGRAM_t * pgm,
ALT_DMA_PROGRAM_REG_t addr_reg, uint16_t val);
/*!
* Assembles a DMAADNH (Add Negative Halfword) instruction into the microcode
* program buffer. This instruction uses 3 bytes of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \param addr_reg
* The channel address register (ALT_DMA_PROGRAM_REG_DAR or
* ALT_DMA_PROGRAM_REG_SAR) to add the value to.
*
* \param val
* The 16-bit unsigned value to add to the channel address
* register.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
* \retval ALT_E_BAD_ARG Invalid channel register specified.
*/
// Assembler Syntax: DMAADNH <address_register>, <16-bit immediate>
ALT_STATUS_CODE alt_dma_program_DMAADNH(ALT_DMA_PROGRAM_t * pgm,
ALT_DMA_PROGRAM_REG_t addr_reg, uint16_t val);
/*!
* Assembles a DMAEND (End) instruction into the microcode program buffer.
* This instruction uses 1 byte of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
*/
// Assembler Syntax: DMAEND
ALT_STATUS_CODE alt_dma_program_DMAEND(ALT_DMA_PROGRAM_t * pgm);
/*!
* Assembles a DMAFLUSHP (Flush Peripheral) instruction into the microcode
* program buffer. This instruction uses 2 bytes of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \param periph
* The peripheral to flush.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
* \retval ALT_E_BAD_ARG Invalid peripheral specified.
*/
// Assembler Syntax: DMAFLUSHP <peripheral>
ALT_STATUS_CODE alt_dma_program_DMAFLUSHP(ALT_DMA_PROGRAM_t * pgm,
ALT_DMA_PERIPH_t periph);
/*!
* Assembles a DMAGO (Go) instruction into the microcode program buffer. This
* instruction uses 6 bytes of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \param channel
* The stopped channel to act upon.
*
* \param val
* The value to write to the channel program counter register.
*
* \param sec
* The security state for the operation.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
* \retval ALT_E_BAD_ARG Invalid channel or security specified.
*/
// Assembler Syntax: DMAGO <channel_number>, <32-bit_immediate> [, ns]
ALT_STATUS_CODE alt_dma_program_DMAGO(ALT_DMA_PROGRAM_t * pgm,
ALT_DMA_CHANNEL_t channel, uint32_t val,
ALT_DMA_SECURITY_t sec);
/*!
* Assembles a DMAKILL (Kill) instruction into the microcode program buffer.
* This instruction uses 1 byte of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
*/
// Assembler Syntax: DMAKILL
ALT_STATUS_CODE alt_dma_program_DMAKILL(ALT_DMA_PROGRAM_t * pgm);
/*!
* Assembles a DMALD (Load) instruction into the microcode program buffer.
* This instruction uses 1 byte of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \param mod
* The program instruction modifier for the type of transfer.
* Only ALT_DMA_PROGRAM_INST_MOD_SINGLE and
* ALT_DMA_PROGRAM_INST_MOD_BURST are valid options.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
* \retval ALT_E_BAD_ARG Invalid instruction modifier specified.
*/
// Assembler Syntax: DMALD[S|B]
ALT_STATUS_CODE alt_dma_program_DMALD(ALT_DMA_PROGRAM_t * pgm,
ALT_DMA_PROGRAM_INST_MOD_t mod);
/*!
* Assembles a DMALDP (Load and notify Peripheral) instruction into the
* microcode program buffer. This instruction uses 2 bytes of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \param mod
* The program instruction modifier for the type of transfer.
* Only ALT_DMA_PROGRAM_INST_MOD_SINGLE and
* ALT_DMA_PROGRAM_INST_MOD_BURST are valid options.
*
* \param periph
* The peripheral to notify.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
* \retval ALT_E_BAD_ARG Invalid instruction modifier or peripheral
* specified.
*/
// Assembler Syntax: DMALDP<S|B> <peripheral>
ALT_STATUS_CODE alt_dma_program_DMALDP(ALT_DMA_PROGRAM_t * pgm,
ALT_DMA_PROGRAM_INST_MOD_t mod, ALT_DMA_PERIPH_t periph);
/*!
* Assembles a DMALP (Loop) instruction into the microcode program buffer.
* This instruction uses 2 bytes of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \param iterations
* The number of iterations to run for. Valid values are 1 - 256.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
* \retval ALT_E_BAD_ARG Invalid iterations specified.
* \retval ALT_E_BAD_OPERATION All loop registers are in use.
*/
// Assembler Syntax: DMALP [<LC0>|<LC1>] <loop_iterations>
ALT_STATUS_CODE alt_dma_program_DMALP(ALT_DMA_PROGRAM_t * pgm,
uint32_t iterations);
/*!
* Assembles a DMALPEND (Loop End) instruction into the microcode program
* buffer. This instruction uses 2 bytes of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \param mod
* The program instruction modifier for the loop terminator. Only
* ALT_DMA_PROGRAM_INST_MOD_NONE, ALT_DMA_PROGRAM_INST_MOD_SINGLE
* and ALT_DMA_PROGRAM_INST_MOD_BURST are valid options.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
* \retval ALT_E_BAD_ARG Invalid instruction modifier specified.
* \retval ALT_E_ARG_RANGE Loop size is too large to be supported.
* \retval ALT_E_BAD_OPERATION A valid DMALP or DMALPFE was not added to
* the program buffer before adding this
* DMALPEND instruction.
*/
// Assembler Syntax: DMALPEND[S|B]
ALT_STATUS_CODE alt_dma_program_DMALPEND(ALT_DMA_PROGRAM_t * pgm,
ALT_DMA_PROGRAM_INST_MOD_t mod);
/*!
* Assembles a DMALPFE (Loop Forever) instruction into the microcode program
* buffer. No instruction is added to the buffer but a previous DMALPEND to
* create an infinite loop.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
*/
// Assembler Syntax: DMALPFE
ALT_STATUS_CODE alt_dma_program_DMALPFE(ALT_DMA_PROGRAM_t * pgm);
/*!
* Assembles a DMAMOV (Move) instruction into the microcode program buffer.
* This instruction uses 6 bytes of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \param chan_reg
* The channel non-looping register (ALT_DMA_PROGRAM_REG_SAR,
* ALT_DMA_PROGRAM_REG_DAR or ALT_DMA_PROGRAM_REG_CCR) to copy
* the value to.
*
* \param val
* The value to write to the specified register.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
* \retval ALT_E_BAD_ARG Invalid channel register specified.
*/
// Assembler Syntax: DMAMOV <destination_register>, <32-bit_immediate>
ALT_STATUS_CODE alt_dma_program_DMAMOV(ALT_DMA_PROGRAM_t * pgm,
ALT_DMA_PROGRAM_REG_t chan_reg, uint32_t val);
/*!
* Assembles a DMANOP (No Operation) instruction into the microcode program
* buffer. This instruction uses 1 byte of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
*/
// Assembler Syntax: DMANOP
ALT_STATUS_CODE alt_dma_program_DMANOP(ALT_DMA_PROGRAM_t * pgm);
/*!
* Assembles a DMARMB (Read Memory Barrier) instruction into the microcode
* program buffer. This instruction uses 1 byte of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
*/
// Assembler Syntax: DMARMB
ALT_STATUS_CODE alt_dma_program_DMARMB(ALT_DMA_PROGRAM_t * pgm);
/*!
* Assembles a DMASEV (Send Event) instruction into the microcode program
* buffer. This instruction uses 2 byte of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \param evt
* The event to send.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
* \retval ALT_E_BAD_ARG Invalid event specified.
*/
// Assembler Syntax: DMASEV <event_num>
ALT_STATUS_CODE alt_dma_program_DMASEV(ALT_DMA_PROGRAM_t * pgm,
ALT_DMA_EVENT_t evt);
/*!
* Assembles a DMAST (Store) instruction into the microcode program buffer.
* This instruction uses 1 byte of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \param mod
* The program instruction modifier for the type of transfer.
* Only ALT_DMA_PROGRAM_INST_MOD_SINGLE and
* ALT_DMA_PROGRAM_INST_MOD_BURST are valid options.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
*/
// Assembler Syntax: DMAST[S|B]
ALT_STATUS_CODE alt_dma_program_DMAST(ALT_DMA_PROGRAM_t * pgm,
ALT_DMA_PROGRAM_INST_MOD_t mod);
/*!
* Assembles a DMASTP (Store and notify Peripheral) instruction into the
* microcode program buffer. This instruction uses 2 bytes of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \param mod
* The program instruction modifier for the type of transfer.
* Only ALT_DMA_PROGRAM_INST_MOD_SINGLE and
* ALT_DMA_PROGRAM_INST_MOD_BURST are valid options.
*
* \param periph
* The peripheral to notify.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
* \retval ALT_E_BAD_ARG Invalid instruction modifier or peripheral
* specified.
*/
// Assembler Syntax: DMASTP<S|B> <peripheral>
ALT_STATUS_CODE alt_dma_program_DMASTP(ALT_DMA_PROGRAM_t * pgm,
ALT_DMA_PROGRAM_INST_MOD_t mod, ALT_DMA_PERIPH_t periph);
/*!
* Assembles a DMASTZ (Store Zero) instruction into the microcode program
* buffer. This instruction uses 1 byte of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
*/
// Assembler Syntax: DMASTZ
ALT_STATUS_CODE alt_dma_program_DMASTZ(ALT_DMA_PROGRAM_t * pgm);
/*!
* Assembles a DMAWFE (Wait For Event) instruction into the microcode program
* buffer. This instruction uses 2 byte of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \param evt
* The event to wait for.
*
* \param invalid
* If invalid is set to true, the instruction will be configured
* to invalidate the instruction cache for the current DMA
* thread.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
* \retval ALT_E_BAD_ARG Invalid event specified.
*/
// Assembler Syntax: DMAWFE <event_num>[, invalid]
ALT_STATUS_CODE alt_dma_program_DMAWFE(ALT_DMA_PROGRAM_t * pgm,
ALT_DMA_EVENT_t evt, bool invalid);
/*!
* Assembles a DMAWFP (Wait for Peripheral) instruction into the microcode
* program buffer. This instruction uses 2 bytes of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \param periph
* The peripheral to wait on.
*
* \param mod
* The program instruction modifier for the type of transfer.
* Only ALT_DMA_PROGRAM_INST_MOD_SINGLE,
* ALT_DMA_PROGRAM_INST_MOD_BURST, or
* ALT_DMA_PROGRAM_INST_MOD_PERIPH are valid options.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
* \retval ALT_E_BAD_ARG Invalid peripheral or instruction modifier
* specified.
*/
// Assembler Syntax: DMAWFP <peripheral>, <single|burst|periph>
ALT_STATUS_CODE alt_dma_program_DMAWFP(ALT_DMA_PROGRAM_t * pgm,
ALT_DMA_PERIPH_t periph, ALT_DMA_PROGRAM_INST_MOD_t mod);
/*!
* Assembles a DMAWMB (Write Memory Barrier) instruction into the microcode
* program buffer. This instruction uses 1 byte of buffer space.
*
* \param pgm
* The DMA programm buffer to contain the assembled instruction.
*
* \retval ALT_E_SUCCESS Successful instruction assembly status.
* \retval ALT_E_DMA_BUF_OVF DMA program buffer overflow.
*/
// Assembler Syntax: DMAWMB
ALT_STATUS_CODE alt_dma_program_DMAWMB(ALT_DMA_PROGRAM_t * pgm);
/*!
* \addtogroup DMA_CCR Support for DMAMOV CCR
*
* The ALT_DMA_CCR_OPT_* macro definitions are defined here to facilitate the
* dynamic microcode programming of the assembler directive:
\verbatim
DMAMOV CCR, [SB<1-16>] [SS<8|16|32|64|128>] [SA<I|F>]
[SP<imm3>] [SC<imm4>]
[DB<1-16>] [DS<8|16|32|64|128>] [DA<I|F>]
[DP<imm3>] [DC<imm4>]
[ES<8|16|32|64|128>]
\endverbatim
* with a DMAMOV instruction (see: alt_dma_program_DMAMOV()).
*
* For example the assembler directive:
\verbatim
DMAMOV CCR SB1 SS32 DB1 DS32
\endverbatim
* would be dynamically programmed with the following API call:
\verbatim
alt_dma_program_DMAMOV( pgm,
ALT_DMA_PROGRAM_REG_CCR,
( ALT_DMA_CCR_OPT_SB1
| ALT_DMA_CCR_OPT_SS32
| ALT_DMA_CCR_OPT_SA_DEFAULT
| ALT_DMA_CCR_OPT_SP_DEFAULT
| ALT_DMA_CCR_OPT_SC_DEFAULT
| ALT_DMA_CCR_OPT_DB1
| ALT_DMA_CCR_OPT_DS32
| ALT_DMA_CCR_OPT_DA_DEFAULT
| ALT_DMA_CCR_OPT_DP_DEFAULT
| ALT_DMA_CCR_OPT_DC_DEFAULT
| ALT_DMA_CCR_OPT_ES8
)
);
\endverbatim
*
* Each CCR option category should be specified regardless of whether it
* specifies a custom value or the normal default value (i.e. an
* ALT_DMA_CCR_OPT_*_DEFAULT.
*
* @{
*/
/*
* Source Address {Fixed,Incrementing}
*/
/*! Source Address Fixed address burst. */
#define ALT_DMA_CCR_OPT_SAF (0 << 0)
/*! Source Address Incrementing address burst. */
#define ALT_DMA_CCR_OPT_SAI (1 << 0)
/*! Source Address Default value. */
#define ALT_DMA_CCR_OPT_SA_DEFAULT ALT_DMA_CCR_OPT_SAI
/*
* Source burst Size (in bits)
*/
/*! Source burst Size of 8 bits. */
#define ALT_DMA_CCR_OPT_SS8 (0 << 1)
/*! Source burst Size of 16 bits. */
#define ALT_DMA_CCR_OPT_SS16 (1 << 1)
/*! Source burst Size of 32 bits. */
#define ALT_DMA_CCR_OPT_SS32 (2 << 1)
/*! Source burst Size of 64 bits. */
#define ALT_DMA_CCR_OPT_SS64 (3 << 1)
/*! Source burst Size of 128 bits. */
#define ALT_DMA_CCR_OPT_SS128 (4 << 1)
/*! Source burst Size default bits. */
#define ALT_DMA_CCR_OPT_SS_DEFAULT ALT_DMA_CCR_OPT_SS8
/*
* Source burst Length (in transfer(s))
*/
/*! Source Burst length of 1 transfer. */
#define ALT_DMA_CCR_OPT_SB1 (0x0 << 4)
/*! Source Burst length of 2 transfers. */
#define ALT_DMA_CCR_OPT_SB2 (0x1 << 4)
/*! Source Burst length of 3 transfers. */
#define ALT_DMA_CCR_OPT_SB3 (0x2 << 4)
/*! Source Burst length of 4 transfers. */
#define ALT_DMA_CCR_OPT_SB4 (0x3 << 4)
/*! Source Burst length of 5 transfers. */
#define ALT_DMA_CCR_OPT_SB5 (0x4 << 4)
/*! Source Burst length of 6 transfers. */
#define ALT_DMA_CCR_OPT_SB6 (0x5 << 4)
/*! Source Burst length of 7 transfers. */
#define ALT_DMA_CCR_OPT_SB7 (0x6 << 4)
/*! Source Burst length of 8 transfers. */
#define ALT_DMA_CCR_OPT_SB8 (0x7 << 4)
/*! Source Burst length of 9 transfers. */
#define ALT_DMA_CCR_OPT_SB9 (0x8 << 4)
/*! Source Burst length of 10 transfers. */
#define ALT_DMA_CCR_OPT_SB10 (0x9 << 4)
/*! Source Burst length of 11 transfers. */
#define ALT_DMA_CCR_OPT_SB11 (0xa << 4)
/*! Source Burst length of 12 transfers. */
#define ALT_DMA_CCR_OPT_SB12 (0xb << 4)
/*! Source Burst length of 13 transfers. */
#define ALT_DMA_CCR_OPT_SB13 (0xc << 4)
/*! Source Burst length of 14 transfers. */
#define ALT_DMA_CCR_OPT_SB14 (0xd << 4)
/*! Source Burst length of 15 transfers. */
#define ALT_DMA_CCR_OPT_SB15 (0xe << 4)
/*! Source Burst length of 16 transfers. */
#define ALT_DMA_CCR_OPT_SB16 (0xf << 4)
/*! Source Burst length default transfers. */
#define ALT_DMA_CCR_OPT_SB_DEFAULT ALT_DMA_CCR_OPT_SB1
/*
* Source Protection
*/
/*! Source Protection bits for AXI bus ARPROT[2:0]. */
#define ALT_DMA_CCR_OPT_SP(imm3) ((imm3) << 8)
/*! Source Protection bits default value. */
#define ALT_DMA_CCR_OPT_SP_DEFAULT ALT_DMA_CCR_OPT_SP(0)
/*
* Source cache
*/
/*! Source Cache bits for AXI bus ARCACHE[2:0]. */
#define ALT_DMA_CCR_OPT_SC(imm4) ((imm4) << 11)
/*! Source Cache bits default value. */
#define ALT_DMA_CCR_OPT_SC_DEFAULT ALT_DMA_CCR_OPT_SC(0)
/*
* Destination Address {Fixed,Incrementing}
*/
/*! Destination Address Fixed address burst. */
#define ALT_DMA_CCR_OPT_DAF (0 << 14)
/*! Destination Address Incrementing address burst. */
#define ALT_DMA_CCR_OPT_DAI (1 << 14)
/*! Destination Address Default value. */
#define ALT_DMA_CCR_OPT_DA_DEFAULT ALT_DMA_CCR_OPT_DAI
/*
* Destination burst Size (in bits)
*/
/*! Destination burst Size of 8 bits. */
#define ALT_DMA_CCR_OPT_DS8 (0 << 15)
/*! Destination burst Size of 16 bits. */
#define ALT_DMA_CCR_OPT_DS16 (1 << 15)
/*! Destination burst Size of 32 bits. */
#define ALT_DMA_CCR_OPT_DS32 (2 << 15)
/*! Destination burst Size of 64 bits. */
#define ALT_DMA_CCR_OPT_DS64 (3 << 15)
/*! Destination burst Size of 128 bits. */
#define ALT_DMA_CCR_OPT_DS128 (4 << 15)
/*! Destination burst Size default bits. */
#define ALT_DMA_CCR_OPT_DS_DEFAULT ALT_DMA_CCR_OPT_DS8
/*
* Destination Burst length (in transfer(s))
*/
/*! Destination Burst length of 1 transfer. */
#define ALT_DMA_CCR_OPT_DB1 (0x0 << 18)
/*! Destination Burst length of 2 transfers. */
#define ALT_DMA_CCR_OPT_DB2 (0x1 << 18)
/*! Destination Burst length of 3 transfers. */
#define ALT_DMA_CCR_OPT_DB3 (0x2 << 18)
/*! Destination Burst length of 4 transfers. */
#define ALT_DMA_CCR_OPT_DB4 (0x3 << 18)
/*! Destination Burst length of 5 transfers. */
#define ALT_DMA_CCR_OPT_DB5 (0x4 << 18)
/*! Destination Burst length of 6 transfers. */
#define ALT_DMA_CCR_OPT_DB6 (0x5 << 18)
/*! Destination Burst length of 7 transfers. */
#define ALT_DMA_CCR_OPT_DB7 (0x6 << 18)
/*! Destination Burst length of 8 transfers. */
#define ALT_DMA_CCR_OPT_DB8 (0x7 << 18)
/*! Destination Burst length of 9 transfers. */
#define ALT_DMA_CCR_OPT_DB9 (0x8 << 18)
/*! Destination Burst length of 10 transfers. */
#define ALT_DMA_CCR_OPT_DB10 (0x9 << 18)
/*! Destination Burst length of 11 transfers. */
#define ALT_DMA_CCR_OPT_DB11 (0xa << 18)
/*! Destination Burst length of 12 transfers. */
#define ALT_DMA_CCR_OPT_DB12 (0xb << 18)
/*! Destination Burst length of 13 transfers. */
#define ALT_DMA_CCR_OPT_DB13 (0xc << 18)
/*! Destination Burst length of 14 transfers. */
#define ALT_DMA_CCR_OPT_DB14 (0xd << 18)
/*! Destination Burst length of 15 transfers. */
#define ALT_DMA_CCR_OPT_DB15 (0xe << 18)
/*! Destination Burst length of 16 transfers. */
#define ALT_DMA_CCR_OPT_DB16 (0xf << 18)
/*! Destination Burst length default transfers. */
#define ALT_DMA_CCR_OPT_DB_DEFAULT ALT_DMA_CCR_OPT_DB1
/*
* Destination Protection
*/
/*! Destination Protection bits for AXI bus AWPROT[2:0]. */
#define ALT_DMA_CCR_OPT_DP(imm3) ((imm3) << 22)
/*! Destination Protection bits default value. */
#define ALT_DMA_CCR_OPT_DP_DEFAULT ALT_DMA_CCR_OPT_DP(0)
/*
* Destination Cache
*/
/*! Destination Cache bits for AXI bus AWCACHE[3,1:0]. */
#define ALT_DMA_CCR_OPT_DC(imm4) ((imm4) << 25)
/*! Destination Cache bits default value. */
#define ALT_DMA_CCR_OPT_DC_DEFAULT ALT_DMA_CCR_OPT_DC(0)
/*
* Endian Swap size (in bits)
*/
/*! Endian Swap: No swap, 8-bit data. */
#define ALT_DMA_CCR_OPT_ES8 (0 << 28)
/*! Endian Swap: Swap bytes within 16-bit data. */
#define ALT_DMA_CCR_OPT_ES16 (1 << 28)
/*! Endian Swap: Swap bytes within 32-bit data. */
#define ALT_DMA_CCR_OPT_ES32 (2 << 28)
/*! Endian Swap: Swap bytes within 64-bit data. */
#define ALT_DMA_CCR_OPT_ES64 (3 << 28)
/*! Endian Swap: Swap bytes within 128-bit data. */
#define ALT_DMA_CCR_OPT_ES128 (4 << 28)
/*! Endian Swap: Default byte swap. */
#define ALT_DMA_CCR_OPT_ES_DEFAULT ALT_DMA_CCR_OPT_ES8
/*! Default CCR register options for a DMAMOV CCR assembler directive. */
#define ALT_DMA_CCR_OPT_DEFAULT \
(ALT_DMA_CCR_OPT_SB1 | ALT_DMA_CCR_OPT_SS8 | ALT_DMA_CCR_OPT_SAI | \
ALT_DMA_CCR_OPT_SP(0) | ALT_DMA_CCR_OPT_SC(0) | \
ALT_DMA_CCR_OPT_DB1 | ALT_DMA_CCR_OPT_DS8 | ALT_DMA_CCR_OPT_DAI | \
ALT_DMA_CCR_OPT_DP(0) | ALT_DMA_CCR_OPT_DC(0) | \
ALT_DMA_CCR_OPT_ES8)
/*!
* @}
*/
/*!
* @}
*/
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __ALT_DMA_PROGRAM_H__ */

File diff suppressed because it is too large Load Diff

View File

@@ -1,62 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/******************************************************************************
*
* Copyright 2013 Altera Corporation. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
******************************************************************************/
#ifndef __ALT_HWLIBS_VER_H__
/***********************************************************************
*
* Set of macros to provide version information
*
***********************************************************************/
/* This is the major revision of the Altera ACDS Release */
#define ALTERA_ACDS_MAJOR_REV 13
/* This is the minor revision of the Altera ACDS Release */
#define ALTERA_ACDS_MINOR_REV 1
/* This is an internal HwLibs revision/feature control code. */
/* End-users should NOT depend upon the value of this field */
#define ALTERA_HWLIBS_REV 0
/* This is a text string containing the current release and service pack IDs */
#define ALTERA_ACDS_REV_STR "13.1"
/* This is a text string containing the current SoC EDS ID */
#define ALTERA_SOCEDS_REV_STR "Altera SoC Embedded Design Suite v13.1"
#endif /* __ALT_HWLIBS_VER_H__ */

File diff suppressed because it is too large Load Diff

View File

@@ -1,539 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/******************************************************************************
*
* Copyright 2013 Altera Corporation. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
******************************************************************************/
#ifndef __ALT_INT_COMMON_H__
#define __ALT_INT_COMMON_H__
#include "hwlib.h"
#include <stdbool.h>
#include <stddef.h>
#ifdef __cplusplus
extern "C"
{
#endif
/*!
* \addtogroup INT_COMMON Interrupt Controller Common Definitions
*
* This module contains the definitions common to the Interrupt Controller
* Low-Level API and Interrupt Controller Manager Interface.
*
* @{
*/
/*!
* This type definition enumerates all the interrupt identification types.
*/
typedef enum ALT_INT_INTERRUPT_e
{
ALT_INT_INTERRUPT_SGI0 = 0, /*!< # */
ALT_INT_INTERRUPT_SGI1 = 1, /*!< # */
ALT_INT_INTERRUPT_SGI2 = 2, /*!< # */
ALT_INT_INTERRUPT_SGI3 = 3, /*!< # */
ALT_INT_INTERRUPT_SGI4 = 4, /*!< # */
ALT_INT_INTERRUPT_SGI5 = 5, /*!< # */
ALT_INT_INTERRUPT_SGI6 = 6, /*!< # */
ALT_INT_INTERRUPT_SGI7 = 7, /*!< # */
ALT_INT_INTERRUPT_SGI8 = 8, /*!< # */
ALT_INT_INTERRUPT_SGI9 = 9, /*!< # */
ALT_INT_INTERRUPT_SGI10 = 10, /*!< # */
ALT_INT_INTERRUPT_SGI11 = 11, /*!< # */
ALT_INT_INTERRUPT_SGI12 = 12, /*!< # */
ALT_INT_INTERRUPT_SGI13 = 13, /*!< # */
ALT_INT_INTERRUPT_SGI14 = 14, /*!< # */
ALT_INT_INTERRUPT_SGI15 = 15,
/*!<
* Software Generated Interrupts (SGI), 0 - 15.
* * All interrupts in this group are software triggered.
*/
ALT_INT_INTERRUPT_PPI_TIMER_GLOBAL = 27, /*!< # */
ALT_INT_INTERRUPT_PPI_TIMER_PRIVATE = 29, /*!< # */
ALT_INT_INTERRUPT_PPI_TIMER_WATCHDOG = 30, /*!< # */
/*!<
* Private Peripheral Interrupts (PPI) for the Global Timer, per CPU
* private timer, and watchdog timer.
* * All interrupts in this group are edge triggered.
*/
ALT_INT_INTERRUPT_CPU0_PARITYFAIL = 32, /*!< # */
ALT_INT_INTERRUPT_CPU0_PARITYFAIL_BTAC = 33, /*!< # */
ALT_INT_INTERRUPT_CPU0_PARITYFAIL_GHB = 34, /*!< # */
ALT_INT_INTERRUPT_CPU0_PARITYFAIL_I_TAG = 35, /*!< # */
ALT_INT_INTERRUPT_CPU0_PARITYFAIL_I_DATA = 36, /*!< # */
ALT_INT_INTERRUPT_CPU0_PARITYFAIL_TLB = 37, /*!< # */
ALT_INT_INTERRUPT_CPU0_PARITYFAIL_D_OUTER = 38, /*!< # */
ALT_INT_INTERRUPT_CPU0_PARITYFAIL_D_TAG = 39, /*!< # */
ALT_INT_INTERRUPT_CPU0_PARITYFAIL_D_DATA = 40, /*!< # */
ALT_INT_INTERRUPT_CPU0_DEFLAGS0 = 41, /*!< # */
ALT_INT_INTERRUPT_CPU0_DEFLAGS1 = 42, /*!< # */
ALT_INT_INTERRUPT_CPU0_DEFLAGS2 = 43, /*!< # */
ALT_INT_INTERRUPT_CPU0_DEFLAGS3 = 44, /*!< # */
ALT_INT_INTERRUPT_CPU0_DEFLAGS4 = 45, /*!< # */
ALT_INT_INTERRUPT_CPU0_DEFLAGS5 = 46, /*!< # */
ALT_INT_INTERRUPT_CPU0_DEFLAGS6 = 47,
/*!<
* Interrupts sourced from CPU0.
*
* The ALT_INT_INTERRUPT_CPU0_PARITYFAIL interrupt combines the
* BTAC, GHB, I_TAG, I_DATA, TLB, D_OUTER, D_TAG, and D_DATA interrupts
* for CPU0.
*
* * PARITYFAIL interrupts in this group are edge triggered.
* * DEFFLAGS interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_CPU1_PARITYFAIL = 48, /*!< # */
ALT_INT_INTERRUPT_CPU1_PARITYFAIL_BTAC = 49, /*!< # */
ALT_INT_INTERRUPT_CPU1_PARITYFAIL_GHB = 50, /*!< # */
ALT_INT_INTERRUPT_CPU1_PARITYFAIL_I_TAG = 51, /*!< # */
ALT_INT_INTERRUPT_CPU1_PARITYFAIL_I_DATA = 52, /*!< # */
ALT_INT_INTERRUPT_CPU1_PARITYFAIL_TLB = 53, /*!< # */
ALT_INT_INTERRUPT_CPU1_PARITYFAIL_D_OUTER = 54, /*!< # */
ALT_INT_INTERRUPT_CPU1_PARITYFAIL_D_TAG = 55, /*!< # */
ALT_INT_INTERRUPT_CPU1_PARITYFAIL_D_DATA = 56, /*!< # */
ALT_INT_INTERRUPT_CPU1_DEFLAGS0 = 57, /*!< # */
ALT_INT_INTERRUPT_CPU1_DEFLAGS1 = 58, /*!< # */
ALT_INT_INTERRUPT_CPU1_DEFLAGS2 = 59, /*!< # */
ALT_INT_INTERRUPT_CPU1_DEFLAGS3 = 60, /*!< # */
ALT_INT_INTERRUPT_CPU1_DEFLAGS4 = 61, /*!< # */
ALT_INT_INTERRUPT_CPU1_DEFLAGS5 = 62, /*!< # */
ALT_INT_INTERRUPT_CPU1_DEFLAGS6 = 63,
/*!<
* Interrupts sourced from CPU1.
*
* The ALT_INT_INTERRUPT_CPU1_PARITYFAIL interrupt combines the
* BTAC, GHB, I_TAG, I_DATA, TLB, D_OUTER, D_TAG, and D_DATA interrupts
* for CPU1.
*
* * PARITYFAIL interrupts in this group are edge triggered.
* * DEFFLAGS interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_SCU_PARITYFAIL0 = 64, /*!< # */
ALT_INT_INTERRUPT_SCU_PARITYFAIL1 = 65, /*!< # */
ALT_INT_INTERRUPT_SCU_EV_ABORT = 66,
/*!<
* Interrupts sourced from the Snoop Control Unit (SCU).
* * All interrupts in this group are edge triggered.
*/
ALT_INT_INTERRUPT_L2_ECC_BYTE_WR_IRQ = 67, /*!< # */
ALT_INT_INTERRUPT_L2_ECC_CORRECTED_IRQ = 68, /*!< # */
ALT_INT_INTERRUPT_L2_ECC_UNCORRECTED_IRQ = 69, /*!< # */
ALT_INT_INTERRUPT_L2_COMBINED_IRQ = 70,
/*!<
* Interrupts sourced from the L2 Cache Controller.
*
* The ALT_INT_INTERRUPT_L2_COMBINED_IRQ interrupt combines the cache
* controller internal DECERRINTR, ECNTRINTR, ERRRDINTR, ERRRTINTR,
* ERRWDINTR, ERRWTINTR, PARRDINTR, PARRTINTR, and SLVERRINTR interrupts.
* Consult the L2C documentation for information on these interrupts.
*
* * ECC interrupts in this group are edge triggered.
* * Other interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_DDR_ECC_ERROR_IRQ = 71,
/*!<
* Interrupts sourced from the SDRAM Controller.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_F2S_FPGA_IRQ0 = 72, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ1 = 73, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ2 = 74, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ3 = 75, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ4 = 76, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ5 = 77, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ6 = 78, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ7 = 79, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ8 = 80, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ9 = 81, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ10 = 82, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ11 = 83, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ12 = 84, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ13 = 85, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ14 = 86, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ15 = 87, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ16 = 88, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ17 = 89, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ18 = 90, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ19 = 91, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ20 = 92, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ21 = 93, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ22 = 94, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ23 = 95, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ24 = 96, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ25 = 97, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ26 = 98, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ27 = 99, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ28 = 100, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ29 = 101, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ30 = 102, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ31 = 103, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ32 = 104, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ33 = 105, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ34 = 106, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ35 = 107, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ36 = 108, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ37 = 109, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ38 = 110, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ39 = 111, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ40 = 112, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ41 = 113, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ42 = 114, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ43 = 115, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ44 = 116, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ45 = 117, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ46 = 118, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ47 = 119, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ48 = 120, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ49 = 121, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ50 = 122, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ51 = 123, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ52 = 124, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ53 = 125, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ54 = 126, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ55 = 127, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ56 = 128, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ57 = 129, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ58 = 130, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ59 = 131, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ60 = 132, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ61 = 133, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ62 = 134, /*!< # */
ALT_INT_INTERRUPT_F2S_FPGA_IRQ63 = 135,
/*!<
* Interrupt request from the FPGA logic, 0 - 63.
* * Trigger type depends on the implementation in the FPGA.
*/
ALT_INT_INTERRUPT_DMA_IRQ0 = 136, /*!< # */
ALT_INT_INTERRUPT_DMA_IRQ1 = 137, /*!< # */
ALT_INT_INTERRUPT_DMA_IRQ2 = 138, /*!< # */
ALT_INT_INTERRUPT_DMA_IRQ3 = 139, /*!< # */
ALT_INT_INTERRUPT_DMA_IRQ4 = 140, /*!< # */
ALT_INT_INTERRUPT_DMA_IRQ5 = 141, /*!< # */
ALT_INT_INTERRUPT_DMA_IRQ6 = 142, /*!< # */
ALT_INT_INTERRUPT_DMA_IRQ7 = 143, /*!< # */
ALT_INT_INTERRUPT_DMA_IRQ_ABORT = 144, /*!< # */
ALT_INT_INTERRUPT_DMA_ECC_CORRECTED_IRQ = 145, /*!< # */
ALT_INT_INTERRUPT_DMA_ECC_UNCORRECTED_IRQ = 146,
/*!<
* Interrupts sourced from the DMA Controller.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_EMAC0_IRQ = 147, /*!< # */
ALT_INT_INTERRUPT_EMAC0_TX_ECC_CORRECTED_IRQ = 148, /*!< # */
ALT_INT_INTERRUPT_EMAC0_TX_ECC_UNCORRECTED_IRQ = 149, /*!< # */
ALT_INT_INTERRUPT_EMAC0_RX_ECC_CORRECTED_IRQ = 150, /*!< # */
ALT_INT_INTERRUPT_EMAC0_RX_ECC_UNCORRECTED_IRQ = 151,
/*!<
* Interrupts sourced from the Ethernet MAC 0 (EMAC0).
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_EMAC1_IRQ = 152, /*!< # */
ALT_INT_INTERRUPT_EMAC1_TX_ECC_CORRECTED_IRQ = 153, /*!< # */
ALT_INT_INTERRUPT_EMAC1_TX_ECC_UNCORRECTED_IRQ = 154, /*!< # */
ALT_INT_INTERRUPT_EMAC1_RX_ECC_CORRECTED_IRQ = 155, /*!< # */
ALT_INT_INTERRUPT_EMAC1_RX_ECC_UNCORRECTED_IRQ = 156,
/*!<
* Interrupts sourced from the Ethernet MAC 1 (EMAC1).
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_USB0_IRQ = 157, /*!< # */
ALT_INT_INTERRUPT_USB0_ECC_CORRECTED = 158, /*!< # */
ALT_INT_INTERRUPT_USB0_ECC_UNCORRECTED = 159,
/*!<
* Interrupts sourced from the USB OTG 0.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_USB1_IRQ = 160, /*!< # */
ALT_INT_INTERRUPT_USB1_ECC_CORRECTED = 161, /*!< # */
ALT_INT_INTERRUPT_USB1_ECC_UNCORRECTED = 162,
/*!<
* Interrupts sourced from the USB OTG 1.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_CAN0_STS_IRQ = 163, /*!< # */
ALT_INT_INTERRUPT_CAN0_MO_IRQ = 164, /*!< # */
ALT_INT_INTERRUPT_CAN0_ECC_CORRECTED_IRQ = 165, /*!< # */
ALT_INT_INTERRUPT_CAN0_ECC_UNCORRECTED_IRQ = 166,
/*!<
* Interrupts sourced from the CAN Controller 0.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_CAN1_STS_IRQ = 167, /*!< # */
ALT_INT_INTERRUPT_CAN1_MO_IRQ = 168, /*!< # */
ALT_INT_INTERRUPT_CAN1_ECC_CORRECTED_IRQ = 169, /*!< # */
ALT_INT_INTERRUPT_CAN1_ECC_UNCORRECTED_IRQ = 170,
/*!<
* Interrupts sourced from the CAN Controller 1.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_SDMMC_IRQ = 171, /*!< # */
ALT_INT_INTERRUPT_SDMMC_PORTA_ECC_CORRECTED = 172, /*!< # */
ALT_INT_INTERRUPT_SDMMC_PORTA_ECC_UNCORRECTED = 173, /*!< # */
ALT_INT_INTERRUPT_SDMMC_PORTB_ECC_CORRECTED = 174, /*!< # */
ALT_INT_INTERRUPT_SDMMC_PORTB_ECC_UNCORRECTED = 175,
/*!<
* Interrupts sourced from the SDMMC Controller.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_NAND_IRQ = 176, /*!< # */
ALT_INT_INTERRUPT_NANDR_ECC_CORRECTED_IRQ = 177, /*!< # */
ALT_INT_INTERRUPT_NANDR_ECC_UNCORRECTED_IRQ = 178, /*!< # */
ALT_INT_INTERRUPT_NANDW_ECC_CORRECTED_IRQ = 179, /*!< # */
ALT_INT_INTERRUPT_NANDW_ECC_UNCORRECTED_IRQ = 180, /*!< # */
ALT_INT_INTERRUPT_NANDE_ECC_CORRECTED_IRQ = 181, /*!< # */
ALT_INT_INTERRUPT_NANDE_ECC_UNCORRECTED_IRQ = 182,
/*!<
* Interrupts sourced from the NAND Controller.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_QSPI_IRQ = 183, /*!< # */
ALT_INT_INTERRUPT_QSPI_ECC_CORRECTED_IRQ = 184, /*!< # */
ALT_INT_INTERRUPT_QSPI_ECC_UNCORRECTED_IRQ = 185,
/*!<
* Interrupts sourced from the QSPI Controller.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_SPI0_IRQ = 186, /*!< # */
ALT_INT_INTERRUPT_SPI1_IRQ = 187, /*!< # */
ALT_INT_INTERRUPT_SPI2_IRQ = 188, /*!< # */
ALT_INT_INTERRUPT_SPI3_IRQ = 189,
/*!<
* Interrupts sourced from the SPI Controllers 0 - 3.
* SPI0_IRQ corresponds to SPIM0. SPI1_IRQ corresponds to SPIM1.
* SPI2_IRQ corresponds to SPIS0. SPI3_IRQ corresponds to SPIS1.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_I2C0_IRQ = 190, /*!< # */
ALT_INT_INTERRUPT_I2C1_IRQ = 191, /*!< # */
ALT_INT_INTERRUPT_I2C2_IRQ = 192, /*!< # */
ALT_INT_INTERRUPT_I2C3_IRQ = 193,
/*!<
* Interrupts sourced from the I2C Controllers 0 - 3.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_UART0 = 194, /*!< # */
ALT_INT_INTERRUPT_UART1 = 195,
/*!<
* Interrupts sourced from the UARTs 0 - 1.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_GPIO0 = 196, /*!< # */
ALT_INT_INTERRUPT_GPIO1 = 197, /*!< # */
ALT_INT_INTERRUPT_GPIO2 = 198,
/*!<
* Interrupts sourced from the GPIO 0 - 2.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_TIMER_L4SP_0_IRQ = 199, /*!< # */
ALT_INT_INTERRUPT_TIMER_L4SP_1_IRQ = 200, /*!< # */
ALT_INT_INTERRUPT_TIMER_OSC1_0_IRQ = 201, /*!< # */
ALT_INT_INTERRUPT_TIMER_OSC1_1_IRQ = 202,
/*!<
* Interrupts sourced from the Timer controllers.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_WDOG0_IRQ = 203, /*!< # */
ALT_INT_INTERRUPT_WDOG1_IRQ = 204,
/*!<
* Interrupts sourced from the Watchdog Timers 0 - 1.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_CLKMGR_IRQ = 205,
/*!<
* Interrupts sourced from the Clock Manager.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_MPUWAKEUP_IRQ = 206,
/*!<
* Interrupts sourced from the Clock Manager MPU Wakeup.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_FPGA_MAN_IRQ = 207,
/*!<
* Interrupts sourced from the FPGA Manager.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_NCTIIRQ0 = 208, /*!< # */
ALT_INT_INTERRUPT_NCTIIRQ1 = 209,
/*!<
* Interrupts sourced from the CoreSight for CPU0 and CPU1's CTI.
* * All interrupts in this group are level triggered.
*/
ALT_INT_INTERRUPT_RAM_ECC_CORRECTED_IRQ = 210, /*!< # */
ALT_INT_INTERRUPT_RAM_ECC_UNCORRECTED_IRQ = 211
/*!<
* Interrupts sourced from the On-chip RAM.
* * All interrupts in this group are level triggered.
*/
} ALT_INT_INTERRUPT_t;
/*!
* This is the CPU target type. It is used to specify a set of CPUs on the
* system. If only bit 0 is set then it specifies a set of CPUs containing
* only CPU 0. Multiple CPUs can be specified by setting the appropriate bit
* up to the number of CPUs on the system.
*/
typedef uint32_t alt_int_cpu_target_t;
/*!
* This type definition enumerates all the interrupt trigger types.
*/
typedef enum ALT_INT_TRIGGER_e
{
/*!
* Edge triggered interrupt. This applies to Private Peripheral Interrupts
* (PPI) and Shared Peripheral Interrupts (SPI) only, with interrupt IDs
* 16 - 1019.
*/
ALT_INT_TRIGGER_EDGE,
/*!
* Level triggered interrupt. This applies to Private Peripheral
* Interrupts (PPI) and Shared Peripheral Interrupts (SPI) only, with
* interrupt IDs 16 - 1019.
*/
ALT_INT_TRIGGER_LEVEL,
/*!
* Software triggered interrupt. This applies to Software Generated
* Interrupts (SGI) only, with interrupt IDs 0 - 15.
*/
ALT_INT_TRIGGER_SOFTWARE,
/*!
* All triggering types except for those in the Shared Peripheral Interrupts
* (SPI) F2S FPGA family interrupts can be determined by the system
* automatically. In all functions which ask for the triggering type, the
* ALT_INT_TRIGGER_AUTODETECT can be used to select the correct trigger
* type for all non F2S interrupt types.
*/
ALT_INT_TRIGGER_AUTODETECT,
/*!
* The interrupt triggering information is not applicable. This is possibly
* due to querying an invalid interrupt identifier.
*/
ALT_INT_TRIGGER_NA
}
ALT_INT_TRIGGER_t;
/*!
* This type definition enumerates all the target list filter options. This is
* used by the trigger Software Generated Interrupt (SGI) feature to issue a
* SGI to the specified processor(s) in the system. Depending on the target
* list filter and the target list, interrupts can be routed to any
* combinations of CPUs.
*/
typedef enum ALT_INT_SGI_TARGET_e
{
/*!
* This filter list uses the target list parameter to specify which CPUs
* to send the interrupt to. If target list is 0, no interrupts are sent.
*/
ALT_INT_SGI_TARGET_LIST,
/*!
* This filter list sends the interrupt all CPUs except the current CPU.
* The target list parameter is ignored.
*/
ALT_INT_SGI_TARGET_ALL_EXCL_SENDER,
/*!
* This filter list sends the interrupt to the current CPU only. The
* target list parameter is ignored.
*/
ALT_INT_SGI_TARGET_SENDER_ONLY
}
ALT_INT_SGI_TARGET_t;
/*!
* Extracts the CPUID field from the ICCIAR register.
*/
#define ALT_INT_ICCIAR_CPUID_GET(icciar) ((icciar >> 10) & 0x7)
/*!
* Extracts the ACKINTID field from the ICCIAR register.
*/
#define ALT_INT_ICCIAR_ACKINTID_GET(icciar) (icciar & 0x3FF)
/*!
* The callback to use when an interrupt needs to be serviced.
*
* \param icciar The Interrupt Controller CPU Interrupt
* Acknowledgement Register value (ICCIAR) value
* corresponding to the current interrupt.
*
* \param context The user provided context.
*/
typedef void (*alt_int_callback_t)(uint32_t icciar, void * context);
/*!
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __ALT_INT_COMMON_H__ */

View File

@@ -1,162 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/******************************************************************************
*
* Copyright 2013 Altera Corporation. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
******************************************************************************/
#ifndef __ALT_MPUSCU_H__
#define __ALT_MPUSCU_H__
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
/************************************************************************************************************/
/* alt_mpuscu.h */
/* */
/* Definitions for the ARM Snoop Control Unit, which contains the Snoop Control Unit, the Watchdog */
/* Timer, the Private Timer, the Global Timer, the Interrupt Controller, and the Interrupt Distributor. */
/* */
/************************************************************************************************************/
#ifndef ALT_HPS_ADDR
#define ALT_HPS_ADDR 0x00
#endif
/* ALT_MPUSCU_OFST is defined as a offset from ALT_HPS_ADDR in the SoCAL file hps.h */
/* and is the address of the base of the Snoop Control Unit (SCU) */
#define GLOBALTMR_BASE (ALT_MPUSCU_OFST + GLOBALTMR_MODULE_BASE_OFFSET)
#define CPU_WDTGPT_TMR_BASE (ALT_MPUSCU_OFST + WDOG_TIMER_MODULE_BASE_OFFSET)
#define CPU_PRIVATE_TMR_BASE (ALT_MPUSCU_OFST + CPU_PRIV_TIMER_MODULE_BASE_OFFSET)
#define CPU_INT_CTRL_BASE (ALT_MPUSCU_OFST + INT_CONTROLLER_MODULE_BASE_OFFSET)
#define CPU_INT_DIST_BASE (ALT_MPUSCU_OFST + INT_DISTRIBUTOR_MODULE_BASE_OFFSET)
/* offsets */
/* Global Timer offsets */
#define GLOBALTMR_MODULE_BASE_OFFSET 0x00000200
#define GLOBALTMR_CNTR_LO_REG_OFFSET 0x00000000
#define GLOBALTMR_CNTR_HI_REG_OFFSET 0x00000004
#define GLOBALTMR_CTRL_REG_OFFSET 0x00000008
#define GLOBALTMR_INT_STAT_REG_OFFSET 0x0000000C
#define GLOBALTMR_COMP_LO_REG_OFFSET 0x00000010
#define GLOBALTMR_COMP_HI_REG_OFFSET 0x00000014
#define GLOBALTMR_AUTOINC_REG_OFFSET 0x00000018
/* Global Timer bitmasks */
#define GLOBALTMR_ENABLE_BIT 0x00000001
#define GLOBALTMR_COMP_ENABLE_BIT 0x00000002
#define GLOBALTMR_INT_ENABLE_BIT 0x00000004
#define GLOBALTMR_AUTOINC_ENABLE_BIT 0x00000008
#define GLOBALTMR_PS_MASK 0x0000FF00
#define GLOBALTMR_PS_SHIFT 8
#define GLOBALTMR_INT_STATUS_BIT 0x00000001
/* Global timer constants */
#define GLOBALTMR_MAX 0xFFFFFFFF
#define GLOBALTMR_PS_MAX 0x000000FF
/* Private timer offsets */
#define CPU_PRIV_TIMER_MODULE_BASE_OFFSET 0x00000600
#define CPU_PRIV_TMR_LOAD_REG_OFFSET 0x00000000
#define CPU_PRIV_TMR_CNTR_REG_OFFSET 0x00000004
#define CPU_PRIV_TMR_CTRL_REG_OFFSET 0x00000008
#define CPU_PRIV_TMR_INT_STATUS_REG_OFFSET 0x0000000C
/* Private timer bitmasks */
#define CPU_PRIV_TMR_ENABLE 0x00000001
#define CPU_PRIV_TMR_AUTO_RELOAD 0x00000002
#define CPU_PRIV_TMR_INT_EN 0x00000004
#define CPU_PRIV_TMR_PS_MASK 0x0000FF00
#define CPU_PRIV_TMR_PS_SHIFT 8
#define CPU_PRIV_TMR_INT_STATUS 0x00000001
/* Private timer constants */
#define CPU_PRIV_TMR_MAX 0xFFFFFFFF
#define CPU_PRIV_TMR_PS_MAX 0x000000FF
/* Watchdog timer offsets */
#define WDOG_TIMER_MODULE_BASE_OFFSET 0x00000620
#define WDOG_LOAD_REG_OFFSET 0x00000000
#define WDOG_CNTR_REG_OFFSET 0x00000004
#define WDOG_CTRL_REG_OFFSET 0x00000008
#define WDOG_INTSTAT_REG_OFFSET 0x0000000C
#define WDOG_RSTSTAT_REG_OFFSET 0x00000010
#define WDOG_DISABLE_REG_OFFSET 0x00000014
/* Watchdog timer bitmasks : */
/* Control Register bitmasks */
#define WDOG_TMR_ENABLE 0x00000001
#define WDOG_AUTO_RELOAD 0x00000002
#define WDOG_INT_EN 0x00000004
#define WDOG_WDT_MODE 0x00000008
#define WDOG_PS_MASK 0x0000FF00
#define WDOG_PS_SHIFT 8
/* Interrupt Status Register bitmasks */
#define WDOG_INT_STAT_BIT 0x00000001
/* Reset Status Register bitmasks */
#define WDOG_RST_STAT_BIT 0x00000001
/* Watchdog timer constants */
#define WDOG_TMR_MAX UINT32_MAX
#define WDOG_PS_MAX UINT8_MAX
#define WDOG_DISABLE_VAL0 0x12345678
#define WDOG_DISABLE_VAL1 0x87654321
/* Interrupt Manager offsets */
/* <Add definitions here> */
#define INT_CONTROLLER_MODULE_BASE_OFFSET 0x00000100
#define INT_DISTRIBUTOR_MODULE_BASE_OFFSET 0x00001000
#define INT_DIST_TYPE_REG 0x00000004
/* Upper bound of the MPUSCU address space */
#define MPUSCU_MAX 0x00001FFF
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __ALT_MPUSCU_H__ */

View File

@@ -1,173 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/******************************************************************************
*
* Copyright 2013 Altera Corporation. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
******************************************************************************/
/*! \file
* Altera - QSPI Flash Controller Module
*/
#ifndef __ALT_QSPI_PRIVATE_H__
#define __ALT_QSPI_PRIVATE_H__
#include "socal/socal.h"
//
// This section provisions support for various flash devices.
//
#define ALT_QSPI_PROVISION_MICRON_N25Q_SUPPORT 1
/////
#define ALT_QSPI_PAGE_ADDR_MSK 0xFFFFFF00
#define ALT_QSPI_PAGE_SIZE 0x00000100 // 256 B
#define ALT_QSPI_SUBSECTOR_ADDR_MSK 0xFFFFF000
#define ALT_QSPI_SUBSECTOR_SIZE 0x00001000 // 4096 B
#define ALT_QSPI_SECTOR_ADDR_MSK 0xFFFF0000
#define ALT_QSPI_SECTOR_SIZE 0x00010000 // 64 KiB
#define ALT_QSPI_BANK_ADDR_MSK 0xFF000000
#define ALT_QSPI_BANK_SIZE 0x01000000 // 16 MiB
#if ALT_QSPI_PROVISION_MICRON_N25Q_SUPPORT
#define ALT_QSPI_N25Q_DIE_ADDR_MSK 0xFE000000
#define ALT_QSPI_N25Q_DIE_SIZE 0x02000000 // 32 MiB
#endif
/////
// Default delay timing (in ns) for N25Q.
// These values are from the N25Q handbook. The timing correctness is difficult
// to test because the test setup does not feature mutliple chips.
#define ALT_QSPI_TSHSL_NS_DEF (50)
#define ALT_QSPI_TSD2D_NS_DEF (0)
#define ALT_QSPI_TCHSH_NS_DEF (4)
#define ALT_QSPI_TSLCH_NS_DEF (4)
/*
// Default delay timing (in ns)
#define ALT_QSPI_TSHSL_NS_DEF (200)
#define ALT_QSPI_TSD2D_NS_DEF (255)
#define ALT_QSPI_TCHSH_NS_DEF (20)
#define ALT_QSPI_TSLCH_NS_DEF (20)
*/
// Flash commands
#define ALT_QSPI_STIG_OPCODE_READ (0x03)
#define ALT_QSPI_STIG_OPCODE_4BYTE_READ (0x13)
#define ALT_QSPI_STIG_OPCODE_FASTREAD (0x0B)
#define ALT_QSPI_STIG_OPCODE_FASTREAD_DUAL_OUTPUT (0x3B)
#define ALT_QSPI_STIG_OPCODE_FASTREAD_QUAD_OUTPUT (0x6B)
#define ALT_QSPI_STIG_OPCODE_FASTREAD_DUAL_IO (0xBB)
#define ALT_QSPI_STIG_OPCODE_FASTREAD_QUAD_IO (0xEB)
#define ALT_QSPI_STIG_OPCODE_PP (0x02)
#define ALT_QSPI_STIG_OPCODE_DUAL_PP (0xA2)
#define ALT_QSPI_STIG_OPCODE_QUAD_PP (0x32)
#define ALT_QSPI_STIG_OPCODE_RDID (0x9F)
#define ALT_QSPI_STIG_OPCODE_WREN (0x06)
#define ALT_QSPI_STIG_OPCODE_WRDIS (0x04)
#define ALT_QSPI_STIG_OPCODE_RDSR (0x05)
#define ALT_QSPI_STIG_OPCODE_WRSR (0x01)
#define ALT_QSPI_STIG_OPCODE_SUBSEC_ERASE (0x20)
#define ALT_QSPI_STIG_OPCODE_SEC_ERASE (0xD8)
#define ALT_QSPI_STIG_OPCODE_BULK_ERASE (0xC7)
#define ALT_QSPI_STIG_OPCODE_DIE_ERASE (0xC4)
#define ALT_QSPI_STIG_OPCODE_CHIP_ERASE (0x60)
#define ALT_QSPI_STIG_OPCODE_RD_EXT_REG (0xC8)
#define ALT_QSPI_STIG_OPCODE_WR_EXT_REG (0xC5)
#define ALT_QSPI_STIG_OPCODE_RD_STAT_REG (0x05)
#define ALT_QSPI_STIG_OPCODE_WR_STAT_REG (0x01)
#define ALT_QSPI_STIG_OPCODE_ENTER_4BYTE_MODE (0xB7)
#define ALT_QSPI_STIG_OPCODE_EXIT_4BYTE_MODE (0xE9)
// Micron commands, for 512 Mib, 1 Gib (64 MiB, 128 MiB) parts.
#if ALT_QSPI_PROVISION_MICRON_N25Q_SUPPORT
#define ALT_QSPI_STIG_OPCODE_RESET_EN (0x66)
#define ALT_QSPI_STIG_OPCODE_RESET_MEM (0x99)
#define ALT_QSPI_STIG_OPCODE_RDFLGSR (0x70)
#define ALT_QSPI_STIG_OPCODE_CLRFLGSR (0x50)
#define ALT_QSPI_STIG_OPCODE_DISCVR_PARAM (0x5A)
#endif
// Spansion commands
// #define OPCODE_ECRM (0xFF) // Exit continuous read mode
#define QSPI_READ_CLK_MHZ (50)
#define QSPI_FASTREAD_CLK_MHZ (100)
// Manufacturer ID
#define ALT_QSPI_STIG_RDID_JEDECID_MICRON (0x20)
#define ALT_QSPI_STIG_RDID_JEDECID_NUMONYX (0x20) // Same as Micron
#define ALT_QSPI_STIG_RDID_JEDECID_SPANSION (0xEF)
#define ALT_QSPI_STIG_RDID_JEDECID_WINBOND (0xEF) // Same as Spansion
#define ALT_QSPI_STIG_RDID_JEDECID_MACRONIC (0xC2)
#define ALT_QSPI_STIG_RDID_JEDECID_ATMEL (0x1F)
#define ALT_QSPI_STIG_RDID_JEDECID_GET(value) ((value >> 0) & 0xff)
#define ALT_QSPI_STIG_RDID_CAPACITYID_GET(value) ((value >> 16) & 0xff)
#define ALT_QSPI_STIG_FLAGSR_ERASEPROGRAMREADY_GET(value) ((value >> 7) & 0x1)
#define ALT_QSPI_STIG_FLAGSR_ERASEREADY_GET(value) ((value >> 7) & 0x1)
#define ALT_QSPI_STIG_FLAGSR_PROGRAMREADY_GET(value) ((value >> 7) & 0x1)
#define ALT_QSPI_STIG_FLAGSR_ERASEERROR_GET(value) ((value >> 5) & 0x1)
#define ALT_QSPI_STIG_FLAGSR_PROGRAMERROR_GET(value) ((value >> 4) & 0x1)
#define ALT_QSPI_STIG_FLAGSR_ADDRESSINGMODE_GET(value) ((value >> 1) & 0x1)
#define ALT_QSPI_STIG_FLAGSR_PROTECTIONERROR_GET(value) ((value >> 0) & 0x1)
#define ALT_QSPI_STIG_SR_BUSY_GET(value) ((value >> 0) & 0x1)
/////
#define ALT_QSPI_TIMEOUT_INFINITE (0xffffffff)
ALT_STATUS_CODE alt_qspi_replace(uint32_t dst, const void * src, size_t size);
ALT_STATUS_CODE alt_qspi_stig_cmd(uint32_t opcode, uint32_t dummy, uint32_t timeout);
ALT_STATUS_CODE alt_qspi_stig_rd_cmd(uint8_t opcode, uint32_t dummy,
uint32_t num_bytes, uint32_t * output,
uint32_t timeout);
ALT_STATUS_CODE alt_qspi_stig_wr_cmd(uint8_t opcode, uint32_t dummy,
uint32_t num_bytes, const uint32_t * input,
uint32_t timeout);
ALT_STATUS_CODE alt_qspi_stig_addr_cmd(uint8_t opcode, uint32_t dummy,
uint32_t address,
uint32_t timeout);
ALT_STATUS_CODE alt_qspi_device_wren(void);
ALT_STATUS_CODE alt_qspi_device_wrdis(void);
ALT_STATUS_CODE alt_qspi_device_rdid(uint32_t * rdid);
ALT_STATUS_CODE alt_qspi_discovery_parameter(uint32_t * param);
ALT_STATUS_CODE alt_qspi_device_bank_select(uint32_t bank);
#endif // __ALT_PRIVATE_QSPI_H__

View File

@@ -1,297 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/*! \file
* Altera - SoC Reset Manager
*/
/******************************************************************************
*
* Copyright 2013 Altera Corporation. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
******************************************************************************/
#ifndef __ALT_RESET_MGR_H__
#define __ALT_RESET_MGR_H__
#include "hwlib.h"
#include <stdbool.h>
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
/*! \addtogroup RST_MGR The Reset Manager
*
* The Reset Manager API defines functions for accessing, configuring, and
* controlling the HPS reset behavior.
* @{
*/
/******************************************************************************/
/*! \addtogroup RST_MGR_STATUS Reset Status
*
* This functional group provides information on various aspects of SoC reset
* status and timeout events.
*
* @{
*/
/******************************************************************************/
/*!
* This type definition enumerates the set of reset causes and timeout events as
* register mask values.
*/
typedef enum ALT_RESET_EVENT_e
{
/*! Power-On Voltage Detector Cold Reset */
ALT_RESET_EVENT_PORVOLTRST = 0x00000001,
/*! nPOR Pin Cold Reset */
ALT_RESET_EVENT_NPORPINRST = 0x00000002,
/*! FPGA Core Cold Reset */
ALT_RESET_EVENT_FPGACOLDRST = 0x00000004,
/*! CONFIG_IO Cold Reset */
ALT_RESET_EVENT_CONFIGIOCOLDRST = 0x00000008,
/*! Software Cold Reset */
ALT_RESET_EVENT_SWCOLDRST = 0x00000010,
/*! nRST Pin Warm Reset */
ALT_RESET_EVENT_NRSTPINRST = 0x00000100,
/*! FPGA Core Warm Reset */
ALT_RESET_EVENT_FPGAWARMRST = 0x00000200,
/*! Software Warm Reset */
ALT_RESET_EVENT_SWWARMRST = 0x00000400,
/*! MPU Watchdog 0 Warm Reset */
ALT_RESET_EVENT_MPUWD0RST = 0x00001000,
/*! MPU Watchdog 1 Warm Reset */
ALT_RESET_EVENT_MPUWD1RST = 0x00002000,
/*! L4 Watchdog 0 Warm Reset */
ALT_RESET_EVENT_L4WD0RST = 0x00004000,
/*! L4 Watchdog 1 Warm Reset */
ALT_RESET_EVENT_L4WD1RST = 0x00008000,
/*! FPGA Core Debug Reset */
ALT_RESET_EVENT_FPGADBGRST = 0x00040000,
/*! DAP Debug Reset */
ALT_RESET_EVENT_CDBGREQRST = 0x00080000,
/*! SDRAM Self-Refresh Timeout */
ALT_RESET_EVENT_SDRSELFREFTIMEOUT = 0x01000000,
/*! FPGA manager handshake Timeout */
ALT_RESET_EVENT_FPGAMGRHSTIMEOUT = 0x02000000,
/*! SCAN manager handshake Timeout */
ALT_RESET_EVENT_SCANHSTIMEOUT = 0x04000000,
/*! FPGA handshake Timeout */
ALT_RESET_EVENT_FPGAHSTIMEOUT = 0x08000000,
/*! ETR Stall Timeout */
ALT_RESET_EVENT_ETRSTALLTIMEOUT = 0x10000000
} ALT_RESET_EVENT_t;
/******************************************************************************/
/*!
* Gets the reset and timeout events that caused the last reset.
*
* The ALT_RESET_EVENT_t enumeration values should be used to selectively
* examine the returned reset cause(s).
*
* \returns A mask of the reset and/or timeout events that caused the last
* reset.
*/
uint32_t alt_reset_event_get(void);
/******************************************************************************/
/*!
* Clears the reset and timeout events that caused the last reset.
*
* \param event_mask
* A mask of the selected reset and timeout events to clear in the
* Reset Manager \e stat register. The mask selection can be formed
* using the ALT_RESET_EVENT_t enumeration values.
*
* \retval ALT_E_SUCCESS The operation was succesful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_reset_event_clear(uint32_t event_mask);
/*! @} */
/******************************************************************************/
/*! \addtogroup RST_MGR_CTRL Reset Control
*
* This functional group provides global and selective reset control for the SoC
* and its constituent modules.
*
* @{
*/
/******************************************************************************/
/*!
* Initiate a cold reset of the SoC.
*
* If this function is successful, then it should never return.
*
* \retval ALT_E_SUCCESS The operation was succesful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_reset_cold_reset(void);
/******************************************************************************/
/*!
* Initiate a warm reset of the SoC.
*
* Perform a hardware sequenced warm reset of the SoC. A hardware sequenced
* reset handshake with certain modules can optionally be requested in an
* attempt to ensure an orderly reset transition.
*
* \param warm_reset_delay
* Specifies the number of cycles after the Reset Manager releases
* the Clock Manager reset before releasing any other hardware
* controlled resets. Value must be greater than 16 and less than
* 256.
*
* \param nRST_pin_clk_assertion
* Specifies that number of clock cycles (osc1_clk?) to externally
* assert the warm reset pin (nRST). 0 <= \e nRST_pin_clk_assertion <=
* (2**20 - 1). A value of 0 prevents any assertion of nRST.
*
* \param sdram_refresh
* Controls whether the contents of SDRAM survive a hardware
* sequenced warm reset. The reset manager requests the SDRAM
* controller to put SDRAM devices into self-refresh mode before
* asserting warm reset signals. An argument value of \b true
* enables the option, \b false disables the option.
*
* \param fpga_mgr_handshake
* Controls whether a handshake between the reset manager and FPGA
* manager occurs before a warm reset. The handshake is used to
* warn the FPGA manager that a warm reset is imminent so it can
* prepare for it by driving its output clock to a quiescent state
* to avoid glitches. An argument value of \b true enables the
* option, \b false disables the option.
*
* \param scan_mgr_handshake
* Controls whether a handshake between the reset manager and scan
* manager occurs before a warm reset. The handshake is used to
* warn the scan manager that a warm reset is imminent so it can
* prepare for it by driving its output clock to a quiescent state
* to avoid glitches. An argument value of \b true enables the
* option, \b false disables the option.
*
* \param fpga_handshake
* Controls whether a handshake between the reset manager and the
* FPGA occurs before a warm reset. The handshake is used to warn
* the FPGA that a warm reset is imminent so that the FPGA prepare
* for the reset event in soft IP. An argument value of \b true
* enables the option, \b false disables the option.
*
* \param etr_stall
* Controls whether the ETR is requested to idle its AXI master
* interface (i.e. finish outstanding transactions and not initiate
* any more) to the L3 Interconnect before a warm reset. An
* argument value of \b true enables the option, \b false disables
* the option.
*
* \retval ALT_E_SUCCESS The operation was succesful.
* \retval ALT_E_ERROR The operation failed.
*/
ALT_STATUS_CODE alt_reset_warm_reset(uint32_t warm_reset_delay,
uint32_t nRST_pin_clk_assertion,
bool sdram_refresh,
bool fpga_mgr_handshake,
bool scan_mgr_handshake,
bool fpga_handshake,
bool etr_stall);
#if 0
/*! \addtogroup RST_MGR_MPU
*
* This functional group provides reset control for the Cortex-A9 MPU module.
*
* @{
*/
/*! @} */
/*! \addtogroup RST_MGR_PERIPH
*
* This functional group provides inidividual reset control for the HPS
* peripheral modules.
*
* @{
*/
/*! @} */
/*! \addtogroup RST_MGR_BRG
*
* This functional group provides inidividual reset control for the bridge
* interfaces between the HPS and FPGA.
*
* @{
*/
/*! @} */
/*! \addtogroup RST_MGR_MISC
*
* This functional group provides inidividual reset control for miscellaneous
* HPS modules.
*
* @{
*/
/*! @} */
#endif
/*! @} */
/*! @} */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __ALT_RESET_MGR_H__ */

View File

@@ -1,195 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/******************************************************************************
*
* Copyright 2013 Altera Corporation. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
******************************************************************************/
#ifndef __HWLIB_H__
#define __HWLIB_H__
#ifdef __cplusplus
#include <cstddef>
#include <cstdbool>
#include <cstdint>
#else /* __cplusplus */
#include <stddef.h>
#include <stdbool.h>
#include <stdint.h>
#endif /* __cplusplus */
#include "alt_hwlibs_ver.h"
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
/*!
* The type definition for status codes returned by the HWLIB.
*/
typedef int32_t ALT_STATUS_CODE;
/*! Definitions of status codes returned by the HWLIB. */
/*! The operation was successful. */
#define ALT_E_SUCCESS 0
/*! The operation failed. */
#define ALT_E_ERROR (-1)
/*! FPGA configuration error detected.*/
#define ALT_E_FPGA_CFG (-2)
/*! FPGA CRC error detected. */
#define ALT_E_FPGA_CRC (-3)
/*! An error occurred on the FPGA configuration bitstream input source. */
#define ALT_E_FPGA_CFG_STM (-4)
/*! The FPGA is powered off. */
#define ALT_E_FPGA_PWR_OFF (-5)
/*! The SoC does not currently control the FPGA. */
#define ALT_E_FPGA_NO_SOC_CTRL (-6)
/*! The FPGA is not in USER mode. */
#define ALT_E_FPGA_NOT_USER_MODE (-7)
/*! An argument violates a range constraint. */
#define ALT_E_ARG_RANGE (-8)
/*! A bad argument value was passed. */
#define ALT_E_BAD_ARG (-9)
/*! The operation is invalid or illegal. */
#define ALT_E_BAD_OPERATION (-10)
/*! An invalid option was selected. */
#define ALT_E_INV_OPTION (-11)
/*! An operation or response timeout period expired. */
#define ALT_E_TMO (-12)
/*! The argument value is reserved or unavailable. */
#define ALT_E_RESERVED (-13)
/*! A clock is not enabled or violates an operational constraint. */
#define ALT_E_BAD_CLK (-14)
/*! The version ID is invalid. */
#define ALT_E_BAD_VERSION (-15)
/*! The buffer does not contain enough free space for the operation. */
#define ALT_E_BUF_OVF (-20)
/*!
* Indicates a FALSE condition.
*/
#define ALT_E_FALSE (0)
/*!
* Indicates a TRUE condition.
*/
#define ALT_E_TRUE (1)
/* Note, additional positive status codes may be defined to return
* a TRUE condition with additional information */
/* Some other useful definitions */
/*!
* Specifies the current major and minor revision of the HWLibs. The
* MS four decimal digits specify the Altera ACDS release number, the
* LS two decimal digits specify minor revisions of the HWLibs, if any.
*
* A typical use is:
* \code
* #if ALTERA_HWLIBS_VERSION_CODE >= ALT_HWLIBS_VERSION(13, 1, 0)
* \endcode
* for a dependency on the major or minor ACDS revision
* or
* \code
* #if ALTERA_HWLIBS_VERSION_CODE == ALT_HWLIBS_VERSION(13, 0, 12)
* \endcode
* for a dependency on the hwlibs revision
*
*/
#define ALT_HWLIBS_VERSION(a,b,c) (((a)*10000)+((b)*100)+(c))
#define ALTERA_HWLIBS_VERSION_CODE ALT_HWLIBS_VERSION(ALTERA_ACDS_MAJOR_REV, \
ALTERA_ACDS_MINOR_REV, ALTERA_HWLIBS_REV)
/*!
* Allow some parts of the documentation to be hidden by setting to zero
*/
#define ALTERA_INTERNAL_ONLY_DOCS 1
/*!
* Provide base address of MPU address space
*/
#ifndef ALT_HPS_ADDR
#define ALT_HPS_ADDR 0
#endif
/*!
* These constants are sometimes useful:
*/
#define ALT_MILLISECS_IN_A_SEC 1000
#define ALT_MICROSECS_IN_A_SEC 1000000
#define ALT_NANOSECS_IN_A_SEC 1000000000
#define ALT_TWO_TO_POW0 (1)
#define ALT_TWO_TO_POW1 (1<<1)
#define ALT_TWO_TO_POW2 (1<<2)
#define ALT_TWO_TO_POW3 (1<<3)
#define ALT_TWO_TO_POW4 (1<<4)
#define ALT_TWO_TO_POW5 (1<<5)
#define ALT_TWO_TO_POW6 (1<<6)
#define ALT_TWO_TO_POW7 (1<<7)
#define ALT_TWO_TO_POW8 (1<<8)
#define ALT_TWO_TO_POW9 (1<<9)
#define ALT_TWO_TO_POW10 (1<<10)
#define ALT_TWO_TO_POW11 (1<<11)
#define ALT_TWO_TO_POW12 (1<<12)
#define ALT_TWO_TO_POW13 (1<<13)
#define ALT_TWO_TO_POW14 (1<<14)
#define ALT_TWO_TO_POW15 (1<<15)
#define ALT_TWO_TO_POW16 (1<<16)
#define ALT_TWO_TO_POW17 (1<<17)
#define ALT_TWO_TO_POW18 (1<<18)
#define ALT_TWO_TO_POW19 (1<<19)
#define ALT_TWO_TO_POW20 (1<<20)
#define ALT_TWO_TO_POW21 (1<<21)
#define ALT_TWO_TO_POW22 (1<<22)
#define ALT_TWO_TO_POW23 (1<<23)
#define ALT_TWO_TO_POW24 (1<<24)
#define ALT_TWO_TO_POW25 (1<<25)
#define ALT_TWO_TO_POW26 (1<<26)
#define ALT_TWO_TO_POW27 (1<<27)
#define ALT_TWO_TO_POW28 (1<<28)
#define ALT_TWO_TO_POW29 (1<<29)
#define ALT_TWO_TO_POW30 (1<<30)
#define ALT_TWO_TO_POW31 (1<<31)
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __HWLIB_H__ */

View File

@@ -1,94 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVI2C
*/
/*
* Copyright (c) 2014 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
* 82178 Puchheim
* Germany
* <info@embedded-brains.de>
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.org/license/LICENSE.
*/
#ifndef I2CDRV_H
#define I2CDRV_H
#include <rtems.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/**
* @defgroup RTEMSBSPsARMCycVI2C I2C Driver
*
* @ingroup RTEMSBSPsARMCycV
*
* @brief I2C Driver.
*
* @{
*/
rtems_device_driver i2cdrv_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
);
rtems_device_driver i2cdrv_open(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
);
rtems_device_driver i2cdrv_close(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
);
rtems_device_driver i2cdrv_read(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
);
rtems_device_driver i2cdrv_write(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
);
rtems_device_driver i2cdrv_ioctl(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
);
#define I2C_DRIVER_TABLE_ENTRY \
{ \
i2cdrv_initialize, \
i2cdrv_open, \
i2cdrv_close, \
i2cdrv_read, \
i2cdrv_write, \
i2cdrv_ioctl \
}
#define I2C_IOC_SET_SLAVE_ADDRESS 1
/** @} */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* I2CDRV_H */

View File

@@ -1,61 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVIRQ
*/
/*
* Copyright (c) 2013 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
* 82178 Puchheim
* Germany
* <info@embedded-brains.de>
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.org/license/LICENSE.
*/
#ifndef LIBBSP_ARM_ALTERA_CYCLONE_V_IRQ_H
#define LIBBSP_ARM_ALTERA_CYCLONE_V_IRQ_H
#ifndef ASM
#include <rtems/irq.h>
#include <rtems/irq-extension.h>
#include <bsp/arm-a9mpcore-irq.h>
#include <bsp/arm-gic-irq.h>
#include <bsp/alt_interrupt_common.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/**
* @defgroup RTEMSBSPsARMCycVIRQ Interrupt Support
*
* @ingroup RTEMSBSPsARMCycV
*
* @ingroup bsp_interrupt
*
* @brief Intel Cyclone V Interrupt Support.
*
* @{
*/
/* Use interrupt IDs as defined in alt_interrupt_common.h */
#define BSP_INTERRUPT_VECTOR_MIN ALT_INT_INTERRUPT_SGI0
#define BSP_INTERRUPT_VECTOR_MAX ALT_INT_INTERRUPT_RAM_ECC_UNCORRECTED_IRQ
/** @} */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* ASM */
#endif /* LIBBSP_ARM_ALTERA_CYCLONE_V_IRQ_H */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,150 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/*******************************************************************************
* *
* Copyright 2013 Altera Corporation. All Rights Reserved. *
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice, *
* this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright notice, *
* this list of conditions and the following disclaimer in the documentation *
* and/or other materials provided with the distribution. *
* *
* 3. The name of the author may not be used to endorse or promote products *
* derived from this software without specific prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR *
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO *
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, *
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, *
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR *
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF *
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
* *
*******************************************************************************/
/* Altera - ALT_DMANONSECURE */
#ifndef __ALTERA_ALT_DMANONSECURE_H__
#define __ALTERA_ALT_DMANONSECURE_H__
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
/*
* Component : nonsecure DMA Module Address Space - ALT_DMANONSECURE
* nonsecure DMA Module Address Space
*
* Address space allocated to the nonsecure DMA. For detailed information about the
* use of this address space,
* [url=http://infocenter.arm.com/help/topic/com.arm.doc.ddi0424b/index.html]click
* here[/url] to access the ARM documentation for the DMA-330.
*
*/
/*
* Register : Empty - reg
*
* Placeholder
*
* Register Layout
*
* Bits | Access | Reset | Description
* :-------|:-------|:--------|:------------
* [31:0] | RW | Unknown | Empty
*
*/
/*
* Field : Empty - fld
*
* Placeholder
*
* Field Access Macros:
*
*/
/* The Least Significant Bit (LSB) position of the ALT_DMANONSECURE_REG_FLD register field. */
#define ALT_DMANONSECURE_REG_FLD_LSB 0
/* The Most Significant Bit (MSB) position of the ALT_DMANONSECURE_REG_FLD register field. */
#define ALT_DMANONSECURE_REG_FLD_MSB 31
/* The width in bits of the ALT_DMANONSECURE_REG_FLD register field. */
#define ALT_DMANONSECURE_REG_FLD_WIDTH 32
/* The mask used to set the ALT_DMANONSECURE_REG_FLD register field value. */
#define ALT_DMANONSECURE_REG_FLD_SET_MSK 0xffffffff
/* The mask used to clear the ALT_DMANONSECURE_REG_FLD register field value. */
#define ALT_DMANONSECURE_REG_FLD_CLR_MSK 0x00000000
/* The reset value of the ALT_DMANONSECURE_REG_FLD register field is UNKNOWN. */
#define ALT_DMANONSECURE_REG_FLD_RESET 0x0
/* Extracts the ALT_DMANONSECURE_REG_FLD field value from a register. */
#define ALT_DMANONSECURE_REG_FLD_GET(value) (((value) & 0xffffffff) >> 0)
/* Produces a ALT_DMANONSECURE_REG_FLD register field value suitable for setting the register. */
#define ALT_DMANONSECURE_REG_FLD_SET(value) (((value) << 0) & 0xffffffff)
#ifndef __ASSEMBLY__
/*
* WARNING: The C register and register group struct declarations are provided for
* convenience and illustrative purposes. They should, however, be used with
* caution as the C language standard provides no guarantees about the alignment or
* atomicity of device memory accesses. The recommended practice for writing
* hardware drivers is to use the SoCAL access macros and alt_read_word() and
* alt_write_word() functions.
*
* The struct declaration for register ALT_DMANONSECURE_REG.
*/
struct ALT_DMANONSECURE_REG_s
{
uint32_t fld : 32; /* Empty */
};
/* The typedef declaration for register ALT_DMANONSECURE_REG. */
typedef volatile struct ALT_DMANONSECURE_REG_s ALT_DMANONSECURE_REG_t;
#endif /* __ASSEMBLY__ */
/* The byte offset of the ALT_DMANONSECURE_REG register from the beginning of the component. */
#define ALT_DMANONSECURE_REG_OFST 0x0
#ifndef __ASSEMBLY__
/*
* WARNING: The C register and register group struct declarations are provided for
* convenience and illustrative purposes. They should, however, be used with
* caution as the C language standard provides no guarantees about the alignment or
* atomicity of device memory accesses. The recommended practice for writing
* hardware drivers is to use the SoCAL access macros and alt_read_word() and
* alt_write_word() functions.
*
* The struct declaration for register group ALT_DMANONSECURE.
*/
struct ALT_DMANONSECURE_s
{
volatile ALT_DMANONSECURE_REG_t reg; /* ALT_DMANONSECURE_REG */
};
/* The typedef declaration for register group ALT_DMANONSECURE. */
typedef volatile struct ALT_DMANONSECURE_s ALT_DMANONSECURE_t;
/* The struct declaration for the raw register contents of register group ALT_DMANONSECURE. */
struct ALT_DMANONSECURE_raw_s
{
volatile uint32_t reg; /* ALT_DMANONSECURE_REG */
};
/* The typedef declaration for the raw register contents of register group ALT_DMANONSECURE. */
typedef volatile struct ALT_DMANONSECURE_raw_s ALT_DMANONSECURE_raw_t;
#endif /* __ASSEMBLY__ */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __ALTERA_ALT_DMANONSECURE_H__ */

View File

@@ -1,150 +0,0 @@
/**
* @file
*
* @ingroup RTEMSBSPsARMCycVContrib
*/
/*******************************************************************************
* *
* Copyright 2013 Altera Corporation. All Rights Reserved. *
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice, *
* this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright notice, *
* this list of conditions and the following disclaimer in the documentation *
* and/or other materials provided with the distribution. *
* *
* 3. The name of the author may not be used to endorse or promote products *
* derived from this software without specific prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY EXPRESS OR *
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO *
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, *
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, *
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR *
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF *
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
* *
*******************************************************************************/
/* Altera - ALT_DMASECURE */
#ifndef __ALTERA_ALT_DMASECURE_H__
#define __ALTERA_ALT_DMASECURE_H__
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
/*
* Component : secure DMA Module Address Space - ALT_DMASECURE
* secure DMA Module Address Space
*
* Address space allocated to the secure DMA. For detailed information about the
* use of this address space,
* [url=http://infocenter.arm.com/help/topic/com.arm.doc.ddi0424b/index.html]click
* here[/url] to access the ARM documentation for the DMA-330.
*
*/
/*
* Register : Empty - reg
*
* Placeholder
*
* Register Layout
*
* Bits | Access | Reset | Description
* :-------|:-------|:--------|:------------
* [31:0] | RW | Unknown | Empty
*
*/
/*
* Field : Empty - fld
*
* Placeholder
*
* Field Access Macros:
*
*/
/* The Least Significant Bit (LSB) position of the ALT_DMASECURE_REG_FLD register field. */
#define ALT_DMASECURE_REG_FLD_LSB 0
/* The Most Significant Bit (MSB) position of the ALT_DMASECURE_REG_FLD register field. */
#define ALT_DMASECURE_REG_FLD_MSB 31
/* The width in bits of the ALT_DMASECURE_REG_FLD register field. */
#define ALT_DMASECURE_REG_FLD_WIDTH 32
/* The mask used to set the ALT_DMASECURE_REG_FLD register field value. */
#define ALT_DMASECURE_REG_FLD_SET_MSK 0xffffffff
/* The mask used to clear the ALT_DMASECURE_REG_FLD register field value. */
#define ALT_DMASECURE_REG_FLD_CLR_MSK 0x00000000
/* The reset value of the ALT_DMASECURE_REG_FLD register field is UNKNOWN. */
#define ALT_DMASECURE_REG_FLD_RESET 0x0
/* Extracts the ALT_DMASECURE_REG_FLD field value from a register. */
#define ALT_DMASECURE_REG_FLD_GET(value) (((value) & 0xffffffff) >> 0)
/* Produces a ALT_DMASECURE_REG_FLD register field value suitable for setting the register. */
#define ALT_DMASECURE_REG_FLD_SET(value) (((value) << 0) & 0xffffffff)
#ifndef __ASSEMBLY__
/*
* WARNING: The C register and register group struct declarations are provided for
* convenience and illustrative purposes. They should, however, be used with
* caution as the C language standard provides no guarantees about the alignment or
* atomicity of device memory accesses. The recommended practice for writing
* hardware drivers is to use the SoCAL access macros and alt_read_word() and
* alt_write_word() functions.
*
* The struct declaration for register ALT_DMASECURE_REG.
*/
struct ALT_DMASECURE_REG_s
{
uint32_t fld : 32; /* Empty */
};
/* The typedef declaration for register ALT_DMASECURE_REG. */
typedef volatile struct ALT_DMASECURE_REG_s ALT_DMASECURE_REG_t;
#endif /* __ASSEMBLY__ */
/* The byte offset of the ALT_DMASECURE_REG register from the beginning of the component. */
#define ALT_DMASECURE_REG_OFST 0x0
#ifndef __ASSEMBLY__
/*
* WARNING: The C register and register group struct declarations are provided for
* convenience and illustrative purposes. They should, however, be used with
* caution as the C language standard provides no guarantees about the alignment or
* atomicity of device memory accesses. The recommended practice for writing
* hardware drivers is to use the SoCAL access macros and alt_read_word() and
* alt_write_word() functions.
*
* The struct declaration for register group ALT_DMASECURE.
*/
struct ALT_DMASECURE_s
{
volatile ALT_DMASECURE_REG_t reg; /* ALT_DMASECURE_REG */
};
/* The typedef declaration for register group ALT_DMASECURE. */
typedef volatile struct ALT_DMASECURE_s ALT_DMASECURE_t;
/* The struct declaration for the raw register contents of register group ALT_DMASECURE. */
struct ALT_DMASECURE_raw_s
{
volatile uint32_t reg; /* ALT_DMASECURE_REG */
};
/* The typedef declaration for the raw register contents of register group ALT_DMASECURE. */
typedef volatile struct ALT_DMASECURE_raw_s ALT_DMASECURE_raw_t;
#endif /* __ASSEMBLY__ */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __ALTERA_ALT_DMASECURE_H__ */

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More