MONITOR(8S)

NAME
monitor - system ROM monitor

SYNOPSIS
L1-A

BREAK

DESCRIPTION

The CPU board of the Sun workstation contains an EPROM (or set of EPROMs), called the monitor, that controls the system during startup. The monitor tests the system before attempting to boot the operating system. If you interrupt the boot procedure by holding down L1 while typing a or A on the workstation keyboard (or BREAK if the console is a dumb terminal), the monitor issues the prompt:

    >

and accepts commands interactively.

On a Desktop SPARCsystem or a SPARCsystem 600MP, the message

    Type b (boot), c (continue), or n (new command mode)

will be displayed prior to the monitor prompt `>'.

USAGE

  Modes

The monitor supports three security modes (non-secure, command secure, and fully secure) and an authentication password. Access to monitor commands is controlled by these security modes. In non-secure mode all monitor commands are allowed. In command secure mode, only the b(boot) command with no arguments and the c(continue) command with no arguments may be entered without supplying the authentication password. In fully secure mode, only the c(continue) command with no arguments may be entered without supplying the authentication password. Note: The system will not auto-reboot in fully secure mode. The authentication password must be entered before booting will take place.

  Commands

Note: the following commands are available on all Sun systems except Desktop SPARCsystems and SPARCsystem 600MP series; only the b, c, and n commands listed below are available on those systems.

+|- Increment or decrement the current address and display the contents of the new location.

^C source destination n
    (caret-C) Copy, byte-by-byte, a block of length n from the source address to the destination address.

^I program
    (caret-I) Display the compilation date and location of program.

^T virtual_address
    (caret-T) Display the physical address to which virtual_address is mapped.

a [n] [action]... (Sun-3 systems only)
Open A-register (cpu address register) n, and perform indicated actions. The number n can be any value from 0 to 7, inclusive. The default value is 0. A hexadecimal action argument assigns the value you supply to the register n. A non-hex action terminates command input.

b [ device [ (c,u,p) ] ] [ pathname ] [ arguments_list ] (SPARCstation 1 systems only)
See openboot(8S) for details.
b [ device-specifier ] [ pathname ] [ arguments-list ] (SPARCstation 2 systems, SPARCsystem 600MP series only)
See openboot(8s) for details.

b [ ! ] [ device [ (c,u,p) ] ] [ pathname ] [ arguments_list ]

b[?]
    Reset appropriate parts of the system and bootstrap a program. Note: the `b!' and `b?' commands are not available on Desktop SPARCsystems and SPARCsystem 600MP series, see openboot(8S). A `!' (preceding the device argument) prevents the system reset from occurring. Programs can be loaded from various devices (such as a disk, tape, or Ethernet). `b' with no arguments will cause a default boot, either from a disk, or from an Ethernet controller. `b?' displays all boot devices and their device arguments, where device is one of:

        le  Lance Ethernet
        ie  Intel Ethernet (Sun-3, Sun-4 systems only)
        sd  SCSI disk, CDROM
        st  SCSI 1/4" or 1/2" tape
        fd  Diskette (Sun386i, Sun-3/80 systems, Desktop SPARCsystems only)
        id  IPI disk (Sun-4 systems, SPARCsystem 600MP series only)
        mt  Tape Master 9-track 1/2" tape (Sun-3, Sun-4 systems only)
        xd  Xylogics 7053 disk (Sun-3, Sun-4 systems only)
        xt  Xylogics 1/2" tape (Sun-3, Sun-4 systems only)
        xy  Xylogics 440/450 disk (Sun-3, Sun-4 systems only)

    c   A controller number (0 if only one controller),

    u   A unit number (0 if only one driver), and

    p   A partition.

    pathname
        A pathname for a program such as /stand/diag. /vmunix is the default.

    arguments_list
        A list of up to seven arguments to pass to the program being booted.

c                       (Desktop SPARCsystems, SPARCsystem 600MP series only);
c [virtual_address] (Sun-3, Sun-4 and Sun386i systems only)
Resume execution of a program. Desktop SPARCsystems and SPARCsystem 600MP series do not accept a virtual address; the current PC is assumed. See the Open PROM Toolkit User's Guide or Open PROM 2.0 Toolkit User's Guide for details on changing this value. When given, virtual_address is the address at which execution will resume. The default is the current PC (EIP on Sun386i systems). Registers are restored to the values shown by the a, d, and r commands (for Sun-3 systems), or by the d and r commands (for Sun-4 systems), or by the d command (for Sun386i systems).

d [window_number] (Sun-4 systems only)
Display (dump) the state of the processor. The processor state is observable only after:

        •   An unexpected trap was encountered.
        •   A user program dropped into the monitor (by calling abortent).
        •   The user manually entered the monitor by typing L1-A or BREAK.

    The display consists of the following:

        •   The special registers: PSR, PC, nPC, TBR, WIM, and Y
        •   Eight global registers, and
        •   24 window registers (8 in, 8 local, and 8 out), corresponding to one of the 7 available windows. If a Floating-Point Unit is on board, its status register along with its 32 floating-point registers are also shown.

    window_number
        Display the indicated window_number, which can be any value between 0 and 6, inclusive. If no window is specified and the PSR's current window pointer contains a valid window number, registers from the window that was active just prior to entry into the monitor are displayed. Otherwise, registers from window 0 are displayed.

d	(Sun386i systems only)
    Display (dump) the state of the processor. This display consists of the registers, listed below:

        Processor Registers:
            EAX, ECX, EDX, ESI, EDI, ESP, EBP, EFLAGS, EIP
        Segment Registers:
            ES, CS, SS, DS, FS, GS
        Memory Management Registers:
            GDTR, LDTR, IDTR, TR
        Control Registers:
            CR0, CR2, CR3
        Debug Registers:
            DR0, DR1 , DR2 , DR3, DR6, DR7
        Test Registers:
            TR6, TR7

    The processor's state is observable only after an unexpected trap, a user program has “dropped” into the monitor (by calling monitor function abortent) or the user has manually “broken ” into the monitor (by typing L1-A on the Workstation console, or BREAK on the dumb terminal's keyboard.

d [n][action]... (Sun-3 systems only)
Open D-register (cpu data register) n, and perform indicated actions. The number n can be any value from 0 to 7, inclusive. The default is 0. See the a command for a description of action.

e [virtual_address][action] ...
Open the 16-bit word at virtual_address (default zero). On Sun-3, and Sun-4 systems, the address is interpreted in the address space defined by the s command. See the a command for a description of action.

f virtual_address1 virtual_address2 pattern [size] (Sun-3 and Sun-4 systems only)
Fill the bytes, words, or long words from virtual_address1 (lower) to virtual_address2 (higher) with the constant, pattern. The size argument can take one of the following values

        b   byte format (the default)
        w   word format
        l   long word format

    For example, the following command fills the address block from 0x1000 to 0x2000 with the word pattern, 0xABCD:

        f 1000 2000 ABCD W

g [vector] [argument]
g [virtual_address] [argument]
Goto (jump to) a predetermined or default routine (first form), or to a user-specified routine (second form). The value of argument is passed to the routine. If the vector or virtual_address argument is omitted, the value in the PC is used as the address to jump to.

    To set up a predetermined routine to jump to, a user program must, prior to executing the monitor's g command, set the variable *romp->v_vector_cmd to be equal to the virtual address of the desired routine. Predetermined routines need not necessarily return control to the monitor.

    The default routine, defined by the monitor, prints the user-supplied vector according to the format supplied in argument. This format can be one of:

        %x  hexadecimal
        %d  decimal

g0	(Sun-3, and Sun-4 only)
    When the monitor is running as a result of the system being interrupted, force a panic and produce a crash dump.

g4  When the monitor is running as a result of the system being interrupted, force a kernel stack trace.

h	(Sun-3 and Sun-4 and Sun386i systems)
    Display the help menu for monitor commands and their descriptions. To return to the monitor's basic command level, press ESCAPE or q before pressing RETURN.

i [cache_data_offset] [action]...		(Sun-3/200 series and Sun-4 systems only)
    Modify cache data RAM command. Display and/or modify one or more of the cache data addresses. See the a command for a description of action.

j [cache_tag_offset] [action]... (Sun-3/200 series and Sun-4 systems only)
Modify cache tag RAM command. Display and/or modify the contents of one or more of the cache tag addresses. See the a command for a description of action.

k [reset_level]
Reset the system. If reset_level is:

        0   CPU reset only (Sun-3 systems). Reset VMEbus, interrupt registers, video monitor (Sun-4 systems). This is the default. Reset video (Sun386i systems).
        1   Software reset.
        2   Power-on reset. Resets and clears the memory. Runs the EPROM-based diagnostic self test, which can take several minutes, depending upon how much memory is being tested.

kb  Display the system banner.

l [virtual_address][action]...
Open the long word (32 bit) at memory address virtual_address (default zero). On Sun-3 and Sun-4 systems, the address is interpreted in the address space defined by the s command (below). See the a command for a description of action.

m [virtual_address][action]...
Open the segment map entry that maps virtual_address (default zero). On Sun-3 and Sun-4 systems, the address is interpreted in the address space defined by the s command. Not supported on Sun386i. See the a command for a description of action.

n	(Desktop SPARCsystems, SPARCsystem 600MP series only)
    Enter the new command mode. Type `old-mode' to return to the old command mode. See the Open PROM Toolkit User's Guide for a complete list of commands available on a SPARCstation 1 systems; See the Open Boot PROM 2.0 Toolkit User's Guide for a complete list of commands available on SPARCstation 2 and SPARCsystem 600MP series.

nd	(Sun386i systems only)
ne
ni  Disable, enable, or invalidate the cache, respectively.

o [virtual_address][action]...
Open the byte location specified by virtual_address (default zero). On Sun-3 and Sun-4 systems, the address is interpreted in the address space defined by the s command. See the a command for a description of action.

p [virtual_address][action]...
Open the page map entry that maps virtual_address (default zero) in the address space defined by the s command. See the a command for a description of action.

p [port_address] [[nonhex_char [hex_value] | hex_value] ...]	(Sun386i systems only)
    Display or modify the contents of one or more port I/O addresses in byte mode. Each port address is treated as an 8-bit unit. The optional port_address argument, which is a 16-bit quantity, specifies the initial port I/O address. See the e command for argument descriptions.

q [eeprom_offset][action]... (Sun-3 and Sun-4 systems only)
Open the EEPROM eeprom_offset (default zero) in the EEPROM address space. All addresses are referenced from the beginning or base of the EEPROM in physical address space, and a limit check is performed to insure that no address beyond the EEPROM physical space is accessed. On Sun386i systems, open the NVRAM nvram_offset (default zero). This command is used to display or modify configuration parameters, such as: the amount of memory to test during self test, whether to display a standard or custom banner, if a serial port (A or B) is to be the system console, etc. See the a command for a description of action.

r [reg_name] [[nonhex_char [hex_value] | hex_value] ...]  (Sun386i systems only)
    Display or modify one or more of the processor registers. If reg_name is specified (2 or 3 characters from the above list), that register is displayed first. The default is EAX. See note on register availability under the command d (for Sun386i systems). See the e command for argument descriptions.

s [step_count]  	(Sun386i systems only)
    Single step the execution of the interrupted program. The step_count argument specifies the number of single steps to execute before displaying the monitor prompt. The default is 1.

r [register_number][action]... (Sun-3 systems only)
Display and/or modify the register indicated. register_number can be one of:

        CA  68020 Cache Address Register
        CC  68020 Cache Control Register
        CX  68020 System and User Context
        DF  Destination Function code
        IS  68020 Interrupt Stack Pointer
        MS  68020 Master Stack Pointer
        PC  Program Counter
        SC  68010 System Context
        SF  Source Function code
        SR  Status Register
        SS  68010 Supervisor Stack Pointer
        UC  68010 User Context
        US  User Stack Pointer
        VB  Vector Base

    Alterations to these registers (except SC and UC) do not take effect until the next c command is executed. See the a command for a description of action.

r [register_number] (Sun-4 systems only)
r [register_type]
r [w window_number]
Display and/or modify one or more of the IU or FPU registers.

    A hexadecimal register_number can be one of:

        0x00—0x0f
            window(0,i0)—window(0,i7), window(0,i0)—window(0,i7)
        0x16—0x1f
            window(1,i0)—window(1,i7), window(1,i0)—window(1,i7)
        0x20—0x2f
            window(2,i0)—window(2,i7), window(2,i0)—window(2,i7)
        0x30—0x3f
            window(3,i0)—window(3,i7), window(3,i0)—window(3,i7)
        0x40—0x4f
            window(4,i0)—window(4,i7), window(4,i0)—window(4,i7)
        0x50—0x5f
            window(5,i0)—window(5,i7), window(5,i0)—window(5,i7)
        0x60—0x6f
            window(6,i0)—window(6,i7), window(6,i0)—window(6,i7)
        0x70—0x77
            g0, g1, g2, g3, g4, g5, g6, g7
        0x78—0x7d
            PSR, PC, nPC, WIM, TBR, Y
        0x7e—0x9e
            FSR, f0—f31

        Register numbers can only be displayed after an unexpected trap, a user program has entered the monitor using the abortent function, or the user has entered the monitor by manually typing L1-A or BREAK.

    If a register_type is given, the first register of the indicated type is displayed. register_type can be one of:

        f   floating-point
        g   global
        s   special

    If w and a window_number (0—6) are given, the first in-register within the indicated window is displayed. If window_number is omitted, the window that was active just prior to entering the monitor is used. If the PSR's current window pointer is invalid, window 0 is used.

s [code] (Sun-3 systems only)
Set or query the address space to be used by subsequent memory access commands. code is one of:

        0   undefined
        1   user data space
        2   user program space
        3   user control space
        4   undefined
        5   supervisor data space
        6   supervisor program space
        7   supervisor control space

    If code is omitted, s displays the current address space.

s [asi] (Sun-4 systems only)
Set or display the Address Space Identifier. With no argument, s displays the current Address Space Identifier. The asi value can be one of:

        0x2 control space
        0x3 segment table
        0x4 Page table
        0x8 user instruction
        0x9 supervisor instruction
        0xa user data
        0xb supervisor data
        0xc flush segment
        0xd flush page
        0xe flush context
        0xf cache data

t [program] (Sun-3 systems only)
Trace the indicated standalone program. Works only with programs that do not affect interrupt vectors.

u [ echo ]
u [ port ] [ options ] [ baud_rate ]
u [ u ] [ virtual_address ]
With no arguments, display the current I/O device characteristics including: current input device, current output device, baud rates for serial ports A and B, an input-to-output echo indicator, and virtual addresses of mapped UART devices. With arguments, set or configure the current I/O device. With the u argument (uu...), set the I/O device to be the virtual_address of a UART device currently mapped.

        echo
            Can be either e to enable input to be echoed to the output device, or ne, to indicate that input is not echoed.

        port
            Assign the indicated port to be the current I/O device. port can be one of:

                a   serial port A
                b   serial port B (except on Sun386i systems)
                k   the workstation keyboard
                s   the workstation screen

        baud_rate
            Any legal baud rate.

            options can be any combination of:

                i   input
                o   output
                u   UART
                e   echo input to output
                ne  do not echo input
                r   reset indicated serial port (a and b ports only)

            If either a or b is supplied, and no options are given, the serial port is assigned for both input and output. If k is supplied with no options, it is assigned for input only. If s is supplied with no options, it is assigned for output only.

v virtual_address1 virtual_address2 [size] (Sun-3 and Sun-4 systems only)
Display the contents of virtual_address1 (lower) virtual_address2 (higher) in the format specified by size:
        b   byte format (the default)
        w   word format
        l   long word format

    Enter return to pause for viewing; enter another return character to resume the display. To terminate the display at any time, press the space bar.

    For example, the following command displays the contents of virtual address space from address 0x1000 to 0x2000 in word format:

            v 1000 2000 W

w [virtual_address][argument] (Sun-3 and Sun-4 systems only)
Set the execution vector to a predetermined or default routine. Pass virtual_address and argument to that routine.

    To set up a predetermined routine to jump to, a user program must, prior to executing the monitor's w command, set the variable *romp->v_vector_cmd to be equal to the virtual address of the desired routine. Predetermined routines need not necessarily return control to the monitor.

    The default routine, defined by the monitor, prints the user-supplied vector according to the format supplied in argument. This format can be one of:

        %x  hexadecimal
        %d  decimal

x	(Sun-3 and Sun-4 systems only)
    Display a menu of extended tests. These diagnostics permit additional testing of such things as the I/O port connectors, video memory, workstation memory and keyboard, and boot device paths.

yc context_number	(Sun-4 systems only)
yp|s context_number virtual_address
    Flush the indicated context, context page, or context segment.
        c   flush context context_number
        p   flush the page beginning at virtual_address within context context_number
        s   flush the segment beginning at virtual_address within context context_number

z [number] [breakpoint_virtual_address [type] [len]]  	(Sun386i systems only)
    Set or reset breakpoints for debugging. With no arguments, this command displays the existing breakpoints. The number argument is a values from 0 to 3, corresponding to the processor debug registers, DR0 to DR3, respectively. Up to 4 distinct breakpoints can be specified. If number is not specified then the monitor chooses a breakpoint number. The breakpoint_virtual_address argument specifies the breakpoint address. The type argument can be one of:

        x   Instruction Execution breakpoint (the default)
        m   for Data Write only breakpoint
        r   Data Reads and Writes only breakpoint.

    The len argument can be one of: `b', `w', or `l', corresponding to the breakpoint field length of byte, word, or long-word, respectively. The default is `b'. Since the breakpoints are set in the on-chip registers, an instruction breakpoint can be placed in ROM code or in code shared by several tasks. If the number argument is specified but not breakpoint_virtual_address, the corresponding breakpoint is reset.

z [virtual_address] (Sun-3 systems only)
Set a breakpoint at virtual_address in the address space selected by the s command.

FILES
/vmunix

SEE ALSO
boot(8S), eeprom(8S), openboot(8S)
Open PROM Toolkit User's Guide
Open PROM 2.0 Toolkit User's Guide