Over on IBM-MAIN there is a discussion on linkage conventions, which was started by me, initially about changing an HLASM program to be RENT. But all the back and forth about the "right way" to implement a linkage convention has made we want a couple of new instructions, which exist on many other machines. A hardware PUSHR and POPR (R suffix to avoid conflict with existing PUSH & POP) which can PUSH and POP the general and access registers onto a stack. This would require a hardware stack, similar to the Linkage Stack used by PC/PR/BAKR, but one which can be dynamically expanded (cause a PIC which the OS, z/OS in my case, would trap and then get a new area and chain it to the old area). The PUSH and POP could only use this stack, which I guess would be pointed to my a CR? So the stack itself could be in key 0 (or maybe other non-key 8/9 storage), AMODE(64) storage. Perhaps LSQA. This would prevent the ever popular (with hackers) stack corruption and overflow condition by normal user code.
Why did I bring this up, beyond my usual liking for talk? Mainly because it would help "clean up" all the problems with the current linkage convention. I.e. what format is the caller's save area? Is there one? Is it big enough to store all the grande registers plus access registers? This latter is important to me because I write code which uses those and I need somewhere to store the caller's. Yes, I guess that I could save the minimal number of registers and do a STORAGE OBTAIN to get the "real" save area. But then I don't have a way to communicate to the dump format routine where the caller's registers really are. Plus, I would hope that the PUSHR/POPR instruction (assuming no stack over/under flow) would be more CPU efficient than a bunch of STORAGE OBTAIN invocations. And might even make some things easier to code, such as SRB routines. Am I off in la-la land again? Do I need more caffeine? Or less? -- This is a test of the Emergency Broadcast System. If this had been an actual emergency, do you really think we'd stick around to tell you? Maranatha! <>< John McKown
