R.S. wrote:
I'm not so slow, call me RadaFAST (or Radoslaw) <g>
I understand, the hole is only in virtual memory, the real memory between 2G and 4G will not be wasted. However I don't understand the reason why any bit in any 24-bit address could mess someting in 64-bit addressing mode. Is it a problem with low-order bit ?

The consideration of AMODE(24) programs demonstrates quite clearly why the z/OS virtual storage "dead" zone was purely an option ... never a requirement.

In the early 1980s, the 370/XA bi-modal addressing architecture was implemented. There were many, many issues with programs that -- either accidentally or intentionally -- placed "garbage" in the upper eight bits of an address word. For example, a 24-bit program created an address word containing x'87654321' instead of x'80654321'. A 31-bit program referenced the storage at x'07654321', which was not the intended storage. These issues resulted in all kinds of "wrong" processing, including storage overlays. It was ugly! And, these bugs were very difficult; nearly impossible to find. Back then, I was an application programmer and had no access to SLIP. I traced through thousands of lines of code using TSO TEST. As I said, Ugly!

If you were lucky, and the "gods" smiled upon you that day, the 31-bit program processing the "bad" address would suffer an 0C4 abend because the storage (in this case at x'07654321') was not GETMAINed. This was the _best possible_ outcome! It made finding and correcting the problem (relatively) easy!

Those experiences were the impetus for the z/OS developers' decision to create a virtual storage "dead" zone between 2G and 4G. (Fortunately for us, these developers are old enough to actually remember what happened in the early 1980s.) They learned from that experience and did not allow history to repeat itself, They understood that, had they not done so, our programming community (IBM included) would have had to suffer with untold numbers of bugs, similar to what we dealt with (then) 20 years ago with XA, due to 64-bit programs processing 32-bit address words with the high order bit set. In each case, an LLTR or LLTRG is the answer. But, in the absence of a hard failure, recognizing, finding and correcting such bugs would have been extremely difficult.

The result of this purely optional, yet extremely wise, design decision, is that a 32-bit address word with the high order bit set -- either accidentally or intentionally -- will cause an 0C4 abend when processed by a 64-bit mode program. No need for luck or a smiling deity,. It is the stated policy of the z/OS operating system that such addresses are guaranteed never to be valid. Hallelujah!

--
Edward E Jaffe
Phoenix Software International, Inc
5200 W Century Blvd, Suite 800
Los Angeles, CA 90045
310-338-0400 x318
[EMAIL PROTECTED]
http://www.phoenixsoftware.com/

----------------------------------------------------------------------
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

Reply via email to