OSDN Git Service

Wed Jun 2 00:21:54 1999 Robert Lipe <robertlipe@usa.net>
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 1 Jun 1999 23:27:14 +0000 (23:27 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 1 Jun 1999 23:27:14 +0000 (23:27 +0000)
        * std/bastring.h (class basic_string:Rep): Encode xlock opcode
        as .bytes instead of mnemonics.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27295 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++/ChangeLog
libstdc++/std/bastring.h

index 8dd6c35..b3d8a32 100644 (file)
@@ -1,3 +1,8 @@
+Wed Jun  2 00:21:54 1999  Robert Lipe  <robertlipe@usa.net>
+
+       * std/bastring.h (class basic_string:Rep): Encode xlock opcode
+       as .bytes instead of mnemonics.
+
 1999-05-20  Angela Marie Thomas <angela@cygnus.com>
 
        * configure.in: Test for ${compiler_name}.exe as well.
index 6206713..7089126 100644 (file)
@@ -77,8 +77,15 @@ private:
     void release ()
       {
        size_t __val;
-       asm ("lock; xaddl %0, %2"
-            : "=r" (__val) : "0" (-1), "m" (ref) : "memory");
+       // This opcode exists as a .byte instead of as a mnemonic for the
+       // benefit of SCO OpenServer 5.  The system assembler (which is 
+       // essentially required on this target) can't assemble xaddl in 
+       //COFF mode.
+       asm (".byte 0xf0, 0x0f, 0xc1, 0x02" // lock; xaddl %eax, (%edx)
+           : "=a" (__val)
+           : "0" (-1), "m" (ref), "d" (&ref)
+           : "memory");
+
        if (__val == 1)
          delete this;
       }