[parisc-linux] Progress - Update

John David Anglin dave@hiauly1.hia.nrc.ca
Tue, 30 Nov 1999 13:17:05 -0500 (EST)


> I built another kernel without IPC.  In this one, the kernel panic'd
> in get_unused_buffer_head.  This one occured because unused_list was
> zero.  Again, it looks like there is an initialization problem somewhere.
> I think others have reported this problem in the past.  It looks like:
> 
> bad address 0000001c (code 15)
> Kernel panic: bad address

I have found the cause of this panic.  The problem occurs when xchg
is called with a pointer which is not aligned on a 16 byte boundary.
The ldcws semaphore instruction is only defined when the address is
aligned on a 16 byte boundary.  It is used when the value to exchange
is 0.

The macro xchg is used in quite a few places in what is nominally
machine independent code.  Should we add __attribute__ ((aligned (16))
to the definitions of all variables which exchange with 0?  Or, should
we look for another solution?

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)