misc/libfreetype/include/freetype/config/ftconfig.h
branchhedgeroid
changeset 6041 04bbe344b8d3
parent 5172 88f2e05288ba
equal deleted inserted replaced
6039:d75329716a02 6041:04bbe344b8d3
   338 #if defined( __arm__ ) && !defined( __thumb__ )    && \
   338 #if defined( __arm__ ) && !defined( __thumb__ )    && \
   339     !( defined( __CC_ARM ) || defined( __ARMCC__ ) )
   339     !( defined( __CC_ARM ) || defined( __ARMCC__ ) )
   340 #define FT_MULFIX_ASSEMBLER  FT_MulFix_arm
   340 #define FT_MULFIX_ASSEMBLER  FT_MulFix_arm
   341 
   341 
   342   /* documentation is in freetype.h */
   342   /* documentation is in freetype.h */
       
   343   // Xeli: Got this snippet from  a 2.4.6 source
   343 
   344 
   344   static __inline__ FT_Int32
   345   static __inline__ FT_Int32
   345   FT_MulFix_arm( FT_Int32  a,
   346   FT_MulFix_arm( FT_Int32  a,
   346                  FT_Int32  b )
   347                  FT_Int32  b )
   347   {
   348   {
   348     register FT_Int32  t, t2;
   349     register FT_Int32  t, t2;
   349 
   350 
   350 <<<<<<< Updated upstream
       
   351 
   351 
   352     __asm__ __volatile__ (
   352     __asm__ __volatile__ (
   353       "smull  %1, %2, %4, %3\n\t"       /* (lo=%1,hi=%2) = a*b */
   353       "smull  %1, %2, %4, %3\n\t"       /* (lo=%1,hi=%2) = a*b */
   354       "mov    %0, %2, asr #31\n\t"      /* %0  = (hi >> 31) */
   354       "mov    %0, %2, asr #31\n\t"      /* %0  = (hi >> 31) */
   355       "add    %0, %0, #0x8000\n\t"      /* %0 += 0x8000 */
   355       "add    %0, %0, #0x8000\n\t"      /* %0 += 0x8000 */
   356       "adds   %1, %1, %0\n\t"           /* %1 += %0 */
   356       "adds   %1, %1, %0\n\t"           /* %1 += %0 */
   357       "adc    %2, %2, #0\n\t"           /* %2 += carry */
   357       "adc    %2, %2, #0\n\t"           /* %2 += carry */
   358       "mov    %0, %1, lsr #16\n\t"      /* %0  = %1 >> 16 */
   358       "mov    %0, %1, lsr #16\n\t"      /* %0  = %1 >> 16 */
   359       "orr    %0, %0, %2, lsl #16\n\t"  /* %0 |= %2 << 16 */
   359       "orr    %0, %0, %2, lsl #16\n\t"  /* %0 |= %2 << 16 */
   360 =======
       
   361 #warning Should this be __asm__ ?
       
   362     asm __volatile__ (
       
   363       "smull  %1, %2, %4, %3\n\t"   /* (lo=%1,hi=%2) = a*b */
       
   364       "mov    %0, %2, asr #31\n\t"  /* %0  = (hi >> 31) */
       
   365       "add    %0, %0, #0x8000\n\t"  /* %0 += 0x8000 */
       
   366       "adds   %1, %1, %0\n\t"       /* %1 += %0 */
       
   367       "adc    %2, %2, #0\n\t"       /* %2 += carry */
       
   368       "mov    %0, %1, lsr #16\n\t"  /* %0  = %1 >> 16 */
       
   369       "orr    %0, %2, lsl #16\n\t"  /* %0 |= %2 << 16 */
       
   370 >>>>>>> Stashed changes
       
   371       : "=r"(a), "=&r"(t2), "=&r"(t)
   360       : "=r"(a), "=&r"(t2), "=&r"(t)
   372       : "r"(a), "r"(b) );
   361       : "r"(a), "r"(b) );
   373     return a;
   362     return a;
   374   }
   363   }
   375 
   364