Debug Manual

Table Of Contents
Debug Commands
Debug Manual421921-003
4-61
Modify Register Contents
Considerations
When you want to change the current location of a process running in TNS or
accelerated mode, you modify the value of the P register. If the process is a
multiple-segment process, you must also change the space identifier. You change
the space identifier in order to change the location of the process to a different
code segment.
(It is also possible to change the current location of a process running in native
mode, but doing so requires knowledge of native mode internals and is beyond the
scope of this manual.)
In the TNS environment, ENV.<0:7> cannot be modified by specifying E for the
register parameter, except in privileged mode. However, in nonprivileged mode,
Debug does allow you to modify ENV.<4> and ENV.<7> by specifying SP for the
register parameter.
The LS (ENV.<4>) and CS (ENV.<7>) fields in the ENV register must agree with
the UC, UL, SC, and SL fields in the space identifier. Therefore, to modify
ENV.<4> or ENV.<7>, set new-value for the SP register parameter as follows:
Note that a nonprivileged user cannot set CS to 1, which would be system code or
system library.
When modifying the bit values of the $FCR31 register, the modification is made to
the local copy maintained by Debug. Although you can display the modified value
of the register, the copy that is placed in the original $FCR31 register when the
program resumes might be different than the modified value. Bits cannot be set in
undefined fields of the register, and the value of the CAUSE field cannot be
modified. Applying only selected bit fields reduces program failure when the
program is resumed.
new-value changes ENV.<4> to changes ENV.<7> to
UC 0 0
UL 1 0
SC (priv mode only) 0 1
SL (priv mode only) 1 1