[parisc-linux] 2.4.18-pa35 SMP process hangs on a J200
Matthew Wilcox
willy@debian.org
Wed, 12 Jun 2002 15:11:30 +0100
On Tue, Jun 11, 2002 at 01:39:38PM -0500, Michael S. Zick wrote:
> using objdump -d on the kernel.o produced by my compiler
> (a different version of GCC than used for pa-risc) I find that
> for the "c" code sequence:
> ....
> int cpu = smp_processor_id() ;
>
> __save_flags(flags) ;
> ....
> generates assembly code which modifies the flags during the
> initialization of "cpu" before the flags are actually saved.
are you sure? every architecture (apart from sparc32) uses:
#define smp_processor_id() (current->processor)
admittedly on i386 (which is where you seem to be investigating), this
expands to:
get_current()->processor
which expands to
andl %%esp,%0
where 8191UL has previously been loaded into register %0. but i don't
see how this can affect the interrupt flags. admittedly, i know very
little about x86, but there are many other instances of code like this
in the kernel.
--
Revolutions do not require corporate support.