Newsgroups: comp.os.linux.announce
From: paradis@sousa.amt.ako.dec.com (Jim Paradis)
Subject: Linux/AXP Progress Report
Message-ID: <ann-15996.779393888@cs.cornell.edu>
Date: Mon, 12 Sep 1994 18:18:28 GMT
Approved: linux-announce@tc.cornell.edu (Matt Welsh)

[]
                      Linux/AXP Progress Report
			  September 9, 1994

			     Jim Paradis
		     Alpha Migration Tools Group
		    Digital Equipment Corporation


                  Introduction - What Is Linux/AXP?

The Linux FAQ (Frequently-Asked-Questions) list describes Linux as
follows:

     Linux is a Unix clone for 386/486-based PCs, written from scratch
     by Linus Torvalds, with assistance from a loosely-knit team of
     hackers across the Net.  It aims towards POSIX compliance.

     It has all the features you would expect in a modern
     fully-fledged Unix, including true multitasking, virtual memory,
     shared libraries, demand loading, shared copy-on-write
     executables, proper memory management and TCP/IP networking.

     It uses the hardware features of the 386 processor family (TSS
     segments et al) to implement these features.

     It is distributed under the GNU General Public License

Although the distributed Linux kernel depends heavily on the x86
processor architecture, it is feasible to port it to other
architectures.  Indeed, ports are currently in progress to the Alpha
AXP, 680x0, PowerPC, MIPS, and possibly other architectures.  Linux/AXP
is my port of the Linux operating system to the Digital Alpha AXP
architecture.


                        Overview of Linux/AXP

Linux/AXP is a port of Linux to the Digital Alpha AXP RISC
microprocessor.  It is based on the Linux V1.0 kernel.  Linux V1.0 was
current when I started the project.  To limit the number of variables,
I decided to stick with a single version while developing the
AXP-specific pieces.  Although the Linux V1.0 kernel provides more than
enough functionality for our current needs, we might investigate
subsequently leapfrogging to the most-current stable kernel when
Linux/AXP is stable.

Linux/AXP is a 32-bit operating system.  Except for those cases where
the kernel must interface with the Alpha AXP hardware, no kernel data
type is wider than 32 bits.  As far as C programmers are concerned, so
pointers and longs are 32 bits.  The decision to remain with 32-bit
data types was based on our group's experience with migrating legacy
software to a 64-bit environment.  By not changing the size of any data
types, those parts of Linux that are unaffected by the port (such as
the file system code) should continue to work without modification.
Changing the data type size would require significant code review to
ensure that all data types are used correctly.  Note that 64-bit
quantities are still available for computation through the use of "long
long" and "long double" C data types.  Thus, the only limitation of a
32-bit operating system is the unavailability of 64-bit pointers.  On
PC-class machines, with at most a few tens of megabytes of physical
memory, this should not be a significant restriction for the forseeable
future.

Linux/AXP is primarily targetted at PC-class Alpha AXP platforms that
support ISA, EISA, VLB, and PCI devices.  Support for other devices and
platforms is possible in the future.  Contributions of drivers for
other platforms are always welcome.


                        Current Project Status

I am currently cross-developing the Linux kernel port on a DEC 3000
model 500 AXP that is running DEC OSF/1.  I have also built and tested
all of my development tools on a 486 box running Linux, and everything
seems to work there too.  Naturally, I prefer the Alpha AXP box 8-).

The cross-development environment consists of gcc 2.5.8 with
configuration options for "alpha-linux", as well as gas, gdb, ld, and
GNU binutils.  I modified gdb has been modified so as to allow
source-level debugging of Linux when running on the ISP software
simulator.

ISP is an Alpha AXP CPU software simulator that runs on Ultrix, DEC
OSF/1, Linux, OpenVMS, and Windows NT AXP.  Only the DEC OSF/1 and
Linux versions support remote debugging via gdb.

The development environment also includes a set of utilities for
viewing and manipulating ext2 file systems from user mode.  These are
necessary when creating a bootable file system image for Linux/AXP.

The Linux kernel currently boots, goes through all initializations,
and runs the first user task.  At present, that first user task is a
hand-crafted "hello, world" program in place of /etc/init.  A more
significant program is not available, due to the unavailability of
libc.

Porting libc has been taking place in parallel with kernel development
and porting user and system utilities is taking place now.

Linux/AXP currently boots from a 1.44Mb ext2 floppy or floppy image.
Linux/AXP does not yet have disk drivers.  The bootstrap code reads
the floppy image into a RAM disk area, and the kernel uses the RAM
disk as its root file system.  The bootstrapper takes the RAM disk
size from the file system; the size of the RAM disk is limited only by
available system memory.


                          Future directions

Currently I'm getting a core set of utilities (sh, ls, grep, cat) up
and running, and packaging up a "developer's kit" for those who would
like to contribute to the project.  The developer's kit will consist
of:

      -  Sources for the Linux/AXP kernel

      -  Sources for all cross-development tools (gcc, etc)

      -  Sources for the ISP AXP CPU simulator

      -  Porting notes, build instructions, etc.

The developer's kit will definitely work on DEC OSF/1 systems and
Intel Linux systems.  It will probably run on other UNIX systems as
well, but I cannot guarantee that.

The version of Linux in the developer's kit will probably have only
console-callback device drivers.  Console-callbacks are the Alpha AXP
equivalents of BIOS calls on an Intel system.  They are quite slow
because they run synchronously with interrupts disabled.  As on an
Intel system, using console-callback or BIOS drivers will get you up
and creaking, but an important item on the agenda will be to write
real device drivers that take full advantage of the system and the
Alpha AXP CPU.

The supplied console-callback drivers will only support local disk
and console character I/O.  No networking, graphics, or windowing
support will be available.  Distributed utilities will be minimal and
the kernel itself will be extremely fragile.

The developer's kit will be distributed via anonymous ftp, with the
location to be announced.  If you would like to contribute to the
Linux/AXP project, please send email to paradis@amt.ako.dec.com.  I
will maintain a list of who is working on what, to reduce duplication
of effort.

Please note that in order to do useful work in the device-driver
space, you MUST have access to an ISA or EISA-based Alpha AXP system
(such as the DEC 2000 AXP).  Unfortunately, we are not in a position
to lend out development systems at this time, except to Linus of
course 8-).

Questions/comments/requests please to paradis@amt.ako.dec.com.


-- 
Jim Paradis (paradis@tallis.enet.dec.com)

      The purpose of time is to keep everything from happening at once.  
                               It's not working.

--
Send submissions for comp.os.linux.announce to: linux-announce@tc.cornell.edu
Be sure to include Keywords: and a short description of your software.
