Instruction manual
Component Address Length Description
Virtual address of the
DISPATCH routine
CRB 8 bytes The virtual address of the procedure
descriptor for the console service
DISPATCH routine. The second
quadword of a procedure descriptor
contains the entry address of the
procedure. The DISPATCH routine
is the common routine that handles
all console service routines. The first
parameter of the DISPATCH routine
is a function code that determines the
function to be executed
Physical address of the
DISPATCH routine
CRB + 8 8 bytes The physical address of the procedure
descriptor for the console service
DISPATCH routine.
Virtual address of the
FIXUP routine
CRB + 10 8 bytes The virtual address of the procedure
descriptor for the FIXUP routine. The
FIXUP routine should be called by the
operating system to virtually relocate
all console routines and any I/O space
pages that are in the CRB.
Physical address of the
FIXUP routine
CRB + 18 8 bytes The physical address of the procedure
descriptor for the FIXUP routine.
Number of entries in the
physical/virtual map
CRB + 20 8 bytes The number of physical/virtual map
entries in the CRB. The console
service routines are always the first
entries. All subsequent entries are I/O
addresses and data areas that must
be mapped virtually for the console
service routines to run correctly. These
entries include I/O addresses, such
as the SCC registers, color frame
buffer registers, SCSI control registers,
FLASH ROM addresses and CSRs, and
so on.
Number of pages to be
mapped
CRB + 28 8 bytes The total number of pages to be
mapped. This is the sum of all the
pages to be mapped in the entries.
The general format of a physical/virtual map entry is:
Virtual address The virtual address of the entry.
Physical address The physical address of the entry. This address is needed so we can
map this entry.
Page count The number of 8 KB pages that are to be mapped contiguously
starting at the physical address.
All I/O references made by the firmware must use the I/O addresses contained in
the CRB. This guarantees that any I/O reference works, if the operating system
remaps the console routines. The prom$read_register and prom$write_
register routines must be used to read and write to I/O space, because the I/O
addresses are 33 bits long, while the compiler supports 32 bits .
Console 16–49