I did run into F2SA over 10 years ago. I was looking at a dump that
occurred when a product I worked on called Unicode services (it turned
out to be an actual bug in the service).
The fine gentleman Peter Relson answered my IBM-MAIN query here, along
with a caveat that some components do not use publicly documented save
area interfaces.
https://listserv.ua.edu/cgi-bin/wa?A2=IBM-MAIN;88eeea77.0609
As I was On 2017-05-30 07:31, Steve Smith wrote:
First answer: The high-halves portion of the save areas is used by the
caller, not the callee. I suppose for the case when calling a program that
doesn't save all 64 bits, yet uses some of them. The Assembler Services
guide goes into great detail on linkage conventions and save area formats,
but it requires some close reading.
I see F0*, F1, F4, F5, F6, F7, & F8. I could guess what F2 & F3 were, but
I've never seen documentation for them. *aka classic 72-byte savearea.
sas
On Tue, May 30, 2017 at 10:11 AM, Gary Weinhold <[email protected]> wrote:
I have notes that indicate there can be an F1SA, which means that this
savearea may be only 8 bytes long because the hardware linkage stack was
used. If R13 is non-zero, the F1SA savearea is a standard 72-byte
save-area.
F6SA is supposed to mean the hardware linkage stack was used and the
savearea is 144 bytes.
Since it is the called program that has to save all the registers, I think
the answer to question 2 could only be that the alet of previous savearea
is the value in AR13 at entry.
Regarding question 3: Do you have any control over what languages are
calling you? I haven't come across any standard LE-supported languages
using anything but the historic 72-byte format, but there may be
announcements I've missed. I figured these other save areas may be
documented for vendor software so that debugging software would be able to
forward and backward chain saveareas with some degree of confidence.
My notes for F8SA are different (question 1) so I can't comment.
I think my notes came from a Tom Conway article or presentation.
Gary Weinhold
Senior Application Architect
DATAKINETICS | Data Performance & Optimization
Phone: +1.613.523.5500 x216<tel:+1.613.523.5500%20x216>
Email: [email protected]<mailto:[email protected]>
[http://www.dkl.com/wp-content/uploads/2015/07/dkl_logo.png]<
http://www.dkl.com/>
Visit us online at www.DKL.com<http://www.dkl.com/>
[http://www.dkl.com/wp-content/uploads/2015/08/banner.png]<h
ttp://www.dkl.com/mailsig>
E-mail Notification: The information contained in this email and any
attachments is confidential and may be subject to copyright or other
intellectual property protection. If you are not the intended recipient,
you are not authorized to use or disclose this information, and we request
that you notify us by reply mail or telephone and delete the original
message from your mail system.
__________
On 2017-05-30 09:39, John McKown wrote:
As best as I can tell, there are 5 different Save Area formats. There is
the historic 72 byte format. This saves bits 32..63 of GPR 14-12. There is
an F4SA which is 144 bytes and contains bits 0..63 of GPRs 14-12. There is
a F5SA which holds bits 0..63 of the GPRs 14-12 and bits 0..31 of GPRs
0-15. There is F7SA which holds bits 0..63 of GPRs 14-12 and ARs 14-12 plus
"alet of previous save area" (isn't this just AR13 at entry?). And finally,
there is F8SA which is bits 0..63 of GPRs 14-12, ARs 14-12, "alet of
previous savearea", bits 32..63 of GPRs 0-15.
ref:
https://www.ibm.com/support/knowledgecenter/SSLTBW_2.2.0/com
.ibm.zos.v2r2.iead200/iead200571.htm
First question: Why save the "high word" of regs 0-15 in addition to the
entire double word of regs 14-12 (all but GPR15)?
Second question: Why say "alet of previous savearea" rather than AR13? Is
there a case where this is _not_ in AR13 at entry? If so, how would I know?
Philosophy question: If I am writing a non-LE enabled HLASM subroutine,
should I check the "save area type" to ensure that my routine is properly
callable from any non-XPLINK routine? I know that the standard says that it
is the _caller's_ responsibility to do this. But I'm paranoid. And I don't
way to ASSuME that the caller is paying attention and by so doing possibly
introduce a memory overlay in the caller. Also, if I get a "bad" type of
savearea, should I "do something", such as using the linkage stack, or
should I abend or maybe return a "failed" return code?
--
M. Ray Mullins
Roseville, CA, USA
German is essentially a form of assembly language consisting entirely of far
calls heavily accented with throaty guttural sounds. ---ilvi
French is essentially German with messed-up pronunciation and spelling.
--Robert B Wilson
English is essentially French converted to 7-bit ASCII. ---Christophe Pierret
[for Alain LaBonté]