An array of startup_info* structures. This is the communications area between the IPL and the startup code. When the IPL code detects various system features (amount of memory installed, current time, information about the bus used on the system, etc.), it stores that information into the info array so that the startup code can fetch it later. This saves the startup code from performing the same detection logic again.
Note that the info is declared as an array of longs — this is purely to allocate the storage space. In reality, the info storage area contains a set of structures, each beginning with this header:
struct startup_info_hdr { unsigned short type; unsigned short size; };
The type member is selected from the following list:
Note that the struct startup_info_hdr header (containing the type and size members) is encapsulated within each of the above mentioned struct startup_info* structures as the first element.
Let's look at the individual structures.