[PATCH] S/390: HW accelerated iconv module for iso-8859-1/cp37 conversions
Andreas Krebbel
krebbel@linux.vnet.ibm.com
Tue Oct 13 11:50:00 GMT 2015
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-
More information about the Libc-alpha
mailing list