source: packages/libs/libgcrypt/patches/001-mips-h-constraint.patch @ 17787

Last change on this file since 17787 was 17787, checked in by florian, 7 years ago

[package] fix the removal of the h constraint in gcc4.4 with libgcrypt

File size: 2.8 KB
  • libgcrypt/mpi/longlong.

    The MIPS port for GCC-4.4 no longer recognizes the h asm constraint.
    Patch from: https://forum.openwrt.org/viewtopic.php?id=20520
    
    old new  
    710710#endif /* __m88110__ */ 
    711711#endif /* __m88000__ */ 
    712712 
     713/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ 
     714#if defined (__GNUC__) && defined (__GNUC_MINOR__) 
     715#define __GNUC_PREREQ(maj, min) \ 
     716        ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) 
     717#else 
     718#define __GNUC_PREREQ(maj, min)  0 
     719#endif 
     720 
    713721/*************************************** 
    714722 **************  MIPS  ***************** 
    715723 ***************************************/ 
    716724#if defined (__mips__) && W_TYPE_SIZE == 32 
    717 #if __GNUC__ > 2 || __GNUC_MINOR__ >= 7 
     725#if __GNUC_PREREQ (4,4) 
     726#define umul_ppmm(w1, w0, u, v) \ 
     727  do {                                                                 \ 
     728    UDItype __ll = (UDItype)(u) * (v);                                 \ 
     729    w1 = __ll >> 32;                                                   \ 
     730    w0 = __ll;                                                         \ 
     731  } while (0) 
     732#endif 
     733#if !defined (umul_ppmm) && __GNUC_PREREQ (2,7) 
    718734#define umul_ppmm(w1, w0, u, v) \ 
    719735  __asm__ ("multu %2,%3"                                                \ 
    720736           : "=l" ((USItype)(w0)),                                      \ 
    721737             "=h" ((USItype)(w1))                                       \ 
    722738           : "d" ((USItype)(u)),                                        \ 
    723739             "d" ((USItype)(v))) 
    724 #else 
     740#endif 
     741#if !defined (umul_ppmm) 
    725742#define umul_ppmm(w1, w0, u, v) \ 
    726743  __asm__ ("multu %2,%3 \n" \ 
    727744           "mflo %0 \n"     \ 
     
    739756 **************  MIPS/64  ************** 
    740757 ***************************************/ 
    741758#if (defined (__mips) && __mips >= 3) && W_TYPE_SIZE == 64 
    742 #if __GNUC__ > 2 || __GNUC_MINOR__ >= 7 
     759#if __GNUC_PREREQ (4,4) 
     760#define umul_ppmm(w1, w0, u, v) \ 
     761  do {                                                                 \ 
     762    typedef unsigned int __ll_UTItype __attribute__((mode(TI)));       \ 
     763    __ll_UTItype __ll = (__ll_UTItype)(u) * (v);                       \ 
     764    w1 = __ll >> 64;                                                   \ 
     765    w0 = __ll;                                                         \ 
     766  } while (0) 
     767#endif 
     768#if !defined (umul_ppmm) && __GNUC_PREREQ (2,7) 
    743769#define umul_ppmm(w1, w0, u, v) \ 
    744770  __asm__ ("dmultu %2,%3"                                               \ 
    745771           : "=l" ((UDItype)(w0)),                                      \ 
    746772             "=h" ((UDItype)(w1))                                       \ 
    747773           : "d" ((UDItype)(u)),                                        \ 
    748774             "d" ((UDItype)(v))) 
    749 #else 
     775#endif 
     776#if !defined (umul_ppmm) 
    750777#define umul_ppmm(w1, w0, u, v) \ 
    751778  __asm__ ("dmultu %2,%3 \n"    \ 
    752779           "mflo %0 \n"         \ 
Note: See TracBrowser for help on using the repository browser.