I'm working on porting Kaffe to Axis' Etrax CPU. It uses an RISC architecture called 
CRIS. More info can be found at http://developer.axis.com.

The CRIS ABI breaks some assumptions made in Kaffe about memory alignment. More 
specifically, Kaffe expects local function variables to be aligned on even 32-bit 
addresses, e.g. the 'where' pointers in kaffe/kaffevm/locks.c. This is not true when 
compiled with gcc for CRIS which doesn't align local variables at all.

To work around this my idea is to simply align the 'where' pointers by clearing their 
two lowest bits before using them in the functions in locks.c. Does anyone see a 
problem with that?

Identifying this problem wasn't easy. Does anyone know any more places within Kaffe 
where a certain local variable alignment is assumed?

/MiP

Reply via email to