On Mon, 9 Feb 2009 14:24:12 -0800, Don Russell wrote:
>
>That sounds like the subroutine was trying to be bi-modal, and probably used
>BSM to return. If it were called via BAL, the "addressing mode" bit in the
>return register is not reliable for determining address mode when the caller
>is in 24 bit mode. BAL sets the two high order bits of the regsiter to
>B'10', an ILC of 2. However, if the caller were in 24 bit mode, a BSM Rx
>would then incorrectly set the amode to 31 because the high-order bit is on.
>
>i.e. BSM may be used to return from calls via BAS, BASR, BASSM and BALR when
>the caller is in either 24 or 31 bit mode, but from BAL only if the caller
>is in 31 bit mode.
>
I did something like that in the Bad Old Days when access methods needed
to be called in 24-bit mode. IIRC (vaguely):
Entry Code:
STM
BALR 0,0
LTR 0,0
* if entered in 31-bit mode, BSM to enter 24-bit mode.
* if entered in 24-bit mode, clear the top bit of R14
* in the RSA.
Exit code:
LM
LTR R14,R14
BNMR R14
BSMR R14
... runs in 24 bit mode on either architecture; never issues a
BSM to cause an instruction exception on 370.
-- gil
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html