If the caller only passes a 72 byte save area (rather than part of a larger
save area stack) then I've got bigger problems than how to test and/or set
c'F4SA' in the save area.  :-)


*Mark*


On Tue, Nov 30, 2021 at 12:14 PM Seymour J Metz <[email protected]> wrote:

> You could certainly do a normal STM R14,R12,12(R13); 4(R13) is normally
> the back point for 24-bit linkage.
>
> The 72-byte SA only has 15 words left at offset 12; that's not enough for
> that STGM, so you need to test first.
>
> --
> Shmuel (Seymour J.) Metz
> http://mason.gmu.edu/~smetz3
>
> ________________________________________
> From: IBM Mainframe Assembler List [[email protected]] on
> behalf of Mark Hammack [[email protected]]
> Sent: Tuesday, November 30, 2021 12:43 PM
> To: [email protected]
> Subject: Re: Base-less macros
>
> Couldn't do a "normal" STM R14,R12,4(R13) since that would overlay the area
> to be checked.  STGM 14,12,8(13) would probably work in most cases.  Either
> the first 72 bytes will be rewritten with the STM or the data is already
> stored.  The only issue I see is possibly debugging, trying to decipher the
> RSA chain to figure out what routine was called prior to the current
> routine (had to do that a couple of times).
>
>
>
> *Mark*
>
>
> On Tue, Nov 30, 2021 at 10:13 AM Charles Mills <[email protected]> wrote:
>
> > > the caller must provide a large enough area to allow for the 144 byte
> >
> > Does that not make the problem go away? Simply automatically always save
> > the low order halves of the registers, and if the subroutine will be
> > altering the high halves, save those also. Done. The *caller* has no say
> in
> > the save area format.
> >
> > Charles
> >
> >
> > -----Original Message-----
> > From: IBM Mainframe Assembler List [mailto:
> [email protected]]
> > On Behalf Of Mark Hammack
> > Sent: Tuesday, November 30, 2021 7:54 AM
> > To: [email protected]
> > Subject: Re: Base-less macros
> >
> > In our case, the caller doesn't "know" whether the called subroutine is
> > base 31 or base 64.  So it is up to the called subroutine to "figure out"
> > whether the caller used a 72 byte save area or a 144 byte save area.
> > Parameters to the macro set addressing mode, RSA size, etc.  This allows
> > for a 31 bit module to call a 64 bit subroutine and vice versa.  That's
> > what I really mean by "switches between".  The one caveat is that the
> > caller must provide a large enough area to allow for the 144 byte area.
> >
> > Since some subroutines accept arguments in R0 and/or R1 (and
> unfortunately
> > assume other registers are pre-loaded) those can't be touched before
> being
> > saved.  Likewise, if the routine is called from another 64 bit
> subroutine,
> > the high halves of registers are (potentially) in use.  However, since
> > (currently) all of our programs run below the bar, using the high half of
> > R14 may be an option.  I need to look into using a FPR or AR but the 4
> byte
> > literal pool works for now.  Storing R14 in 8(R13) is not a bad idea
> > either.
> >
>

Reply via email to