Contents
Many MI instructions expect properly aligned instruction operands (typically aligned to 16-byte boundary). For example, the
search arguemnt operand (operand 4) of FNDINXEN, the
creation template operand (operand 2) of CRTHS, and the
search argument operand (operand 3) of FNDRINVN. But when client passing operand values to MI Portal as programs parameters, the passed operand values may not properly aligned and cause the hex 0602 (Boundary Alignment) exception being signaled. To avoid this problem, make sure those operand values are first copied into properly aligned local storage which will finally be passed to target MI instruction.
MI Portal does
not check the content of instruction operands passed to it, it validates only the number of operands for each MI instruction or support function passed by caller. If the number of operands passed by caller does not match what is expected for an MI instruction or support function, MI Portal sends an *ESCAPE message to the caller. For example, the CRTMTX (Create Pointer-based Mutex) instruction expects three operands, when invoking CRTMTX via MI Portal with zero operand you would get an *ESCAPE message with the following message text (CRTMTX's instruction index is hex 002A):
Number of operands passed to MI Portal not valid. Instruction index is hex 002A. Number of operands passed is 3, which is expected to be 0.