* gnu/packages/patches/libmad-armv7-thumb-pt1.patch, gnu/packages/patches/libmad-armv7-thumb-pt2.patch, gnu/packages/patches/libmad-frame-length.patch: New files. * gnu-system.am (dist_patch_DATA): Add them. * gnu/packages/mp3.scm (libmad)[source]: Add patches.
		
			
				
	
	
		
			36 lines
		
	
	
	
		
			1,023 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			1,023 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Copied from Debian.
 | |
| 
 | |
| From: Dave Martin
 | |
| Subject: "rsc" doesnt exist anymore in thumb2
 | |
| 
 | |
| diff --git a/fixed.h b/fixed.h
 | |
| index 4b58abf..ba4bc26 100644
 | |
| --- a/fixed.h
 | |
| +++ b/fixed.h
 | |
| @@ -275,12 +275,25 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y)
 | |
|  	 : "+r" (lo), "+r" (hi)  \
 | |
|  	 : "%r" (x), "r" (y))
 | |
|  
 | |
| +#ifdef __thumb__
 | |
| +/* In Thumb-2, the RSB-immediate instruction is only allowed with a zero
 | |
| +	operand.  If needed this code can also support Thumb-1 
 | |
| +	(simply append "s" to the end of the second two instructions). */
 | |
| +#  define MAD_F_MLN(hi, lo)  \
 | |
| +    asm ("rsbs        %0, %0, #0\n\t"  \
 | |
| +	 "sbc   %1, %1, %1\n\t"  \
 | |
| +	 "sub   %1, %1, %2"  \
 | |
| +	 : "+&r" (lo), "=&r" (hi)  \
 | |
| +	 : "r" (hi)  \
 | |
| +	 : "cc")
 | |
| +#else /* ! __thumb__ */
 | |
|  #  define MAD_F_MLN(hi, lo)  \
 | |
|      asm ("rsbs	%0, %2, #0\n\t"  \
 | |
|  	 "rsc	%1, %3, #0"  \
 | |
| -	 : "=r" (lo), "=r" (hi)  \
 | |
| +	 : "=&r" (lo), "=r" (hi)  \
 | |
|  	 : "0" (lo), "1" (hi)  \
 | |
|  	 : "cc")
 | |
| +#endif /* __thumb__ */
 | |
|  
 | |
|  #  define mad_f_scale64(hi, lo)  \
 | |
|      ({ mad_fixed_t __result;  \
 |