Re: PPC GCC Inline assembly help

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

 



eija_flight <ajie.dirgantara@xxxxxxxxxxxxxxx> writes:

> I'm using GCC inline assembly on PowerPc.
>
> Below codes is works :
>
> int reg_gpr()
> {
> int Rx = 0;
> 	__asm__ (
> 		"mr 31,%0\n"
> 		:
> 		:"i"(Rx)
> 		);
> }
>
> But not with this one : 
>
> reg_gpr(0);
> int reg_gpr(int Rx)
> {
> 	__asm__ (
> 		"mr 31,%0\n"
> 		:
> 		:"i"(Rx)
> 		);
> }
>
> It will send error messages "impossible constraints in asm"
> Is there any other method to modify Rx value from outside functions? 

By using the 'i' constraint you are requiring a constant integer.  In
the second case you only have a constant integer if the function is
inlined, which will normally not happen when not optimizing.  You can
force it to happen generally by using __attribute__ ((always_inline)).

Or, you could change to using the 'r' constraint instead of, or in
addition to, the 'i' constraint.  The 'r' constraint will permit the
value to be in a general register.

Ian

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux