diff options
author | Robert Lipe <robertlipe@usa.net> | 1999-06-01 23:27:14 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1999-06-01 17:27:14 -0600 |
commit | 73f3aa96d2782855508a6cc397871e9363c7c387 (patch) | |
tree | 58e12397b2d3309d22f0c555ef5b6aac20d80998 | |
parent | a310f94892755e13eacfce42277db343e000e049 (diff) | |
download | gcc-73f3aa96d2782855508a6cc397871e9363c7c387.zip gcc-73f3aa96d2782855508a6cc397871e9363c7c387.tar.gz gcc-73f3aa96d2782855508a6cc397871e9363c7c387.tar.bz2 |
bastring.h (class basic_string:Rep): Encode xlock opcode as .bytes instead of mnemonics.
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.
From-SVN: r27295
-rw-r--r-- | libstdc++/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++/std/bastring.h | 11 |
2 files changed, 14 insertions, 2 deletions
diff --git a/libstdc++/ChangeLog b/libstdc++/ChangeLog index 8dd6c35..b3d8a32 100644 --- a/libstdc++/ChangeLog +++ b/libstdc++/ChangeLog @@ -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. diff --git a/libstdc++/std/bastring.h b/libstdc++/std/bastring.h index 6206713..7089126 100644 --- a/libstdc++/std/bastring.h +++ b/libstdc++/std/bastring.h @@ -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; } |