summaryrefslogtreecommitdiffstats
path: root/make/custom (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:Joel Sherrill1999-07-308-35/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The main topic is replacing the hard-coded values for HAS_MP and HAS_RDBG in custom/*.cfg with per-bsp configuration-time autoconf checks (This is the patch I had mentioned before earlier this week). CHANGES * HAS_MP removed from custom/*.cfg, replaced with configuration time autoconf check * HAS_RDBG removed from custom/*.cfg, replaced with configuration-time autoconf check * NEW: c/src/make/bsp.cfg.in, takes configuration-time checked per-bsp values (i.e. HAS_MP, HAS_RDBG), gets installed as $(prefix)/<bsp>/make/bsp.cfg * NEW: default.cfg includes bsp.cfg - this change is backward compatible. * IMPORT_SRC: apply VPATH instead for ts_386ex/i386ex subdirectory Makefile.ins * HACK: a bug in acpolish mis-handles addtions to makefile variables which are enclosed in gmake conditionals: c/src/lib/libbsp/m68k/ods68302/start302/Makefile.in * Apply inline_dir, HAS_MP and HAS_RDBG for avoiding configuration of unneeded subdirectories in various configure.in files. * Several minor changes in Makefile.ins and configure.ins, wrt. to the order of including *.cfg and defining Makefile variables APPLYING THE PATCH: patch -p1 < rtems-rc-19990709-4.diff ./autogen
* Patch from Jay Kulpinski <jskulpin@eng01.gdds.com> to correctJoel Sherrill1999-07-273-3/+3
| | | | | definitions of CONSOLE_USE_POLLED to be !CONSOLE_USE_INTERRUPTS instead of ~CONSOLE_USE_INTERRUPTS.
* Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:Joel Sherrill1999-07-262-16/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is an addition to "The big-patch" CHANGES: * FIX: c/Makefile.am: bogus comment which changed the behavior of c/Makefile.am removed * FIX: make/custom/ts_i386ex.cfg did not set HAS_NETWORKING correctly (Me thinks it might have been me who added this bogus setting :-). * NEW: removing make targets get, protos, debug_install, profile_install * NEW: replacing clobber with distclean * NEW: Reimplement distclean and clean as reverse depth first make targets (adaptation to automake's behavior) * NEW: removing RCS_CLEAN from make distclean (tools/build/rcs_clean is still in - remove it?) * NEW: "$(RM) Makefile" added to make distclean (adaptation to automake's behavior) * NEW: "$(RM) config.cache config.log" to CLOBBER_ADDITIONS in [lib|exec|tests]/Makefile.in (adaptation to automake's behavior) * NEW: "$(CLEAN_PROTOS)" removed (Not used anywhere) * NEW: binpatch.c moved from i386 bsp tools to tools/build (AFAIS, binpatch is not specific to the pc386 BSP at all) * NEW: AC_EXEEXT added to all configure scripts which contain AC_PROG_CC (Cygwin support) * NEW/Experimental: An experimental implementation of temporary installation tree support in libbsp/i386/pc386/tools/Makefile.am, based on dependency tracking with make, instead of applying INSTALL_CHANGE. REMARK: * This patch is small in size, but changes the behavior of "make clean|distclean|clobber" basically. * This patch does not alter building/compiling RTEMS, ie. there should be no need to rerun all "make all" building tests. KNOWN BUGS: * make RTEMS_BSP="..." distclean in c/ runs "make distclean" in BSPs subdirectories passed through RTEMS_BSP and in "c/." only, but does not descend into other BSP subdirectories previously configured with different settings of make RTEMS_BSP="...". => Workaround: always use the same setting of RTEMS_BSP when working inside the build-tree. * "make [distclean|clean]" do not clean subdirectories, which have been configured at configuration time, but which are not used due to make-time configuration (e.g. macros/networking/rdgb subdirectories). This will problem will vanish by itself when migrating from make-time to configuration-time configuration APPLYING THE PATCH mv c/src/lib/libbsp/i386/pc386/tools/binpatch.c tools/build patch -p1 < rtems-rc-19990709-2.diff autogen
* This is part of a major patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>Joel Sherrill1999-07-262-0/+315
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to move RTEMS more to automake/autoconf and GNU compliance. Finally, here they are: the "big-patch" patches - merged into one big patch (~1.5MB). Sorry for the delay, but testing took much more time than I had expected - esp. reworking the acpolish script triggered many more tiny issues than I had expected (cf. below). At least, now you've got something to spend your weekend with :-. WARNINGS: * I've gone a little (??) further than I had announced before. * Several directories have been moved. * Several files have been added and removed * I have tested it with many BSPs/CPUs and a variety of permutiations of configuration flags, but not with all. * Most parts of the patch are automatically generated, however there are many tiny manual modifications. APPLYING THE PATCH: ./autogen -c mkdir tools mv c/src/exec/score/tools tools/cpu mv c/build-tools tools/build mv c/update-tools tools/update patch -p1 -E < rtems-rc-19990709-0.diff ./autogen If the patch doesn't apply to rtems-cvs, I would suggest that you should try to apply it brute-force and then to run tools/update/rtems-polish.sh -ac -am afterwards. A recursive diff between rtems-19990709 + patch and rtems-cvs + patch then should report only a few dozen significant changes to configuration files which need to be merged manually (IIRC, I did not change any source files). *** Attention: There are files to be removed, moved, copied and added in/to CVS! NEWS/CHANGES: 1. Configuration takes place in 3 stages: 1. per host (toplevel configure script), 2. per target (c/configure), 3. per bsp c/src/configure automatically triggered from ./configure and c/Makefile.am. 2. Building of subdirectory c/ takes place in c/$(target_alias) for cross-targets in c/ for native targets 3. Building of subdirectory c/src takes place in c/${target_alias}/<bsp> for cross-targets, c/<bsp> for native targets 4. c/build-tools moved to tools/build 5. c/src/exec/score/cpu/tools moved to tools/cpu (=cpu-tools split out) 6. c/update-tools moved to tools/update 7. New subdirectory c/src/make, handles files from make/ on a per BSP basis 8. Maintainer mode support: Ie. if configuring with --enable-maintainer-mode disabled (the default), then tracking of many dependencies will be disabled in Makefiles. Esp. many dependencies for auto* generated files will be switched off in Makefiles. Ie. if not using "--enable-maintainer-mode" many auto* generated files will not be updated automatically, i.e. normal users should not be required to have auto* tools anymore (untested). 9. Independent configuration scripts for / (toplevel), tools/build, tools/cpu, tools/update, c/, c/src/, c/src/exec, c/src/lib, c/src/tests, c/src/make 10. Automake support for all directories above and besides c/src 11. "preinstall" now is implemented as depth-first recursive make target 12. host compiled tools (exception bsp-tools) are accessed in location in the build tree instead of inside the build-tree when building RTEMS. 13. RTEMS_ROOT and PROJECT_ROOT now point to directories inside the build-tree - many tiny changes as consequence from this. 14. --with-cross-host support removed (offically announced obsolete by cygnus) 15. Changing the order of building libraries below c/src/lib/ 16. Former toplevel configure script broken into aclocal/*.m4 macros 17. Newlib now detected by configure macros, RTEMS_HAS_NEWLIB removed from *cfg. 18. sptables.h now generated by autoconf 19. Rules for "mkinstalldirs temporary installation tree" moved from c/Makefile to subdirectories. 20. Cpu-tools do not get installed. 21. FIX: Use ACLOCAL_AMFLAGS instead of ACLOCAL = -I ... in Makefile.ams which are in directories with own configure scripts. 22. Hardcoding BSP names into libbsp/.../tools to avoid RTEMS_BSP get overridden from the environment. 22. FIX: Handling of MP_PIECES in various Makefiles 23. FIX: Removing "::" rules from some Makefile.ins 24. FIX: File permission chaos: (-m 444 and -m 555 vs. -m 644 and -m 755) - Now all include files use -m 644. 25. Removed many gnumake-conditionals in Makefile.ins - Partially replaced with automake-conditional, partially replaced with conditionalized Makefile variables (... _yes_V) 26. Massively reworked acpolish: acpolish now parses Makefile.ins and interprets parts of the Makefile.ins. 27. FIX: Some $(wildcard $(srcdir)/*.h) macros removed / replaced with explicit lists of files in Makefile.ins. 28. FIX: Replacing MKLIB with RANLIB in Makefile.ins 29. HACK: Add preinstallation for pc386 specific $(PROJECT_RELEASE)/BootImgs directory ... many more details, I can't recall KNOWN BUGS: 1. make [debug|profile]_install do not do what they are promissing. "make [debug|profile] install" does what "make [debug|profile]_install" has been doing. Proposal: remove [debug|profile]_install 2. Dependencies between temporary installation tree and source tree are not yet handled correctly. 3. Dependencies between temporary installation tree and source tree are handled ineffencently (Using INSTALL_CHANGE instead of make dependencies) 4. RTEMS_ROOT, PROJECT_ROOT, top_builddir, RTEMS_TOPdir now are redundant. 5. The new configure scripts still are in their infancy. They contain redundant checks and might still contain bugs, too. 6. RTEMS autoconf Makefile.ins use a mixture of configuration information gathered in c/$(target_alias)/<bsp>/make and of information collected from their configure scripts. 7. make dist is not fully functional 8. Subdirectory host-/build-/target- configure options (--target, --host, --build) do not conform to Cygnus/GNU conventions. 9. Some RTEMS autoconf Makefile.in's makefile targets are not supported in automake Makefile.ams/ins (e.g. get, clobber). 10. Some automake standard targets are not propagated from toplevel and c/Makefile.am to autoconf subdirectories (eg. make dist). 11. rpcgen generated files are not part of the source-tree (Automake conventions favor supplying generated files inside the source-tree, however there is no support for rpcgen generated files in automake, cf. yacc/lex support in automake). 12. RTEMS_HAS_RDBG handling is flaky. make/*.cfg use RTEMS_HAS_RDBG per CPU, while librdb's sources can only be built per BSP. Raises the more general question whether librdbg located correctly in the source-tree. 13. All make/*cfg files are configured per cpu, currently there is no location to store per-bsp configuration information --> bsp.cfg, per aconfig.h? 14. "make install" without having run "make all" beforehand does not work. 15. handling of --enable-multiprocessing seems to be broken in make/custom/* 16. Makefile.ins still exploit many gmake features. 17. File permisson chaos on libraries (no explict -m for libraries/rels/etc). 18. mcp750 Makefiles are broken (Note: I *do* mean buggy - I am not talking about "not-conforming to conventions", here :-). 19. Dependencies between configure scripts are not handled, eg. aborting "make RTEMS_BSP=<bsp>" can leave the build-tree in an unusable state. 20. "make clean" does not delete <build-tree>/<bsp>. This is intentional for now, because rerunning "make" after "make clean" requires an explicit "make preinstall" afterwards now. This should be done automatically, but doesn't work in this case for now. To work around this problem <build-tree>/<bsp> is kept during "make clean" for now (HACK). TODO: 1. split out host-compiled bsp-tools 2. Use Cygnus/GNU standards for cross-compiling target-subdir (CC=CC_FOR_TARGET .. configure --host=${target_alias} --build=`config.guess'}), to be added to toplevel configure script after splitting out bsp-tools. 3. Exploit per cpu support directory (c/src/<cpu>)- Splitting out per-cpu libraries - Are there any? 4. Further automake support 5. Converting subdirectories into standalone / self-contained subdirectories (Esp. moving their headers to the same common root as their sources, eg. mv lib/include/rtems++ lib/librtems++/include/rtems++) - This is the main obstacle which prevents moving further towards automake. 6. Propagating values from *.cfg into Makefiles instead of propagating them at make time via Makefile-fragments (i.e. try to avoid using *.cfg). 7. Testing on cygwin host (I *do* expect cygwin specific problems). 8. The ARCH in o-$(ARCH)-$(VARIANT) build-subdirectories is not needed anymore. GENERAL ISSUES: 1. Temporary installation tree -- Ian and I seem to disagree basically. Though I think that I understand his argumentation, I do not share it. IMO, his way of using the buildtree is mis-using the build-tree, relying on an inofficial feature of RTEMS's current implementation, which doesn't even work correctly in the current build-tree, though it attempts hard to do so. From my very POV, it unnecessarily complicates the structures of the source- and build-trees. It is not supported by automake (No automatic generation for the necessary rules) and complicates the transition to automake significantly (Generating the rules with an enhanced version of acpolish could be possible). As Ian correctly pointed out, here a management decision is needed - though I don't see the need to draw this decision in short terms. 2. preinstallation generally is a sure means to spoil the structure of the source tree, IMHO (No ranting intended, I am completly serious about this one). eg. through tree dependencies. The worst problem related to this I have found in the meantime is bsp_specs. bsp_specs is part of libbsp, ie. there is *no* way to build *any* part of the source tree *without* having a BSP *preinstalled*. Note: This issue is related to issue 1., but is not identical - The difference is the change of the order make rules have to be triggered. While preinstallation triggers rules spread all over the source tree before a "make all" can be run, a temporary installation tree could also be installed by post "make all" hooks (all-local:, to be run after make all in a directory is completed) if the directories' dependencies would be a tree, 3. Stuctural dependencies between subdirectories. 4. Depth of the source tree (Prevents multilibbing and introduces many unnecessary configure scripts). 5. per cpu vs. per bsp configuration (There are no real per-cpu parts yets :-). 6. automake does not support $makefiles in AC_OUTPUT. Unlike before, we now should try to avoid RTEMS_CHECK_MAKEFILE and to hard-code as much paths to Makefiles as possible. 7. General redesign of the source tree 8. Main installation point - Changing it to ${prefix}/${target_alias}. ? Besides item 8. (which is a must, IMHO), as far as I see most of them can not be solved soon and will remain issues in the mid- to long-term :-. REMARKS: * You (as the maintainer) should always use --enable-maintainer-mode when building RTEMS to ensure that maintainer mode generated files (esp. those in c/src/make) will be updated when make/* files have changed. * Use @RTEMS_BSP@ in Makefile.ins and Makefile.ams below c/src/, $(RTEMS_BSP) or ${RTEMS_BSP} will be overridden from environment variables when using make RTEMS_BSP="....". * c/src/make is a temporary cludge until configuration issues are solved. At the moment it is configured per bsp, but contains per-target/cpu info only. Its main purpose now is to circumvent modifying make/*.cfg files, because I consider make/* to be frozen for backward compatibilty. * This patch should only affect configuration files. At least I do not remember having touched any source files. * To build the bare bsp you now need to mention it in --enable-rtemsbsp. Example: building gensh1 and sh1/bare simultaneously: ../rtems-rc-19990709-1/configure --target=sh-rtems \ --enable-rtemsbsp="bare gensh1" \ --prefix=/tmp/rtems \ --enable-bare-cpu-cflags='-DMHZ=20 -m1 -DCPU_CONSOLE_DEVNAME=\"/dev/null\"' \ --enable-bare-cpu-model=sh7032 \ --enable-maintainer-mode \ --enable-cxx make make install * The next steps in development would be to split out bsp-tools and then to change to Cygnus/GNU canonicalization conventions for building the c/ subdirectory afterwards (i.e. many standard AC_*.m4 macros could be used instead of customized versions) FINAL REMARK: The issues mentioned in the lists above sound much worser than the situation actually is. Most of them are not specific to this patch, but are also valid for the snapshot. I just wrote down what I came across when working on the patch over the last few weeks. I wouldn't be too surprised if you don't like the patch at the current point in development. I am willing to discuss details and problems, I also have no problem if you would post-pone applying this patch to times after 4.1, but rejecting it as a whole for all times would be a false management decision, IMHO. Therefore I would suggest that you, if your time constaints allow it, should at least play a little while with this patch to understand what is going on and before drawing a decision on how to handle this proposal. I know this patch is neither perfect nor complete, but I consider it to be a major breakthrough. Don't be anxious because of the size of the patch, the core of the patch is rather small, the size is mainly the side effect of some systematic cleanups inside the Makefiles (result of acpolish). Feel free to ask if you encounter problems, if you don't understand something or if you meet bugs - I am far from being perfect and am prepared to answer them. Ralf. -- Ralf Corsepius Forschungsinstitut fuer Anwendungsorientierte Wissensverarbeitung (FAW) Helmholtzstr. 16, 89081 Ulm, Germany Tel: +49/731/501-8690 mailto:corsepiu@faw.uni-ulm.de FAX: +49/731/501-999 http://www.faw.uni-ulm.de
* This is part of a major patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>Joel Sherrill1999-07-269-33/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to move RTEMS more to automake/autoconf and GNU compliance. Finally, here they are: the "big-patch" patches - merged into one big patch (~1.5MB). Sorry for the delay, but testing took much more time than I had expected - esp. reworking the acpolish script triggered many more tiny issues than I had expected (cf. below). At least, now you've got something to spend your weekend with :-. WARNINGS: * I've gone a little (??) further than I had announced before. * Several directories have been moved. * Several files have been added and removed * I have tested it with many BSPs/CPUs and a variety of permutiations of configuration flags, but not with all. * Most parts of the patch are automatically generated, however there are many tiny manual modifications. APPLYING THE PATCH: ./autogen -c mkdir tools mv c/src/exec/score/tools tools/cpu mv c/build-tools tools/build mv c/update-tools tools/update patch -p1 -E < rtems-rc-19990709-0.diff ./autogen If the patch doesn't apply to rtems-cvs, I would suggest that you should try to apply it brute-force and then to run tools/update/rtems-polish.sh -ac -am afterwards. A recursive diff between rtems-19990709 + patch and rtems-cvs + patch then should report only a few dozen significant changes to configuration files which need to be merged manually (IIRC, I did not change any source files). *** Attention: There are files to be removed, moved, copied and added in/to CVS! NEWS/CHANGES: 1. Configuration takes place in 3 stages: 1. per host (toplevel configure script), 2. per target (c/configure), 3. per bsp c/src/configure automatically triggered from ./configure and c/Makefile.am. 2. Building of subdirectory c/ takes place in c/$(target_alias) for cross-targets in c/ for native targets 3. Building of subdirectory c/src takes place in c/${target_alias}/<bsp> for cross-targets, c/<bsp> for native targets 4. c/build-tools moved to tools/build 5. c/src/exec/score/cpu/tools moved to tools/cpu (=cpu-tools split out) 6. c/update-tools moved to tools/update 7. New subdirectory c/src/make, handles files from make/ on a per BSP basis 8. Maintainer mode support: Ie. if configuring with --enable-maintainer-mode disabled (the default), then tracking of many dependencies will be disabled in Makefiles. Esp. many dependencies for auto* generated files will be switched off in Makefiles. Ie. if not using "--enable-maintainer-mode" many auto* generated files will not be updated automatically, i.e. normal users should not be required to have auto* tools anymore (untested). 9. Independent configuration scripts for / (toplevel), tools/build, tools/cpu, tools/update, c/, c/src/, c/src/exec, c/src/lib, c/src/tests, c/src/make 10. Automake support for all directories above and besides c/src 11. "preinstall" now is implemented as depth-first recursive make target 12. host compiled tools (exception bsp-tools) are accessed in location in the build tree instead of inside the build-tree when building RTEMS. 13. RTEMS_ROOT and PROJECT_ROOT now point to directories inside the build-tree - many tiny changes as consequence from this. 14. --with-cross-host support removed (offically announced obsolete by cygnus) 15. Changing the order of building libraries below c/src/lib/ 16. Former toplevel configure script broken into aclocal/*.m4 macros 17. Newlib now detected by configure macros, RTEMS_HAS_NEWLIB removed from *cfg. 18. sptables.h now generated by autoconf 19. Rules for "mkinstalldirs temporary installation tree" moved from c/Makefile to subdirectories. 20. Cpu-tools do not get installed. 21. FIX: Use ACLOCAL_AMFLAGS instead of ACLOCAL = -I ... in Makefile.ams which are in directories with own configure scripts. 22. Hardcoding BSP names into libbsp/.../tools to avoid RTEMS_BSP get overridden from the environment. 22. FIX: Handling of MP_PIECES in various Makefiles 23. FIX: Removing "::" rules from some Makefile.ins 24. FIX: File permission chaos: (-m 444 and -m 555 vs. -m 644 and -m 755) - Now all include files use -m 644. 25. Removed many gnumake-conditionals in Makefile.ins - Partially replaced with automake-conditional, partially replaced with conditionalized Makefile variables (... _yes_V) 26. Massively reworked acpolish: acpolish now parses Makefile.ins and interprets parts of the Makefile.ins. 27. FIX: Some $(wildcard $(srcdir)/*.h) macros removed / replaced with explicit lists of files in Makefile.ins. 28. FIX: Replacing MKLIB with RANLIB in Makefile.ins 29. HACK: Add preinstallation for pc386 specific $(PROJECT_RELEASE)/BootImgs directory ... many more details, I can't recall KNOWN BUGS: 1. make [debug|profile]_install do not do what they are promissing. "make [debug|profile] install" does what "make [debug|profile]_install" has been doing. Proposal: remove [debug|profile]_install 2. Dependencies between temporary installation tree and source tree are not yet handled correctly. 3. Dependencies between temporary installation tree and source tree are handled ineffencently (Using INSTALL_CHANGE instead of make dependencies) 4. RTEMS_ROOT, PROJECT_ROOT, top_builddir, RTEMS_TOPdir now are redundant. 5. The new configure scripts still are in their infancy. They contain redundant checks and might still contain bugs, too. 6. RTEMS autoconf Makefile.ins use a mixture of configuration information gathered in c/$(target_alias)/<bsp>/make and of information collected from their configure scripts. 7. make dist is not fully functional 8. Subdirectory host-/build-/target- configure options (--target, --host, --build) do not conform to Cygnus/GNU conventions. 9. Some RTEMS autoconf Makefile.in's makefile targets are not supported in automake Makefile.ams/ins (e.g. get, clobber). 10. Some automake standard targets are not propagated from toplevel and c/Makefile.am to autoconf subdirectories (eg. make dist). 11. rpcgen generated files are not part of the source-tree (Automake conventions favor supplying generated files inside the source-tree, however there is no support for rpcgen generated files in automake, cf. yacc/lex support in automake). 12. RTEMS_HAS_RDBG handling is flaky. make/*.cfg use RTEMS_HAS_RDBG per CPU, while librdb's sources can only be built per BSP. Raises the more general question whether librdbg located correctly in the source-tree. 13. All make/*cfg files are configured per cpu, currently there is no location to store per-bsp configuration information --> bsp.cfg, per aconfig.h? 14. "make install" without having run "make all" beforehand does not work. 15. handling of --enable-multiprocessing seems to be broken in make/custom/* 16. Makefile.ins still exploit many gmake features. 17. File permisson chaos on libraries (no explict -m for libraries/rels/etc). 18. mcp750 Makefiles are broken (Note: I *do* mean buggy - I am not talking about "not-conforming to conventions", here :-). 19. Dependencies between configure scripts are not handled, eg. aborting "make RTEMS_BSP=<bsp>" can leave the build-tree in an unusable state. 20. "make clean" does not delete <build-tree>/<bsp>. This is intentional for now, because rerunning "make" after "make clean" requires an explicit "make preinstall" afterwards now. This should be done automatically, but doesn't work in this case for now. To work around this problem <build-tree>/<bsp> is kept during "make clean" for now (HACK). TODO: 1. split out host-compiled bsp-tools 2. Use Cygnus/GNU standards for cross-compiling target-subdir (CC=CC_FOR_TARGET .. configure --host=${target_alias} --build=`config.guess'}), to be added to toplevel configure script after splitting out bsp-tools. 3. Exploit per cpu support directory (c/src/<cpu>)- Splitting out per-cpu libraries - Are there any? 4. Further automake support 5. Converting subdirectories into standalone / self-contained subdirectories (Esp. moving their headers to the same common root as their sources, eg. mv lib/include/rtems++ lib/librtems++/include/rtems++) - This is the main obstacle which prevents moving further towards automake. 6. Propagating values from *.cfg into Makefiles instead of propagating them at make time via Makefile-fragments (i.e. try to avoid using *.cfg). 7. Testing on cygwin host (I *do* expect cygwin specific problems). 8. The ARCH in o-$(ARCH)-$(VARIANT) build-subdirectories is not needed anymore. GENERAL ISSUES: 1. Temporary installation tree -- Ian and I seem to disagree basically. Though I think that I understand his argumentation, I do not share it. IMO, his way of using the buildtree is mis-using the build-tree, relying on an inofficial feature of RTEMS's current implementation, which doesn't even work correctly in the current build-tree, though it attempts hard to do so. From my very POV, it unnecessarily complicates the structures of the source- and build-trees. It is not supported by automake (No automatic generation for the necessary rules) and complicates the transition to automake significantly (Generating the rules with an enhanced version of acpolish could be possible). As Ian correctly pointed out, here a management decision is needed - though I don't see the need to draw this decision in short terms. 2. preinstallation generally is a sure means to spoil the structure of the source tree, IMHO (No ranting intended, I am completly serious about this one). eg. through tree dependencies. The worst problem related to this I have found in the meantime is bsp_specs. bsp_specs is part of libbsp, ie. there is *no* way to build *any* part of the source tree *without* having a BSP *preinstalled*. Note: This issue is related to issue 1., but is not identical - The difference is the change of the order make rules have to be triggered. While preinstallation triggers rules spread all over the source tree before a "make all" can be run, a temporary installation tree could also be installed by post "make all" hooks (all-local:, to be run after make all in a directory is completed) if the directories' dependencies would be a tree, 3. Stuctural dependencies between subdirectories. 4. Depth of the source tree (Prevents multilibbing and introduces many unnecessary configure scripts). 5. per cpu vs. per bsp configuration (There are no real per-cpu parts yets :-). 6. automake does not support $makefiles in AC_OUTPUT. Unlike before, we now should try to avoid RTEMS_CHECK_MAKEFILE and to hard-code as much paths to Makefiles as possible. 7. General redesign of the source tree 8. Main installation point - Changing it to ${prefix}/${target_alias}. ? Besides item 8. (which is a must, IMHO), as far as I see most of them can not be solved soon and will remain issues in the mid- to long-term :-. REMARKS: * You (as the maintainer) should always use --enable-maintainer-mode when building RTEMS to ensure that maintainer mode generated files (esp. those in c/src/make) will be updated when make/* files have changed. * Use @RTEMS_BSP@ in Makefile.ins and Makefile.ams below c/src/, $(RTEMS_BSP) or ${RTEMS_BSP} will be overridden from environment variables when using make RTEMS_BSP="....". * c/src/make is a temporary cludge until configuration issues are solved. At the moment it is configured per bsp, but contains per-target/cpu info only. Its main purpose now is to circumvent modifying make/*.cfg files, because I consider make/* to be frozen for backward compatibilty. * This patch should only affect configuration files. At least I do not remember having touched any source files. * To build the bare bsp you now need to mention it in --enable-rtemsbsp. Example: building gensh1 and sh1/bare simultaneously: ../rtems-rc-19990709-1/configure --target=sh-rtems \ --enable-rtemsbsp="bare gensh1" \ --prefix=/tmp/rtems \ --enable-bare-cpu-cflags='-DMHZ=20 -m1 -DCPU_CONSOLE_DEVNAME=\"/dev/null\"' \ --enable-bare-cpu-model=sh7032 \ --enable-maintainer-mode \ --enable-cxx make make install * The next steps in development would be to split out bsp-tools and then to change to Cygnus/GNU canonicalization conventions for building the c/ subdirectory afterwards (i.e. many standard AC_*.m4 macros could be used instead of customized versions) FINAL REMARK: The issues mentioned in the lists above sound much worser than the situation actually is. Most of them are not specific to this patch, but are also valid for the snapshot. I just wrote down what I came across when working on the patch over the last few weeks. I wouldn't be too surprised if you don't like the patch at the current point in development. I am willing to discuss details and problems, I also have no problem if you would post-pone applying this patch to times after 4.1, but rejecting it as a whole for all times would be a false management decision, IMHO. Therefore I would suggest that you, if your time constaints allow it, should at least play a little while with this patch to understand what is going on and before drawing a decision on how to handle this proposal. I know this patch is neither perfect nor complete, but I consider it to be a major breakthrough. Don't be anxious because of the size of the patch, the core of the patch is rather small, the size is mainly the side effect of some systematic cleanups inside the Makefiles (result of acpolish). Feel free to ask if you encounter problems, if you don't understand something or if you meet bugs - I am far from being perfect and am prepared to answer them. Ralf. -- Ralf Corsepius Forschungsinstitut fuer Anwendungsorientierte Wissensverarbeitung (FAW) Helmholtzstr. 16, 89081 Ulm, Germany Tel: +49/731/501-8690 mailto:corsepiu@faw.uni-ulm.de FAX: +49/731/501-999 http://www.faw.uni-ulm.de
* Patch from Jiri Gaisler <jgais@ws.estec.esa.nl>:Joel Sherrill1999-07-091-0/+4
| | | | | | + interrupt masking correction + FPU rev.B workaround + minor erc32 related fixes
* Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:Joel Sherrill1999-06-141-2/+5
| | | | | | * Use $(PACKHEX) instead of $(PROJECT_TOOLS)/packhex * Set HAS_RDBG=no for ts_386ex otherwise building it will attempt to compile librdbg for pc386
* Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:Joel Sherrill1999-06-141-2/+2
| | | | | | | * RTEMS_CPU for score603e should be "powerpc" instead of "ppc" (Should not have any side-effects, because RTEMS_CPU in make/custom/*.cfg already is overridden in make/target.cfg.in) * Use $(PACKHEX) instead of $(PROJECT_TOOLS)/packhex
* This is a large patch from Eric Valette <valette@crf.canon.fr> that wasJoel Sherrill1999-06-141-0/+123
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | described in the message following this paragraph. This patch also includes a mcp750 BSP. From valette@crf.canon.fr Mon Jun 14 10:03:08 1999 Date: Tue, 18 May 1999 01:30:14 +0200 (CEST) From: VALETTE Eric <valette@crf.canon.fr> To: joel@oarcorp.com Cc: raguet@crf.canon.fr, rtems-snapshots@oarcorp.com, valette@crf.canon.fr Subject: Questions/Suggestion regarding RTEMS PowerPC code (long) Dear knowledgeable RTEMS powerpc users, As some of you may know, I'm currently finalizing a port of RTEMS on a MCP750 Motorola board. I have done most of it but have some questions to ask before submitting the port. In order to understand some of the changes I have made or would like to make, maybe it is worth describing the MCP750 Motorola board. the MCP750 is a COMPACT PCI powerpc board with : 1) a MPC750 233 MHz processor, 2) a raven bus bridge/PCI controller that implement an OPENPIC compliant interrupt controller, 3) a VIA 82C586 PCI/ISA bridge that offers a PC compliant IO for keyboard, serial line, IDE, and the well known PC 8259 cascaded PIC interrupt architecture model, 4) a DEC 21140 Ethernet controller, 5) the PPCBUG Motorola firmware in flash, 6) A DEC PCI bridge, This architecture is common to most Motorola 60x/7xx board except that : 1) on VME board, the DEC PCI bridge is replaced by a VME chipset, 2) the VIA 82C586 PCI/ISA bridge is replaced by another bridge that is almost fully compatible with the via bridge... So the port should be a rather close basis for many 60x/7xx motorola board... On this board, I already have ported Linux 2.2.3 and use it both as a development and target board. Now the questions/suggestions I have : 1) EXCEPTION CODE ------------------- As far as I know exceptions on PPC are handled like interrupts. I dislike this very much as : a) Except for the decrementer exception (and maybe some other on mpc8xx), exceptions are not recoverable and the handler just need to print the full context and go to the firmware or debugger... b) The interrupt switch is only necessary for the decrementer and external interrupt (at least on 6xx,7xx). c) The full context for exception is never saved and thus cannot be used by debugger... I do understand the most important for interrupts low level code is to save the minimal context enabling to call C code for performance reasons. On non recoverable exception on the other hand, the most important is to save the maximum information concerning proc status in order to analyze the reason of the fault. At least we will need this in order to implement the port of RGDB on PPC ==> I wrote an API for connecting raw exceptions (and thus raw interrupts) for mpc750. It should be valid for most powerpc processors... I hope to find a way to make this coexist with actual code layout. The code is actually located in lib/libcpu/powerpc/mpc750 and is thus optional (provided I write my own version of exec/score/cpu/powerpc/cpu.c ...) See remark about files/directory layout organization in 4) 2) Current Implementation of ISR low level code ----------------------------------------------- I do not understand why the MSR EE flags is cleared again in exec/score/cpu/powerpc/irq_stubs.S #if (PPC_USE_SPRG) mfmsr r5 mfspr r6, sprg2 #else lwz r6,msr_initial(r11) lis r5,~PPC_MSR_DISABLE_MASK@ha ori r5,r5,~PPC_MSR_DISABLE_MASK@l and r6,r6,r5 mfmsr r5 #endif Reading the doc, when a decrementer interrupt or an external interrupt is active, the MSR EE flag is already cleared. BTW if exception/interrupt could occur, it would trash SRR0 and SRR1. In fact the code may be useful to set MSR[RI] that re-enables exception processing. BTW I will need to set other value in MSR to handle interrupts : a) I want the MSR[IR] and MSR[DR] to be set for performance reasons and also because I need DBAT support to have access to PCI memory space as the interrupt controller is in the PCI space. Reading the code, I see others have the same kind of request : /* SCE 980217 * * We need address translation ON when we call our ISR routine mtmsr r5 */ This is just another prof that even the lowest level IRQ code is fundamentally board dependent and not simply processor dependent especially when the processor use external interrupt controller because it has a single interrupt request line... Note that if you look at the PPC code high level interrupt handling code, as the "set_vector" routine that really connects the interrupt is in the BSP/startup/genpvec.c, the fact that IRQ handling is BSP specific is DE-FACTO acknowledged. I know I have already expressed this and understand that this would require some heavy change in the code but believe me you will reach a point where you will not be able to find a compatible while optimum implementation for low level interrupt handling code...) In my case this is already true... So please consider removing low level IRQ handling from exec/score/cpu/* and only let there exception handling code... Exceptions are usually only processor dependent and do not depend on external hardware mechanism to be masked or acknowledged or re-enabled (there are probably exception but ...) I have already done this for pc386 bsp but need to make it again. This time I will even propose an API. 3) R2/R13 manipulation for EABI implementation ---------------------------------------------- I do not understand the handling of r2 and r13 in the EABI case. The specification for r2 says pointer to sdata2, sbss2 section => constant. However I do not see -ffixed-r2 passed to any compilation system in make/custom/* (for info linux does this on PPC). So either this is a default compiler option when choosing powerpc-rtems and thus we do not need to do anything with this register as all the code is compiled with this compiler and linked together OR this register may be used by rtems code and then we do not need any special initialization or handling. The specification for r13 says pointer to the small data area. r13 argumentation is the same except that as far as I know the usage of the small data area requires specific compiler support so that access to variables is compiled via loading the LSB in a register and then using r13 to get full address... It is like a small memory model and it was present in IBM C compilers. => I propose to suppress any specific code for r2 and r13 in the EABI case. 4) Code layout organization (yes again :-)) ------------------------------------------- I think there are a number of design flaws in the way the code is for ppc organized and I will try to point them out. I have been beaten by this again on this new port, and was beaten last year while modifying code for pc386. a) exec/score/cpu/* vs lib/libcpu/cpu/*. I think that too many things are put in exec/score/cpu that have nothing to do with RTEMS internals but are rather related to CPU feature. This include at least : a) registers access routine (e.g GET_MSR_Value), b) interrupt masking/unmasking routines, c) cache_mngt_routine, d) mmu_mngt_routine, e) Routines to connect the raw_exception, raw_interrupt handler, b) lib/libcpu/cpu/powerpc/* With a processor family as exuberant as the powerpc family, and their well known subtle differences (604 vs 750) or unfortunately majors (8xx vs 60x) the directory structure is fine (except maybe the names that are not homogeneous) powerpc ppc421 mpc821 ... I only needed to add mpc750. But the fact that libcpu.a was not produced was a pain and the fact that this organization may duplicates code is also problematic. So, except if the support of automake provides a better solution I would like to propose something like this : powerpc mpc421 mpc821 ... mpc750 shared wrapup with the following rules : a) "shared" would act as a source container for sources that may be shared among processors. Needed files would be compiled inside the processor specific directory using the vpath Makefile mechanism. "shared" may also contain compilation code for routine that are really shared and not worth to inline... (did not found many things so far as registers access routine ARE WORTH INLINING)... In the case something is compiled there, it should create libcpushared.a b) layout under processor specific directory is free provided that 1)the result of the compilation process exports : libcpu/powerpc/"PROC"/*.h in $(PROJECT_INCLUDE)/libcpu 2) each processor specific directory creates a library called libcpuspecific.a Note that this organization enables to have a file that is nearly the same than in shared but that must differ because of processor differences... c) "wrapup" should create libcpu.a using libcpushared.a libcpuspecific.a and export it $(PROJECT_INCLUDE)/libcpu The only thing I have no ideal solution is the way to put shared definitions in "shared" and only processor specific definition in "proc". To give a concrete example, most MSR bit definition are shared among PPC processors and only some differs. if we create a single msr.h in shared it will have ifdef. If in msr.h we include libcpu/msr_c.h we will need to have it in each prowerpc specific directory (even empty). Opinions are welcomed ... Note that a similar mechanism exist in libbsp/i386 that also contains a shared directory that is used by several bsp like pc386 and i386ex and a similar wrapup mechanism... NB: I have done this for mpc750 and other processors could just use similar Makefiles... c) The exec/score/cpu/powerpc directory layout. I think the directory layout should be the same than the libcpu/powerpc. As it is not, there are a lot of ifdefs inside the code... And of course low level interrupt handling code should be removed... Besides that I do not understand why 1) things are compiled in the wrap directory, 2) some includes are moved to rtems/score, I think the "preinstall" mechanism enables to put everything in the current directory (or better in a per processor directory), 5) Interrupt handling API ------------------------- Again :-). But I think that using all the features the PIC offers is a MUST for RT system. I already explained in the prologue of this (long and probably boring) mail that the MCP750 boards offers an OPENPIC compliant architecture and that the VIA 82586 PCI/ISA bridge offers a PC compatible IO and PIC mapping. Here is a logical view of the RAVEN/VIA 82586 interrupt mapping : --------- 0 ------ | OPEN | <-----|8259| | PIC | | | 2 ------ |(RAVEN)| | | <-----|8259| | | | | | | 11 | | | | | | <---- | | | | | | | | | | | | --------- ------ | | ^ ------ | VIA PCI/ISA bridge | x -------- PCI interrupts OPENPIC offers interrupt priorities among PCI interrupts and interrupt selective masking. The 8259 offers the same kind of feature. With actual powerpc interrupt code : 1) there is no way to specify priorities among interrupts handler. This is REALLY a bad thing. For me it is as importnat as having priorities for threads... 2) for my implementation, each ISR should contain the code that acknowledge the RAVEN and 8259 cascade, modify interrupt mask on both chips, and reenable interrupt at processor level, ..., restore then on interrupt return,.... This code is actually similar to code located in some genpvec.c powerpc files, 3) I must update _ISR_Nesting_level because irq.inl use it... 4) the libchip code connects the ISR via set_vector but the libchip handler code does not contain any code to manipulate external interrupt controller hardware in order to acknoledge the interrupt or re-enable them (except for the target hardware of course) So this code is broken unless set_vector adds an additionnal prologue/epilogue before calling/returning from in order to acknoledge/mask the raven and the 8259 PICS... => Anyway already EACH BSP MUST REWRITE PART OF INTERRUPT HANDLING CODE TO CORRECTLY IMPLEMENT SET_VECTOR. I would rather offer an API similar to the one provided in libbsp/i386/shared/irq/irq.h so that : 1) Once the driver supplied methods is called the only things the ISR has to do is to worry about the external hardware that triggered the interrupt. Everything on openpic/VIA/processor would have been done by the low levels (same things as set-vector) 2) The caller will need to supply the on/off/isOn routine that are fundamental to correctly implements debuggers/performance monitoring is a portable way 3) A globally configurable interrupt priorities mechanism... I have nothing against providing a compatible set_vector just to make libchip happy but as I have already explained in other mails (months ago), I really think that the ISR connection should be handled by the BSP and that no code containing irq connection should exist the rtems generic layers... Thus I really dislike libchip on this aspect because in a long term it will force to adopt the less reach API for interrupt handling that exists (set_vector). Additional note : I think the _ISR_Is_in_progress() inline routine should be : 1) Put in a processor specific section, 2) Should not rely on a global variable, As : a) on symmetric MP, there is one interrupt level per CPU, b) On processor that have an ISP (e,g 68040), this variable is useless (MSR bit testing could be used) c) On PPC, instead of using the address of the variable via __CPU_IRQ_info.Nest_level a dedicated SPR could be used. NOTE: most of this is also true for _Thread_Dispatch_disable_level END NOTE -------- Please do not take what I said in the mail as a criticism for anyone who submitted ppc code. Any code present helped me a lot understanding PPC behavior. I just wanted by this mail to : 1) try to better understand the actual code, 2) propose concrete ways of enhancing current code by providing an alternative implementation for MCP750. I will make my best effort to try to brake nothing but this is actually hard due to the file layout organisation. 3) make understandable some changes I will probably make if joel let me do them :-) Any comments/objections are welcomed as usual. -- __ / ` Eric Valette /-- __ o _. Canon CRF (___, / (_(_(__ Rue de la touche lambert 35517 Cesson-Sevigne Cedex FRANCE Tel: +33 (0)2 99 87 68 91 Fax: +33 (0)2 99 84 11 30 E-mail: valette@crf.canon.fr
* Added C++ linking rule from Rosimildo DaSilva <rdasilva@connecttel.com>.Joel Sherrill1999-05-141-1/+20
|
* Removed -fomit-frame-pointer from all i386 BSPs since it breaks C++Joel Sherrill1999-05-145-5/+10
| | | | exceptions and makes debug stack traces impossible.
* New BSP from Tony R. Ambardar <tonya@ece.ubc.ca> from theJoel Sherrill1999-04-231-0/+93
| | | | | | | | University of British Columbia. The BSP is for: Yes, this is the "entry model" of a series of boards from Technologic Systems. Costs <$200 I believe. They have a WWW page at www.t-systems.com. I am letting them know about the availability of this BSP too.
* Turned on console interrupts.Joel Sherrill1999-04-191-1/+1
|
* Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:Joel Sherrill1999-04-192-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is an attempt to work-around a couple of nasty bugs in librdbg's Makefiles and configuration: Configure and build RTEMS as below: configure --enable-networking --enable-rdbg --target=i386-rtems make RTEMS_BSP=i386ex After a few minutes you will notice that building aborts in librdbg .... Analysis: 1) librdbg is tried to be built, though librdbg is not supported and the required directory hierarchy librdbg/i386/i386ex/ is not existant. The cause for this is incorrect setting of HAS_RDBG in most make/custom/*.cfg files (except pc386.cfg). At the moment all custom/*.cfg files (except pc386.cfg) in general are required to contain HAS_RDBG=no. However, having HAS_NETWORKING=no in most custom/*.cfg files and the toplevel configure script suppress building librdbg for all CPUs except of i386. => The i386ex BSP falls though this scheme and librdbg is tried to be build (CPU=i386 and HAS_NETWORKING=yes). 2) The Makefile.ins below lib/librdbg in general support i386/pc386 only and are not capable to be used for multiple CPUs or BSPs (RPCGEN generates it's target and bsp-specific files into librdbg/, therefore no other CPU or BSP can ever be built afterwards). This problem is hidden until now, because only a single CPU/BSP pair (i386/pc386) is really supported. 3) The Makefile.ins below lib/librdbg can delete source files due to improper handling of source files (make clean removes the *.x files in the source-tree when configuring inside of the source-tree). The patch below tries to work-around these problems for the i386ex and the pc386 BSPs. This work-around is rather fragile (it applies rpcgen -D, I don't know how portable this is) and incomplete (all custom/*.cfg except of pc386.cfg should contain HAS_RDBG=no), nevertheless it should work.
* Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:Joel Sherrill1999-04-124-14/+0
| | | | | | | | Installing of bsp_specs for aliased bsps is broken. Instead of installing RTEMS_BSP_FAMILY/bsp_specs, RTEMS_BSP/bsp_specs was tried to be installed. The patch below should fix this problem (tested with mips64orion p4600 and p4650).
* Automake II patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:Joel Sherrill1999-03-241-1/+1
| | | | | | | | | | | With my most recent automake patch (automake II) we could even simplify more files below make/, because the host-compiler related parts of those files aren't used anymore :-. Whatsoever, the patch below should fix this problem. Note: This is a mere bug fix, it doesn't move any of the variables involved to target.cfg nor does it try to eliminate any variable.
* Enable building the network stack.Joel Sherrill1999-03-231-4/+0
|
* Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>Joel Sherrill1999-03-171-0/+2
|
* Patch from John S. Gwynne <jgwynne@mrcday.com> to correct minorJoel Sherrill1999-03-161-4/+1
| | | | | | | | | | | problems that prevented the 19990302 snapshot from running on the efi332. I'm happy to report that rtems-19990302 is running on the efi332 board. I have enclosed a few minor patches below to the efi332 bsp. All patches are within that library but one. make/custom/efi332.cfg has a patch to select the right CPU_CFLAGS (at one time -m68332 was a problem... -mcpu32 or -m68332 work fine now).
* Added $(CPPFLAGS) to all gcc 2.8 style make-exe rules.Joel Sherrill1999-03-0834-38/+41
|
* Patch from Charles Gauthier <Charles.Gauthier@@iit.nrc.ca> to addressJoel Sherrill1999-02-241-3/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | FP issues on this target: The default variants of libc, libm and libgcc assume that a 68881 coprocessor is present. Without the FPSP, any floating point operation, including printf() with a "%f" format specifier, is likely to cause an unimplemented instruction exception. The FPSP works with the default variants of libc, libm and libgcc. It does not work in conjunction with the msoft-float variants. The paranoia test goes into an infinite loop at milestone 40. I am guessing that floor() is returning an incorrect value. The msoft-float variants of libc, libm and libgcc appear to do floating point I/O properly. They only failed in paranoia. Offhand, I can't think of why they would conflict with the FPSP, so I think that there is something wrong with the msoft-float code. It might be my installation. Given my experiences, I decided to install the FPSP in bsp_start(), and to link against the default variants of libc, libm and libgcc. This causes the executables to increase in size by about 60 KB. The README file and the mvme167.cfg specify how to remove the FPSP, and how to link against the msoft-float variants of the libraries. This is not what Eric Norum had done: on my host, his gen68360_040 port links RTEMS code with the msoft-float variants of libc and libm, and the default variant of libgcc. In this configuration, the output of printf() with "%f" is garbage on my target.
* Added $(LIB_VARIANT) to start16.bin.Joel Sherrill1999-02-241-1/+1
|
* Corrected spacing.Joel Sherrill1999-02-241-1/+1
|
* BSP for Vista Score603e added.Joel Sherrill1999-02-191-0/+156
|
* MVME167 BSP submitted by Charles Gauthier <Charles.Gauthier@iit.nrc.ca>.Joel Sherrill1999-02-181-0/+74
|
* Part of automake VI patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:Joel Sherrill1999-02-181-4/+5
| | | | | | | | | | | | | | > 2) rtems-rc-19990131-1.diff > > Rework of compilers/*.cfg files (esp. gcc-target-default.cfg) to adapt > the flags/makefile variables to automake and make standards (cf. > make.info - implicit rules/variables). > > This patch is rather risky and may probably break things, but is an > essential step towards automake. > > FWIW: It also reverts the i386-ASMFLAGS/ASFLAGS-patch, which was wrong, > as I had to experience ;-.
* Part of automake VI Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>.Joel Sherrill1999-02-1813-20/+37
| | | | | | | > Adds variables to the custom/*cfg files to specify the location of > tools. The purpose is to remove hard-coded paths from the Makefiles. > > In later steps this eases moving the tools to other locations.
* ./clock/Makefile.in,vJoel Sherrill1999-02-181-0/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ./clock/clock.c,v ./console/Makefile.in,v ./console/config.c,v ./console/console.c,v ./console/console.h,v ./console/debugio.c,v ./console/i8042.c,v ./console/i8042_p.h,v ./console/i8042vga.c,v ./console/i8042vga.h,v ./console/ns16550.c,v ./console/ns16550.h,v ./console/ns16550_p.h,v ./console/ns16550cfg.c,v ./console/ns16550cfg.h,v ./console/vga.c,v ./console/vga_p.h,v ./console/z85c30.c,v ./console/z85c30.h,v ./console/z85c30_p.h,v ./console/z85c30cfg.c,v ./console/z85c30cfg.h,v ./include/Makefile.in,v ./include/bsp.h,v ./include/chain.h,v ./include/coverhd.h,v ./include/extisrdrv.h,v ./include/nvram.h,v ./include/pci.h,v ./include/tod.h,v ./network/Makefile.in,v ./network/amd79c970.c,v ./network/amd79c970.h,v ./nvram/Makefile.in,v ./nvram/ds1385.h,v ./nvram/mk48t18.h,v ./nvram/nvram.c,v ./nvram/prepnvr.h,v ./nvram/stk11c68.h,v ./pci/Makefile.in,v ./pci/pci.c,v ./start/Makefile.in,v ./start/start.s,v ./startup/Makefile.in,v ./startup/bspclean.c,v ./startup/bspstart.c,v ./startup/bsptrap.s,v ./startup/device-tree,v ./startup/genpvec.c,v ./startup/linkcmds,v ./startup/rtems-ctor.cc,v ./startup/sbrk.c,v ./startup/setvec.c,v ./startup/spurious.c,v ./startup/swap.c,v ./timer/Makefile.in,v ./timer/timer.c,v ./tod/Makefile.in,v ./tod/cmos.h,v ./tod/tod.c,v ./universe/Makefile.in,v ./universe/universe.c,v ./vectors/Makefile.in,v ./vectors/README,v ./vectors/align_h.s,v ./vectors/vectors.s,v ./wrapup/Makefile.in,v ./Makefile.in,v ./README,v ./STATUS,v ./bsp_specs,v
* Jay Monkman <jmonkman@frasca.com> submitted the eth_comm BSP for a PPC860Joel Sherrill1999-02-171-0/+84
| | | | based board.
* Commented out disable of building network code so it is built. You canJoel Sherrill1999-02-051-1/+1
| | | | | hack through some paths to check error checking paths without a network driver.
* Added instruction and data cache enable.Joel Sherrill1999-02-051-2/+13
|
* Added comments to indicate what options are required to take advantageJoel Sherrill1999-01-191-1/+3
| | | | | | of removal of unused function code found in newer binutils/egcs snapshots. Early test with psim and hello.exe showed about a 13% gain.
* Patch from Emmanuel Raguet <raguet@crf.canon.fr> to add remote debug serverJoel Sherrill1998-12-031-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and RPC support to RTEMS. Thanks. :) Email follows: Hello, For Xmas, here is the Remote Debugger on RTEMS ! Here are 2 patches for the Remote Debugger on RTEMS for pc386 from Linux host : - one for RTEMS it self, - one for GDB-4.17. 1/ RTEMS patch -------------- This patch adds 2 libraries : - a simplified SUN RPC library - the Remote Debugger library The configuration command is the following : ../rtems4/configure --target=i386-rtemself --enable-rtemsbsp=pc386 --enable-rdbg The SUN RPC library is built only if networking is set. The RDBG library is built if networking and enable-rdbg are set. The function used to initialize the debugger is : rtems_rdbg_initialize (); A special function has been created to force a task to be in a "debug" state : enterRdbg(). The use of this function is not mandatory. 2/ GDB-4.17 patch ----------------- This patch create a new RTEMS target for GDB-4.17. The configuration command is the following : ./configure --enable-shared --target=i386RTEMS To connect to a target, use : target rtems [your_site_address] Then, attach the target using : attach 1 And... Debug ;) You can obtain the original GDB-4.17 on ftp://ftp.debian.org/debian/dists/stable/main/source/devel/gdb_4.17.orig.tar.gz This has been tested from a Debian 2.0.1 linux host.
* Added --disable-multiprocessing flag and modified a lot of files to makeJoel Sherrill1998-11-2313-36/+4
| | | | it work.
* Removed "HAS_NETWORKING=no".Joel Sherrill1998-11-231-4/+0
|
* Bug report from Peter Mueller <pmueller@decrc.abb.de>:Joel Sherrill1998-11-191-1/+1
| | | | | | | | I use the m68k/efi332 BSP together with a home made board. After some time of debugging I found that the m68020 CPU is used to build rtems. This is not correct, because the 68332 does not have some of the 68020 features (no separate int stack ...). It is necessary to change this to mcpu32. After a clean/make everything works fine.
* Merged Vista SCORE603e, Radstone PPCn_60x, and DY-4 DMV177 BSPs alongJoel Sherrill1998-10-281-4/+0
| | | | with libchip.
* Patch from Erik Ivanenko <erik.ivanenko@utoronto.ca>:Joel Sherrill1998-10-221-15/+16
| | | | | | | | | | Please find attached a new i386ex.cfg. It has been altered to change the files that get generated with the .nxe extension to .coff. This change is necessary to align the file names generated by "make-exe" to the those referred to in the GDB.HOWTO found in the i386/shared/comm directory. It has been successfully tested on ticker ( without GDB), and base_sp( with GDB ) . I just set a breakpoint and continue...
* Removed unnecessary settings.Joel Sherrill1998-10-151-6/+0
|
* Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de> to correct minorJoel Sherrill1998-10-131-4/+0
| | | | cosmetic things.
* Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:Joel Sherrill1998-10-054-13/+0
| | | | | | | | | | | | | | | | | | | | As mentioned in other mails before, there is are minor inconsistencies in the posix custom/*cfg files. Linux-posix.cfg sets RTEMS_BSP=posix FreeBSD-posix.cfg sets RTEMS_BSP=posix Solaris-posix.cfg first sets RTEMS_BSP=posix, later it sets RTEMS_BSP=solaris2 1. Setting RTEMS_BSP=posix is redunant to settings in default.cfg 2. The solaris variant of setting RTEMS_BSP is merely non-functional. The patch attached to this mail should clean up this issue. The patch was tested by building the posix bsp under i686-pc-linux-glibc1/glibc2 and Solaris2.6 (I did not run any rtems program, however) The HPUX9 and FreeBSD configuration files were adapted in analogy to the solaris and linux configurations.
* Switched from HAS_KA9Q=no to HAS_NETWORKING=no.Joel Sherrill1998-10-011-2/+2
|
* Patch from Eric Norum <eric@skatter.usask.ca>:Joel Sherrill1998-10-011-0/+8
| | | | | | | | | Here's a patch to get rid of the `#define RTEMS__mcpu32p__ 1' when gen68360.cfg is being used as a companion for gen68360_040.cfg. The old version worked because of the order of the conditional tests in m68k.h (the check for __mc68040__ is before the test for RTEMS__mcpu32p__) , but I think it might have been a little confusing to others just getting started.
* BSP submitted by Thomas Doerfler <td@imd.m.isar.de>:Joel Sherrill1998-09-301-0/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Finally I am through: I have found the last bugs that made RTEMS- 4.0-beta3 start on my ppc403 board from ROM. So now the '403 support is up to date again. Roughly I have added the following features: - support for the on-chip interrupt controller (in a separate module) - interrupt support for the console device - termios support for the console device ============================================== Since the BSP behaivour changed in some details (console no longer is polling, other memory layout etc) I have created a new BSP "helas403" rather than changing the "papyrus" BSP. The old "polled" console driver still sticks around in "console.c.polled" To get the BSP up and running, I had to create the new BSP files (derived from papyrus). Besides that, the following source areas have been changed: - c/src/lib/libcpu/powerpc/ppc403: changes to console driver, small changes to clock driver, new "ictrl" interrupt controller driver - c/src/exec/score/cpu/powerpc/ppc.h: some small changes (added ppc403 characteristics like a exception vector prefix register, some special register definitions). I am quite sure, they are compatible with the existing sources, although I did not check - c/src/exec/score/cpu/powerpc/cpu.c: There is one severe limitation in the exception entries: Due to the current code arrangement, the "branch absolute" to the ISR handler may only jump to the first 128MByte or the last 128MByte of the 4GByte address range. When the ppc403 is running out of ROM, the ROM functions are located in the last 128MByte (0xFFF00000 and up). These addresses were not handled correctly (sign reduced) in "install_raw_handler". The change I added should work on existing ppc BSPs aswell... - c/src/lib/libc/termios.c: During my tests, I added one change you sent me, so this patch will already be incorporated in the current source tree. There are some smaller changes, see the attached diff file. ========================================= Concerning the GNU toolchain: I tried several tool chains. Finally I almost succeeded with egcs-1.0.3a with patch egcs-1.0.3-rtems-diff-19980527 I had to add the following lines to the egcs files. Without them configure complaint that the cross compiler could not generate executable output. - additional lines needed in egcs distribution in file gcc/config/rs6000/rtems.h: +++ lines start #undef STARTFILE_DEFAULT_SPEC #define STARTFILE_DEFAULT_SPEC "ecrti.o%s" #undef ENDFILE_DEFAULT_SPEC #define ENDFILE_DEFAULT_SPEC "ecrtn.o%s" ++++ lines end As far as I have seen in the Changelog of egcs, you have recently sent two patches affecting the powerpc support, but they were added in the wrong order.... :-( egcs-19980628 with patch egcs-19980628-rtems-diff-19980707 does not work! I used binutils 2.9.1 with patch binutils-2.9.1-rtems-diff-19980515 (binutils 2.8.1 does not work, internal error in gas) and newlib-1.8.0 with patch newlib-1.8.0-rtems-diff-19980707 Finally I had to poke a line in the "bit" script, since, on my LINUX machine, the GNU make is only available as "make", not as "gmake"... For all the tools and newlib I selected configuration "powerpc- rtems". -------------------------------------------- IMD Ingenieurbuero fuer Microcomputertechnik Thomas Doerfler Herbststrasse 8 D-82178 Puchheim Germany email: td@imd.m.isar.de
* Patch from Eric Norum <eric@skatter.USask.Ca>:Joel Sherrill1998-09-301-7/+0
| | | | | | | | | | | | | | | | | | | | | | | I found that my 68040/68360 test programs would not run even after I fixed the `wrong BSP' problem. It seems that there's a bug in the interrupt handling code for processors with hardware interrupt stacks (e.g. 68040). The wrong status register was getting pushed on the stack for the `return from exception' to call _ISR__Dispatch. This ended up making the context switch code run on the interrupt stack, so interrupt-driven context switches would always fail. I guess that no one has tried running any of the RTEMS-4.0 snapshots on a 68040 machine! Anyhow, here are the patches for 1) gen68360.cfg --- to fix the `wrong-BSP' problem. 2) m68k/cpu_asm.s --- to fix the hardware interrupt stack problem. With these patches in place, the network demo programs run on my 68040/68360 system. The paranoia program runs with no failures, defects nor flaws.
* Updates to tree to make it build with all desired changes and the conversionJoel Sherrill1998-09-111-1/+1
| | | | of the SONIC driver to the new FreeBSD stack instead of KA9Q.
* A patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:Joel Sherrill1998-08-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Here is another patch to hopefully enhance rtems' configuration. Motivation: Try to support other c-compilers besides gcc (I tried to build rtems under Solaris using sun's WSPro c-compiler). Here is a couple of small patches concerning the host compiler configuration, which fix/work-around the worst problems when using sun's WSPro c-compiler. Changes: * Replaced make/compilers/gcc.cfg with make/compilers/gcc.cfg.in, ie. gcc.cfg is generated by configure now. * Removed a line containing a hard-coded "gcc" from gcc.cfg (BUG-fix). * Add -g to host compiler flags only if configure reported -g to work * Add -Wall to host compiler flags only if configure reported that the host compiler is gcc (WSPro's cc chokes on -Wall). * Some modifications to make/Makefile.in * Adapted make/custom/default.cfg to the new location of gcc.cfg BTW, gcc.cfg/gcc.cfg.in seems to be full of unused code (DEBUG-VARIANTS etc.) which deserves to be cleaned up, IMO. IMO, a similar patch should be applied to gcc-target-default.cfg
* Patches from Eric NorumJoel Sherrill1998-08-2028-117/+2
|
* FreeBSD stack compiles for the first time (except libc/strsep.c)Joel Sherrill1998-08-2028-0/+117
|
* Patch from Aleksey <qqi@world.std.com>:Joel Sherrill1998-08-191-7/+1
| | | | | | It fixes netboot build problem, KA9Q configuration for pc386, some compiler wardning, it also removed some stuff ifdef'ed with '#if 0'.