Wenn denn der Speicher das einzige Problem wäre.
Der einstufige Speicher ist eine unterstützung des Micro-Codes, liegt also quasi unterhalb des OS.

Verwende ich ein 32-Bit-Programm, kann ich eben max. 2^32 Bytes adressieren, nehme ich 64-Bit eben 2^64.

Dass ich den Speicher auch erhalte wird eben z.B. durch C-Funktionen wie malloc() realisiert.
In Windows-C wird durch malloc() eben die Windows-Implementation GlobalAlloc() aufgerufen, die mir dann den virtuellen Speicher zur Verfügung stellt (oder, wenn die Pagefile zu klein ist, eben einen Fehler auslöst).

In der AS/400 ist eben jede Adresse (Pointer) auf 128-Bit ausgerichtet und deshalb kann das MI-Äquivalent des malloc() mir virtuellen Speicher (egal wo dieser liegt) liefern.

Was du also machen kannst, ist eben per AS/400-C-Compiler einen Linux-Kernel zu erstellen, wobei du alle "Hardware"-spezifischen Funktionen durch eigene Treiber noch entwickeln musst.