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