m31 is semantically the same as the m32 option.

The m31 option allows for 32 bit addressing and that is confusing since the m31 option in S390 would mean 2 GiB space addressing but it allows for 32 bit addressing, this is awkward, not only because the option is misleading but is also incorrect.


To use 32 bit mode you specify m31, however in S390 there are 32 and 31 bit modes, which have only 1 bit in difference.


Code used:

    volatile uint64_t *gib_test = (volatile uint64_t *)0x7FFFFFFF;
    memset(gib_test, 1, 4096);


Hercules dump:

r 0x7FFFFFFF-0x800001FF
R:000000007FFFFFFF:K:06=01 .
R:000000008000000F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000001F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000002F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000003F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000004F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000005F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000006F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000007F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000008F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000009F:K:06=01 01010101 01010101 01010101 010101 ................ R:00000000800000AF:K:06=01 01010101 01010101 01010101 010101 ................ R:00000000800000BF:K:06=01 01010101 01010101 01010101 010101 ................ R:00000000800000CF:K:06=01 01010101 01010101 01010101 010101 ................ R:00000000800000DF:K:06=01 01010101 01010101 01010101 010101 ................ R:00000000800000EF:K:06=01 01010101 01010101 01010101 010101 ................ R:00000000800000FF:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000010F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000011F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000012F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000013F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000014F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000015F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000016F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000017F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000018F:K:06=01 01010101 01010101 01010101 010101 ................ R:000000008000019F:K:06=01 01010101 01010101 01010101 010101 ................ R:00000000800001AF:K:06=01 01010101 01010101 01010101 010101 ................ R:00000000800001BF:K:06=01 01010101 01010101 01010101 010101 ................ R:00000000800001CF:K:06=01 01010101 01010101 01010101 010101 ................ R:00000000800001DF:K:06=01 01010101 01010101 01010101 010101 ................ R:00000000800001EF:K:06=01 01010101 01010101 01010101 010101 ................ R:00000000800001FF:K:06=01 01010101 01010101 01010101 010101 ................


The option i used was m31 of course, however this option is misleading since it allows 32 bit mode, and there is no m32 so you have to use m31 - just lots of misleading options.


I'm requesting that m31 and m32 are semantically different to allow a less-misleading naming, since there is no 31 bit restriction whatsoever.

Reply via email to