Kaffe on CRIS/Etrax

Edouard G. Parmelan kaffe@rufus.w3.org
Thu, 30 Aug 2001 22:16:02 +0200


On Wed, Aug 29, 2001 at 10:42:53 +0200, Mikael Pahmp wrote:

> 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?

Yep, when Garbadge Collector walks thread stack.
kaffe/kaffevm/mem/gc-incremental.c: gcWalkConservative() 

Did alignment of local variable differ from alignement of fields in
structure ?

-- 
Edouard G. Parmelan
http://egp.free.fr