1
2xmboot boot loader for VMIPS
3============================
4
5This is a serial-based boot loader which supports loading ECOFF
6executables, which can either be sent over a serial link using the
7XMODEM protocol, or linked with the boot loader.
8
9What's here:
10
11Makefile, Makefile.in - used to build boot.rom
12README - this file
13boot.c - command processor, entry point
14coff.c - procedures to interpret mips coff headers
15coff.h - data structures representing mips coff file & section headers
16lib.c - the "little C library"
17lib.h - public interface to lib.c
18serial.c, serial.h - interface between lib.c and serial device
19xmrcv.c - XMODEM receive code
20xmrcv.h - public interface to xmrcv.c
21panic.c - routine to catch exceptions and print a message
22bootenv.c, bootenv.h - environment processing
23boot.script.in - ld script used for setting up the booter.
24boot_setup.S - low level assembly code for booter; implements DECstation PROM
25 jump table and panic call.
26set_status.S, set_status.h - C routines for getting/setting the CP0 Status word
27
28scripts:
29vmips16M - script for running vmips with extra memory
30vmipsdec - script for running vmips with extra memory and DEC devices
31catrom - shell script that glues an ecoff executable to the booter.
32 (see vmips mailing list archives for details.)
33
34toys:
35loadtest* - hello world program; you can try loading this with the booter,
36 if you have an ecoff toolchain to compile it with.
37
38runtests - test driver (see below)
39tests that runtests runs:
40libtest.c - test suite for the little C library
41libtest.input - inputs to libtest.c
42libtest.output - expected outputs from libtest.c
43pftest.c - vmips-hosted tests for printf in little C library
44pftest.output - expected output from pftest.c
45testbootenv.c - test code for bootenv.c
46testbootenv.output - expected outputs from testbootenv.c
47
48
49Testing infrastructure for xmboot
50=================================
51
52How to test the booter:
53 * runtests is a shellscript that runs all the test programs.
54 * Run it with "sh runtests".
55 * It produces dejagnu-style output but does not use dejagnu. We'll
56   rewrite this later to work using dejagnu.
57
58What it currently runs:
59 * testbootenv, libtest and pftest (on host only!)
60
61Tests need to be written for the following modules:
62 * boot.c
63 * coff.c
64 * panic.c
65 * serial.c
66 * xmrcv.c
67
68Infrastructure work:
69 * These tests should be rewritten as dejagnu tests.  The infrastructure
70   is probably pretty simple to write.  One complication is that the tests
71   should be run on both the host and on vmips.
72 * In order to run tests unchanged under both vmips and the host, we would
73   like to handle main() correctly. This is already OK for C programs, all
74   we need to do is teach vmipstool to link in libgcc.a and implement an
75   atexit() that doesn't do anything. This will not be OK for C++ programs.
76   Then, maybe, the entry()/main() hack can go away, and maybe the mess of
77   ld.scripts in xmboot can go away, too.
78
79