Load 16 and Jump
Original Publication Date: 1992-Mar-01
Included in the Prior Art Database: 2005-Mar-22
Disclosed is a method with which to accomplish a set-all-registers and branch-to-target-location function on a machine supporting the ESA/390* architecture. This method is not restricted to use by privileged routines.
Load 16 and Jump
a method with which to accomplish a
set-all-registers and branch-to-target-location function on a machine
supporting the ESA/390* architecture. This method is not restricted
to use by privileged routines.
algorithm is described which provides the
function of loading all of the registers with any desired value and
then branching to any desired location.
The point of
interest is that all the registers must be loaded,
thus not leaving an addressable location in which to save the target
location. So, the question to be solved is how to continue execution
at the desired location while maintaining the capability of changing
the values of all of the registers.
terms are used within this document:
. PSW - program status word
. ALET - Access List Entry Token which provides an
identification for a space containing data, potentially different
than the primary space
. AR - access register
. AR ASC mode - access register addressing control mode - a
PSW mode which uses the access registers in computing addresses.
. GPR - general-purpose register
. MVS - an IBM operating system
. Instructions from the ESA/370 architecture
. RB - request block, which represents the unit of work.
Solution: Assume an area of
storage is established which
contains the desired GPRs and target address.
1. Point GPR 1 to the storage area
2. Set GPR 15 to the target address
3. Set GPRs 2-14 from the storage area
4. Issue BAKR 15,0
5. Set up GPRs 15, 0, 1 from the storage area
6. Issue PR
A data structure to achieve this is
JUMP@ DS A Target address
GPRS_2_TO_14 DS CL(4*13) GPRs 2-14 to load
GPRS_15_TO_1 DS CL(4*) GPRS 15-1 to load
STORAGE_AREA_LEN EQU *_STORAGE-AREA
assembler instructions that would implement the
LA 1,STORAGE_AREA Get addressability to storage area
USING STORAGE_AREA,1 Define addressability
L 15,JUMP@ Pick up jump target address
LM 2,14,GPRS_2_TO_14 Set GPRs 2 through 14
BAKR 15,0 Save on linkage stack
LM 15,1,GPRS_15_TO_1 Set GPRs 15 through 1
PR Load and jump
Drop 1 Release addressability
described originally can be expanded to allow for
. Setting the access registers as well
. Producing the expansion running AR ASC mode as well
. Releasing the...