On Mon, 7 May 2018 08:15:45 -0400, Peter Relson <rel...@us.ibm.com> wrote:

>The term "32-bit program" has been repeated in this thread. It appears 
>that the OP means by this that the program can be AMODE 31 or AMODE 64 but 
>never directly touches bits 0-31 of a GR. 

Thanks for providing that clarification. You are
totally correct.

>It appears that the OP is interested in expanding the program to 
>accommodate twice as much storage as it has access today (which in general 
>is a very limited increase and one might call it short-sighted since how 
>often is "twice as much" enough, except as a temporary measure?), while 
>still having to deal with being in AMODE 64 when using the storage that 
>happens to be within the bar, but not wanting to use 8-byte data pointers 
>and not wanting to use the available instructions that set 8-byte 
>registers. 

Yes, this is correct.

Based on your clarifications, I have updated my RFE.
Basically just the last paragraph below. Can you tell
me if any further clarification or rewording is required
so that IBM at least fully understands my request, even
if they reject it as too much work?

Thanks. Paul.




I would like GETMAIN to support a LOC=32
parameter, giving 32-bit programs access
to a full 4 GiB instead of the current
2 GiB provided by LOC=31. The LOC=31 bits
plus the top bit of the option byte seen here:

https://www.ibm.com/support/knowledgecenter/SSLTBW_2.3.0/com.ibm.zos.v2r3.ieav200/svc120.htm

can be used to signal a LOC=32 request.

When the GETMAIN is executed in AM64,
memory above 2 GiB is potentially returned.
When executed in AM31, normal LOC=31
memory is obtained instead. This way the
application will still work on older systems
that aren't LOC=32 aware.

When obtaining LOC=32 memory, the GETMAIN
routine should search *down* the free memory
chain to find a free area, to preserve the LOC=31
space, and if there is no fragmentation, allow
a request for a single 3 GiB of memory to be
satisfied (as a single block spanning the 2 GiB
boundary).

It is up to the application program to ensure that
when manipulating the LOC=32 memory it is in
AM64 and while in AM64 it does not attempt to
use the top bit of any 32-bit register as a flag.

Note that by "32-bit program" I mean a program that
can be running in AM24 or AM31 or AM64, but never
directly touches bits 0-31 of a general register.
ie data pointers are always 4-bytes and no
instruction that touches an 8-byte register is
ever executed. This allows compact 32-bit programs
to continue to be written instead of having the
overhead of switching everything to 64-bit. A
program would only need to be rewritten or
rebuilt with a different compiler option if it
started to exceed the 4 GiB limit rather than
exceeding a 2 GiB limit.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to