Re: can't find a register in class 'R1_REGS' while reloading 'asm'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> is anybody able to reproduce it? configuration is attached.
> 
>   CC      kernel/signal.o
>   kernel/signal.c: In function 'copy_siginfo_to_user':
>   kernel/signal.c:2145: warning: cast from pointer to integer of different size
>   kernel/signal.c:2145: warning: cast from pointer to integer of different size
>   kernel/signal.c:2152: warning: cast from pointer to integer of different size
>   kernel/signal.c:2152: warning: cast from pointer to integer of different size
>   kernel/signal.c:2168: warning: cast from pointer to integer of different size
>   kernel/signal.c:2168: warning: cast from pointer to integer of different size
>   kernel/signal.c: In function 'do_sigaltstack':
>   kernel/signal.c:2489: warning: cast from pointer to integer of different size
>   kernel/signal.c:2489: warning: cast from pointer to integer of different size
>   kernel/signal.c: In function 'get_signal_to_deliver':
>   /home/cavok/devel/kernel/linux-2.6.git/arch/parisc/include/asm/spinlock.h:25: error: can't find a register in class 'R1_REGS' while reloading 'asm'
>   /home/cavok/devel/kernel/linux-2.6.git/arch/parisc/include/asm/spinlock.h:25: error: 'asm' operand has impossible constraints

I didn't get this error by just enabling SMP.

The asm at spinlock.h:25 doesn't directly use r1.  I think the only way
this might happen is 'a' is spilled to the stack at a very large offset
from the stack pointer.  The load of the offset may need r1.  There also
has to be some other code that has stolen r1 prior to the asm.

The register allocation and inlining in gcc various significantly from
one version.  So, a different gcc version might work better.  At least
one version of gcc seemed to want to nest asm's.

To debug, preprocessed source and exact gcc command line is needed.

Dave
-- 
J. David Anglin                                  dave.anglin@xxxxxxxxxxxxxx
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)
--
To unsubscribe from this list: send the line "unsubscribe linux-parisc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux SoC]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux