Bug 157016 - [patch] audio/soundtouch remove broken status for amd64 arch
[patch] audio/soundtouch remove broken status for amd64 arch
Status: Closed FIXED
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s)
Latest
Any Any
: Normal Affects Only Me
Assigned To: Alexey Dokuchaev
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2011-05-13 21:20 UTC by Ivan Klymenko
Modified: 2011-05-14 20:04 UTC (History)
0 users

See Also:


Attachments
patch-cpu_detect_x86_gcc.cpp.txt (3.91 KB, patch)
2011-05-13 21:34 UTC, Ivan Klymenko
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Ivan Klymenko 2011-05-13 21:20:08 UTC
This patch allows you to remove the error:

  {standard input}: Assembler messages:
  {standard input}:28: Error: suffix or operands invalid for `pop'
  {standard input}:31: Error: suffix or operands invalid for `push'

Fix: create patch file audio/soundtouch/files/patch-cpu_detect_x86_gcc.cpp




#else

     uint res = 0;

+#ifdef __x86_64__
+    int64_t edx, eax, ecx;
+#else
+    int edx, eax, ecx;
+#endif
 

     if (_dwDisabledISA == 0xffffffff) return 0;

 

@@ -86,42 +91,55 @@
         "\n\txor     %%esi, %%esi"       // clear %%esi = result register

         // check if 'cpuid' instructions is available by toggling eflags bit 21

 

+#ifdef __x86_64__
+
         "\n\tpushf"                      // save eflags to stack

-        "\n\tpop     %%eax"              // load eax from stack (with eflags)

-        "\n\tmovl    %%eax, %%ecx"       // save the original eflags values to ecx

-        "\n\txor     $0x00200000, %%eax" // toggle bit 21

-        "\n\tpush    %%eax"              // store toggled eflags to stack

+        "\n\tpop     %2"              // load eax from stack (with eflags)

+        "\n\tmov    %2, %3"       // save the original eflags values to ecx

+        "\n\txor     $0x00200000, %2" // toggle bit 21

+        "\n\tpush    %2"              // store toggled eflags to stack

         "\n\tpopf"                       // load eflags from stack

         "\n\tpushf"                      // save updated eflags to stack

-        "\n\tpop     %%eax"              // load from stack

-        "\n\txor     %%edx, %%edx"       // clear edx for defaulting no mmx

-        "\n\tcmp     %%ecx, %%eax"       // compare to original eflags values

+        "\n\tpop     %2"              // load from stack

+#else
+
+        "\n\tpushf"                      // save eflags to stack

+        "\n\tpopl     %2"              // load eax from stack (with eflags)

+        "\n\tmovl    %2, %3"       // save the original eflags values to ecx

+        "\n\txor     $0x00200000, %2" // toggle bit 21

+        "\n\tpush    %2"              // store toggled eflags to stack

+        "\n\tpopf"                       // load eflags from stack

+        "\n\tpushf"                      // save updated eflags to stack

+        "\n\tpopl     %2"              // load from stack

+#endif
+        "\n\txor     %1, %1"       // clear edx for defaulting no mmx

+        "\n\tcmp     %3, %2"       // compare to original eflags values

         "\n\tjz      end"                // jumps to 'end' if cpuid not present

 

         // cpuid instruction available, test for presence of mmx instructions

 

-        "\n\tmovl    $1, %%eax"

+        "\n\tmov    $1, %2"

         "\n\tcpuid"

-//        movl       $0x00800000, %edx   // force enable MMX

-        "\n\ttest    $0x00800000, %%edx"

+//        movl       $0x00800000, %1   // force enable MMX

+        "\n\ttest    $0x00800000, %1"

         "\n\tjz      end"                // branch if MMX not available

 

         "\n\tor      $0x01, %%esi"       // otherwise add MMX support bit

 

-        "\n\ttest    $0x02000000, %%edx"

+        "\n\ttest    $0x02000000, %1"

         "\n\tjz      test3DNow"          // branch if SSE not available

 

         "\n\tor      $0x08, %%esi"       // otherwise add SSE support bit

 

     "\n\ttest3DNow:"

         // test for precense of AMD extensions

-        "\n\tmov     $0x80000000, %%eax"

+        "\n\tmov     $0x80000000, %2"

         "\n\tcpuid"

         "\n\tcmp     $0x80000000, %%eax"

         "\n\tjbe     end"                 // branch if no AMD extensions detected

 

         // test for precense of 3DNow! extension

-        "\n\tmov     $0x80000001, %%eax"

+        "\n\tmov     $0x80000001, %2"

         "\n\tcpuid"

         "\n\ttest    $0x80000000, %%edx"

         "\n\tjz      end"                  // branch if 3DNow! not detected

@@ -132,9 +150,9 @@
 

         "\n\tmov     %%esi, %0"

 

-      : "=r" (res)

+      : "=r" (res), "=d" (edx), "=a" (eax), "=c" (ecx)
       : /* no inputs */

-      : "%edx", "%eax", "%ecx", "%esi" );

+      : "%esi");

       

     return res & ~_dwDisabledISA;

 #endif--0ORO8b7ht6UZYFCKkTrgXTALmhl5GE8Rd7aBIB4UJGBv334u
Content-Type: text/plain; name="file.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="file.diff"

--- ./source/SoundTouch/cpu_detect_x86_gcc.cpp.orig	2009-01-25 18:32:53.000000000 +0200
+++ ./source/SoundTouch/cpu_detect_x86_gcc.cpp	2011-05-13 23:03:42.000000000 +0300
@@ -79,6 +79,11 @@
Comment 1 Edwin Groothuis freebsd_committer 2011-05-13 21:20:17 UTC
Responsible Changed
From-To: freebsd-ports-bugs->danfe

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 Ivan Klymenko 2011-05-13 21:34:04 UTC
I do not understand that constantly occurs after moderation with my
patches :(

Patch file in attachment...
Comment 3 Ivan Klymenko 2011-05-13 21:55:07 UTC
Oh my God!...

See the patch here:
http://pazzle.otdux.com.ua/patch-cpu_detect_x86_gcc.cpp.txt
Comment 4 dfilter freebsd_committer 2011-05-14 10:31:06 UTC
danfe       2011-05-14 09:30:51 UTC

  FreeBSD ports repository

  Modified files:
    audio/soundtouch     Makefile 
  Added files:
    audio/soundtouch/files patch-cpu_detect_x86_gcc.cpp 
  Log:
  - Fix the build on recent -CURRENT/amd64 [1]
  - While here, add LICENSE (LGPL21)
  
  PR:             ports/157016 [1]
  Submitted by:   Ivan Klymenko
  
  Revision  Changes    Path
  1.22      +3 -7      ports/audio/soundtouch/Makefile
  1.1       +95 -0     ports/audio/soundtouch/files/patch-cpu_detect_x86_gcc.cpp (new)
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
Comment 5 Alexey Dokuchaev freebsd_committer 2011-05-14 20:04:15 UTC
State Changed
From-To: open->closed

Committed, thanks!