In a data processing system including a memory, a first processor that has a first plurality of fixed point registers and a first plurality of floating point registers, a second processor that has a second plurality of fixed point registers and a second plurality of floating point registers, a method for managing a process thread that is to be executed by the processors, comprising:
- creating the process thread in the memory to be executed by the first processor, and a process control block in the memory to store thread information;
- storing in the process control block a non-floating point indication that the process thread is not enabled to perform floating point operations;
- executing during a first occurring session, only fixed point operations with the process thread in the first processor using the first plurality of fixed point registers;
- removing the thread from the first processor at a termination of the first session and storing first values of the first plurality of fixed point registers in the process control block and, in response to said non-floating point indication, not storing the contents of the first plurality of floating point registers in the process control block;
- restoring the execution of the process thread in the second processor in a second occurring session by detecting said non-floating point indication in the process control block, and in response thereto, performing a lazy context restore operation by loading said first values from the process control block into the second plurality of fixed point registers and not loading the second plurality of floating point registers of the second processor;
- executing during said second occurring session, fixed point operations with the process thread in the second processor using the second plurality of fixed point registers;
- attempting to execute a floating point instruction in the process thread during said second session, and in response thereto, calling an exception handler;
- using said exception handler to store an alternate floating point indication in the process control block, to indicate that the process thread is enabled to perform floating point operations;
- resuming execution of said floating point instruction in the process thread in the second processor;
- removing the process thread from the second processor at a termination of said second session and storing second values of the second plurality of floating point registers in the process control block in response to said alternate floating point indication;
- and
- restoring the execution of the process thread in the second processor in a third occurring session by detecting said alternate floating point indication in the process control block, and in response thereto, performing a lazy context restore operation by loading said second values from the process control block into the second plurality of floating point registers of the second processor.