aboutsummaryrefslogtreecommitdiff
path: root/doc/ports/notes.mips
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /doc/ports/notes.mips
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'doc/ports/notes.mips')
-rw-r--r--doc/ports/notes.mips398
1 files changed, 398 insertions, 0 deletions
diff --git a/doc/ports/notes.mips b/doc/ports/notes.mips
new file mode 100644
index 00000000..c00dd6b0
--- /dev/null
+++ b/doc/ports/notes.mips
@@ -0,0 +1,398 @@
+# MIPS/IRAF alpha port.
+# System arrived on thursday 17 May.
+
+-----------------
+Configure UNIX (RISC/os 4.10)
+
+/etc/passwd
+/etc/hosts
+/etc/group
+/etc/fstab
+/etc/local_hostname
+/tucana/ +
+/u2 +
+ 1. Usual local configuration of passwd,hosts,group,fstab. NFS
+ mounted a number of tucana disks.
+ 2. local_hostname is a MIPS special, used to set hostname (columba
+ in this case) and network parameters (netmask, broadcast). (4/17)
+
+ [didn't do anything more with the system for several days...]
+
+/usr/adm/periodic/daily/10.makehosts.system
+/usr/hosts
+ Sometime later I discovered that /usr was 99% full and the directory
+ /usr/hosts contained over 8000 files totalling about 9 Mb. There
+ turned out to be a crontab file which makes a link to rsh in /usr/hosts
+ for every node alias in /etc/hosts. We like to keep a very large
+ hosts file around for reference, so this would end up producing an
+ enormous /usr/hosts. It is not clear if /usr/hosts is needed; the
+ node name entries can be executed to rsh to the node so perhaps that
+ is what it is for. Rather than disable the facility entirely, I
+ edited the makehosts script to make entries only for the local hosts.
+ (4/26)
+
+login customization
+ The MIPS is a nearly pure SysV UNIX machine with the default login,
+ which provides the SysV ls, ps, etc., the old unix kill, erase, etc.
+ characters for the terminal driver, and so on. A bit of hunting
+ turned up the following interesting items.
+
+ /bds43/bin
+ /usr/ucb
+ Contains 200 or so BSD commands which are no where else to be
+ found, e.g., nroff, troff, lpr, head, etc., as well as BSD
+ versions of popular commands like ls, stty (in some cases there
+ are merely front ends to the SysV versions, like stty).
+
+ /usr/new
+ Contains some interesting utilities, including LESS and PATCH,
+ and a couple of things I hadn't seen before, VSAR (a screen
+ oriented version of the SysV SAR) and VMSBACKUP (claims to be
+ able to read VMS BACKUP tapes).
+
+ man pages
+ PAGER can be defined as "less -cqm" to use less to page man
+ pages. There are two man programs, /bsd43/bin/man or /usr/ucb/man,
+ which prints the BSD man pages, and /usr/bin/man, which prints
+ the SysV man pages followed by other entries for the named topic,
+ prompting each time the pager is exited. Given the default search
+ path, you have to type /usr/bin/man explicitly to get the SysV
+ version.
+
+ If the SysV STTY is used one needs to use "winsize" to set the
+ screen size for programs like LESS and VI. (4/26)
+
+/usr/lib/cmplrs
+ This directory contains the runtime files for the compilers. It
+ appears that the system as delivered by MIPS does not have the
+ latest (2.10) versions of the compilers installed. The installed
+ versions are all 2.0. I sent mail off to MIPS to see if we can
+ get the 2.10 compiler tape (we already have the 2.10 Fortran tape,
+ but this is useless on the MIPS without the 2.10 compiler backend
+ programs). (4/26)
+
+/etc/printcap +
+/usr/spool/* +
+/etc/rc2.d/S01noao +
+ Configured LPR for the noao devices. (4/26)
+
+/usr/lib/tmac/tmac.s
+/usr/local/bin/itroff* +
+/usr/local/bin/vpr +
+/usr/local/bin/qdplot +
+ Configured nroff/troff and the local noao troff and printer queues.
+ (4/26)
+
+/usr/lib/aliases
+ Installed the noao mail aliases file. (4/26)
+
+------------------------
+Begin IRAF port to the MIPS.
+Start with DECstation/IRAF sources, since these are already set up to
+use the MIPS compilers.
+Using MIPS BSD43 programming environment. (5/27)
+
+local/.login
+unix/hlib/cl.csh
+unix/hlib/irafuser.csh
+unix/hlib/libc/iraf.h
+unix/hlib/mach.h
+unix/hlib/mkpkg.inc
+ 1. Set new iraf root.
+ 2. In mach.h, change the byte swap parameters to NO.
+ 3. Checked size of setjmp buffer; DECstation value is larger
+ than needed for MIPS, so leave it as is. (5/27)
+
+bin.mips +
+noao/bin.mips +
+mkpkg
+unix/hlib/mkpkg.inc
+unix/hlib/mkpkg.sf.MIPS +
+noao/mkpkg
+noao/lib/mkpkg.inc
+noao/lib/mkpkg.sf.MIPS +
+unix/mkpkg.sh
+unix/setarch.sh +
+unix/bin.mips +
+unix/as.mips +
+ Add support for architecture "mips". (5/27)
+
+unix/os/irafpath.c
+unix/os/zgcmdl.c
+unix/os/zxwhen.c
+ 1. irafpath.c and zgcmdl.c modified to discriminate between Ultrix
+ and RISC/os operating systems: #ifdef mips is true for both systems.
+ On a DECstation the architecture is known as "dsux", on a MIPS it
+ is "mips".
+ 2. Modified zxwhen for the MIPS hardware exception codes. (5/27)
+
+unix/boot/bootlib/osputenv.c
+ The MIPS does not have putenv, but it has setenv. (5/27)
+
+unix/boot/mkpkg/host.c
+ The MIPS has COFF libraries, so disabled ranlib. (5/27)
+
+unix/hlib/install
+ It turns out that when using the BSD version of CC, the include
+ files in /bsd43/usr/include are used rather than /usr/include.
+ Modified INSTALL to make an <iraf.h> link in both places (and
+ manually created the link in order to complete the bootstrap). (5/27)
+
+-------------------
+Bootstrap successfully completed, except for alloc.c which failed to
+link. Will take a look at that later. (5/27)
+
+unix/boot/spp/xc.c
+ The MIPS is unusual in that it has two sets of compilers (or at
+ least compiler front-ends) and two sets of programming environments
+ for BSD and SysV. For our purposes it is simplest to use the BSD
+ environment. This necessitated a change to XC since we want to
+ use the versions of CC and F77 in /bsd43/bin rather than the SysV
+ versions in /usr/bin.
+
+ 1. Modified "run" in XC to search /bsd43/bin before /usr/bin (we
+ should, of course, be using PATH instead).
+ 2. Modified XC to link with F77 instead of CC. Using CC is awkward
+ since the F77 libraries are hidden away in /bds43/usr/lib/cmplrs/...
+ (5/27)
+
+-------------------
+Begin sysgen.
+
+ The initial sysgen went well except for some problems with the F77
+ compiler, which was not installed properly when the system was set
+ up. First I had to modify XC to use the /bsd43/bin versions of the
+ compilers (see above). Even when this was done links would still
+ fail, due to the compiler being only partially installed. I was
+ able to continue by faking a BSD F77 compiler by combining the 2.10
+ F77 front end and libraries with the cc2.0 back end. The full compile
+ sysgen will have to be redone when the new compilers are properly
+ installed, and there is little point in pursuing any bugs until
+ this is done. (5/27)
+
+math/deboor/mkpkg
+math/deboor/setdat.f -
+math/deboor/setdat2.f -
+math/deboor/setdat3.f -
+ The DEBOORT math package turned out to have a set of files setdat.f,
+ setdat2.f, setdat3.f, all of which defined the same routine "setdat"
+ and which were being redundantly loaded into the library. It turns
+ out that these routines are not part of the math library anyhow, and
+ are only used to generate test data for the test programs. I moved
+ them to deboor/progs (the test programs source library) and deleted
+ the entries in the mkpkg file. (5/27)
+
+sys/gio/gks/gcas.x
+ The MIPS librarian found another duplicate library entry here. The
+ GKS emulation library has two files gca.x and gcas.x, both of which
+ define the same routine "gca". Changed the gcas.x version to define
+ a subroutine "gcas" instead. (These are integer and short versions
+ of the cell array routine - GCAS is a nonstandard IRAF extension to
+ GKS, which is not used anywhere to my knowledge). (5/27)
+
+-------------------
+Sysgen complete.
+
+ With these changes the first sysgen completed, except for x_images.e
+ which failed to link, probably due to the F77 compiler problems
+ discussed above. Other than that the sysgen went remarkably well.
+ None of the problems we had with the MIPS compilers on the DECstation
+ were present on this system. IRAF is up and running, minus IMAGES,
+ although from browsing the MIPS manuals I see that there are still
+ some subtle items to take care of. (5/28)
+
+dev/hosts
+ Added an entry for node columba and tested iraf networking. (5/28)
+
+unix/os/zmaloc.c
+ RISC/os uses the BSD 4.3 memory allocator, which allocates storage in
+ units that are a power of 2. This can be very wasteful of space for
+ large buffers, so we don't want to use the default memory allocator.
+ MIPS provides a couple of other allocators as options, but I had
+ trouble using these with the BSD43 environment due to unresolved
+ symbols resulting from the SysV libraries not being searched.
+ The solution was to replace zmaloc.c by the version used on BSD 4.3
+ and Ultrix, which includes an older, simpler, and better behaved
+ memory allocator. (5/28)
+
+unix/hlib/libc/iraf.h
+unix/os/zzstrt.c
+unix/os/zxwhen.c
+unix/os/zgcmdl.c
+unix/os/irafpath.c
+ Added a #define MIPS and a commented out #define DSUX. This is more
+ direct than trying to use #ifdef mips (which is defined by the system)
+ since this is defined for both the MIPS and DECstation (at least) and
+ doesn't really tell us what system we are compiling for. (5/28)
+
+MIPS bug
+ Running NM on a library with the output redirected causes a
+ segmentation fault when the process exits. (cd /lib; nm *.a | ...).
+
+unix/os/zzstrt.c
+unix/os/zxwhen.c
+ Enabled the IEEE exceptions (overflow, divide by zero, and invalid
+ operand) for MIPS/IRAF processes. Modified ZXWHEN to detect and
+ decode the floating point exceptions (this required doing bit tests
+ on the floating point control and status register).
+
+ To figure out how to do this I first did a "man -k ieee". This
+ turned up a man page for fp[get|set][round|mask|sticky], which
+ looked like it would do the trick, except that evidently this routine
+ doesn't exist anywhere in the system (maybe it is a standard SysV
+ feature which MIPS doesn't support; the man page mentions the default
+ behavior on 3B systems). By doing an "nm *.a | grep fp" on the system
+ libraries I eventually turned up set_fpc_csr/get_fpc_csr which is
+ what is actually implemented on the MIPS. This seems to do the
+ trick; thus far, setting a nondefault FPCSR doesn't seem to introduce
+ any new problems. (5/28)
+
+/etc/init.d/netdaemons
+/etc/rc2.d/S01noao
+/usr/local/bin/ntp +
+/usr/spool/cron/crontabs/root
+ 1. Had to add a command "route add default gateway 1" to allow network
+ access to the outside world.
+ 2. Commented out the gated/routed daemons, which we don't need.
+ 3. Installed a copy of NTP in local/bin, and set up cron to run it
+ once a day. This sets the system clock from atomic clock at another
+ site, by requesting the time via the internet from a network time
+ daemon running on the remote node. (Forgot to log it, but the timezone
+ had to be changed to MST a while back too). (5/31)
+
+-----------------------
+New compilers (V2.10) installed and the system bootstrapped and fully
+recompiled from scratch. Lacking a tape drive on the system, the compilers
+had to be installed manually from the raw distribution tape: I think I set
+up all the necessary links etc., but the installation was complex enough
+that it is difficult to be sure. (6/19)
+
+Perusing the output of the sysgen, it appears that there were a number of
+problems with the V2.10 compile, whereas the sysgen with the V2.0 compilers
+went almost flawlessly. At this point, from the nature of the errors I think
+they are real and not something induced by errors in the installation of the
+compilers. Another problem was that the disk filled up during the sysgen,
+a dangerous problem which can cause errors such as zero length objects being
+inserted into libraries.
+
+At least one compiler bug was observed, this one harmless. Some of the old
+NCAR and math library Fortran code contains statement functions. The dummy
+variables in such statements functions result in "local variable X never used"
+warning messages. (6/20)
+
+unix/hlib/mkpkg.inc
+ Added -Olimit 1024 to the default sysgen flags. This sets the max
+ size in blocks of a procedure to be optimized. With the default
+ value of 500 the compiler issued warnings for 7 files during the full
+ sysgen, and failed to optimize 9 procedures. (6/20)
+
+math/deboor/core
+sys/gio/ncarutil/autograph/core
+sys/vops/core
+pkg/dataio/cardimage/core
+pkg/images/tv/cv/core
+pkg/images/geometry/core
+pkg/plot/core
+pkg/xtools/ranges/core
+pkg/xtools/core
+noao/imred/ccdred/src/generic/core
+noao/imred/vtel/core
+noao/onedspec/dispcor/core
+noao/twodspec/multispec/core
+ Discovered why the sysgen ran out of disk space - 12 Mb of core
+ files from compiler optimizer (uopt) crashes! Deleted. (6/20)
+
+----------------
+I tried recompiling a couple of the files that were associated with
+optimizer core dumps in the first sysgen, but could not duplicate the
+problem. Started an incremental sysgen to compile the files skipped
+in the first sysgen, and this completed without any errors. The system
+comes up and runs, ready for runtime testing. (6/20)
+
+----------------
+/usr/local/bin/saoimage
+ Installed saoimage. 7.6 Mb left in /usr. As there was so little
+ disk space, the RISC/os source for saoimage is currently in
+ /tucana/tmp3/rooke/sao/riscos. (6/21 SRo)
+
+/usr/man/manl/saoimage.man
+ Created /usr/man/manl, and placed saoimage manpage in it. (6/21 SRo)
+
+----------------
+Resume testing on alpha port, 16 July 90.
+
+sys/vops/amov.gx
+ This routine could fail, corrupting the data array, in some cases
+ when the input and output arrays overlap. The same problem exists
+ in standard V2.9 iraf except that in most iraf implementations,
+ a host optimized version of AMOV is used, hence the bug has not
+ been seen. (7/16)
+
+unix/hlib/mkpkg.sf.MIPS
+ I added entries for the host optimized versions of AMOV, ACLR, etc.,
+ using the C versions in AS that use bcopy/bzero. Unfortunately
+ it turned out that the MIPS version of bcopy also cannot be used
+ when the input and output arrays overlap in a certain way, hence
+ I had to copy out the entries for the AMOV and BYTMOV routines.
+ The optimized versions of the ACLR routines are still used. (7/16)
+
+unix/as.mips/zsvjmp.o
+ I tried setting the address of MEM to zero and it worked on the MIPS.
+ The same code failed on the DECstation with a linker error. (7/16)
+
+unix/os/zmain.c
+unix/os/zzsetk.c
+unix/os/zfiopr.c
+ Added a new facility to UNIX/IRAF for debugging interprocess
+ communication (IPC). This feature will also be useful for debugging
+ tasks standalone, particularly in cases where a bug seen when the
+ task is run from the CL is difficult to reproduce when the task
+ is run standalone. If LOGIPC is defined in the host environment,
+ the input and output IPC streams of each connected process with
+ process id PID are logged to the files PID.in and PID.out. (7/18)
+
+unix/hlib/mkpkg.sf.MIPS
+ Added system/help/lroff/textout.x to the list of files requiring
+ compilation without optimization (actually it is the first such file
+ for this system). Evidently the use of multiple entry points in
+ this procedure is running into an optimizer bug. The argument "out",
+ which should be the address of "putline" was being transformed to
+ the address of "getline" somewhere in this routine, causing output
+ via textout to be discarded. (7/18)
+
+sys/imfort/tasks/pcube.f
+ This file contained a subroutine containing the following sequence of
+ statements (irrelevant statements ommitted):
+
+ subroutine pcuber (pix, nx,ny,nz, i1,i2, j1,j2, k1,k2)
+ real pix(nx,ny,nz)
+ integer nx, ny, nz
+
+ On the MIPS, this produced a warning about nx/ny/nz already having
+ been declared. Probably when the compiler processes the REAL
+ statement it assumes the parameters are type integer. This seems
+ reasonable, so I moved the INTEGER card up before the REAL and the
+ warning went away. (7/19)
+
+unix/os/zxwhen.c
+ While looking into a problem of a task aborting on a floating point
+ exception, I noticed that the IEEE exception being reported was
+ "floating inexact", which iraf does not enable. It turned out that
+ both inexact and overflow were being signalled, but due to the way
+ the zxwhen code was written only the inexact was being reported.
+ Since we are not very interested in those exceptions which are not
+ enabled, I changed the code to check the exception bits for the
+ enabled exceptions before checking the others.
+
+ In this case the exception of interest was floating overflow, which
+ is occuring in the routine DET called by SPLOT. It appears that
+ the matrix being input to this routine is garbage. Since only the
+ one application is affected I will leave it to someone else to check
+ into it further. (7/19)
+
+-------------
+Full system testing has been in progress for the past week or so. Things
+looks pretty good. One task is dying with an out of memory error; after
+hunting around a bit, I determined that the MIPS/SysV command used to
+monitor swap space usage is "swap l", which gives the free space in 512
+byte blocks. (7/30).