[Gc] Porting gc to IBM AS/400
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
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
Note, I'm trying to port natively to the AS/400 rather than use a
unix-like subsystem like PASE.
More information about the Gc