Am 22.11.2019 um 23:23 schrieb Paul Gilmartin:
Do I understand correctly that enforcement is entirely by
software; those addresses are quite acceptable to the hardware?


the translation of the virtual addresses to real addresses is not done
by software only; there is some hardware support.

The software (the OS) decides, which virtual addresses are valid (and which are not), simply by putting entries for the valid page numbers into the translation tables.
The translation itself is supported in part by the hardware (for example:
translation lookaside buffers etc.).

As others have pointed out, the different OSes have different strategies;
z/OS does never allocate virtual addresses from 0x80000000 to 0xFFFFFFFF.
The reason is that in AMODE 31 addresses often have the leftmost bit on,
which has no meaning, but with AMODE 64, this bit is part of the address
and should be zero with valid 31 bit addresses. IBM wanted that nobody
uses a valid 31 bit address with the leftmost bit on with AMODE 64 and
gets a wrong access (to the address + 0x80000000) undetected ...
that is, a module that works with AMODE 31 must be fixed to use
clean 31 bit addresses to work with AMODE 64, too; it is not sufficient
to zero only the left half of the address register.

HTH, kind regards

Bernd

Reply via email to