This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] S/390: HW accelerated iconv module for iso-8859-1/cp37 conversions


On 10/13/2015 12:40 PM, Andreas Schwab wrote:
> "Andreas Krebbel" <krebbel@linux.vnet.ibm.com> writes:
> 
>> +    asm volatile ("0:                        \n\t"			\
>> +                  "  troo    %0,%1           \n\t"			\
>> +                  "  jz      1f              \n\t"			\
>> +                  "  jo      0b              \n\t"			\
>> +                  "  llgc    %3,0(%1)        \n\t"			\
>> +                  "  la      %3,0(%3,%4)     \n\t"			\
>> +                  "  mvc     0(1,%0),0(%3)   \n\t"			\
>> +                  "  aghi    %1,1            \n\t"			\
>> +                  "  aghi    %0,1            \n\t"			\
>> +                  "  aghi    %2,-1           \n\t"			\
>> +                  "  j       0b              \n\t"			\
>> +                  "1:                        \n"			\
>> +									\
>> +     : "+a" (pOutput), "+a" (pInput), "+d" (length), "=&a" (tmp)        \
> 
> That doesn't force %1 to be an even numbered register.
> 
> ../iconv/loop.c: Assembler messages:
> ../iconv/loop.c:326: Fatal error: odd numbered general purpose register specified as register pair

Only %0 is required to be a register pair. This is enforced with the register asm definition above:

register unsigned char *pOutput asm ("2") = outptr;

So it looks like GCC is not respecting the register asm in your case?!

-Andreas-


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]