PSD INIT

Initialize the PSD.

This function is called to initialize the PSD. It is used to allocate and initialize any resources that the PSD may require, as well as initializing the state of the hardware. This function should only initialize the state of the hardware in general. Initialization of CPUs should be done in ProcInit. It must fill in the INIT structure passed to it by OS/2. This function is only called once on CPU0.


 * Mode: Called in Init Mode only.

Syntax
PSD_INIT

Parameters

 * Entry: Pointer to INIT structure

Structures
typedef struct init_s { ulong_t flags;   (Output) ulong_t version; (Output) } INIT;


 * flags: in the INIT structure indicate any special features or requirement that the PSD may have.
 * INIT_GLOBAL_IRQ_ACCESS indicates that the platform can perform IRQ operations (e.g. PIC masking) on any processor. If this flag is omitted, the IRQ functions are guaranteed to only get called on CPU0, otherwise they may get called on any processor. If the flag is omitted and an IRQ operation is initiated on a processor other then CPU0, the OS/2 kernel will route the request to CPU0.
 * INIT_USE_FPERR_TRAP indicates that Trap 16 will be used to report floating point errors, instead of IRQ 13. If this flag is set, the kernel sets the NE flag in CR0 for all processors. The PSD is responsible for doing any additional work for making the transition.
 * INIT_EOI_IRQ13_ON_CPU0 indicates that an EOI for a floating point error using IRQ13 should only be performed from CPU0. On CPU1-N, the hardware is responsible for clearing the interrupt.


 * version: indicates the version number of this PSD. It should be updated appropriately as this will help with service.

Return Code
Exit:
 * NO_ERROR: if the PSD initialized successfully.
 * -1 : if the PSD didn't initialize.

Remarks

 * This function is required for OS/2 to operate properly, so the function can not be omitted.
 * This function can call a PSD help that may block.