[Gc] Porting gc to IBM AS/400

Peter Colson pcolson at connexus.net.au
Tue Oct 12 22:04:01 PDT 2004

Can anyone confirm whether this has been done previously or, if not, if 
it's possible (see below)?

Up to now, I've been able to compile most of the code under V5R3 of the 
operating system using the teraspace option. To explain, teraspace is 
required to provide 8 byte pointers that can be stored in an integral 
(long long) and that can be bit-manipulated and turned back into a 
pointer (this is required for other code I'm porting). Without 
teraspace, pointers are 16 bytes and can't be manipulated without 
invalidating them.

I build the setjmp_t.c program and it shows:

     This appears to be a AS400 running OS400
     Stack appears to grow up.
     Define STACK_GROWS_UP in gc_private.h
     A good guess for STACKBOTTOM on this machine is 0x1000.
     Note that this may vary between machines of ostensibly
     the same architecture (e.g. Sun 3/50s and 3/80s).
     On many machines the value is not fixed.
     A good guess for ALIGNMENT on this machine is 8.
     Generic mark_regs code probably wont work
     Need assembly code

Now, it's the "need assembly code" that provides a problem. The AS/400 
is a platform that does not provide access to native machine code. The 
system only presents OS API's and an abstract MI (machine interface) 
layer rather than the typical native machine interface accessable via 
assembler code. As such there is no register access available, among 
other things.

Note, I'm trying to port natively to the AS/400 rather than use a 
unix-like subsystem like PASE.

Peter Colson.

More information about the Gc mailing list