Browse Source

* fixed *locked* routines

Jonas Maebe 21 years ago
parent
commit
430d41fdb0
1 changed files with 12 additions and 9 deletions
  1. 12 9
      rtl/powerpc/sysutilp.inc

+ 12 - 9
rtl/powerpc/sysutilp.inc

@@ -24,9 +24,9 @@ function InterLockedDecrement (var Target: integer) : Integer; assembler;
 { side-effect: target := target-1 }
 { side-effect: target := target-1 }
 asm
 asm
 .LInterLockedDecLoop:
 .LInterLockedDecLoop:
-        lwarx   r10,r10,r3
+        lwarx   r10,r0,r3
         subi    r10,r10,1
         subi    r10,r10,1
-        stwcx.  r10,r10,r3
+        stwcx.  r10,r0,r3
         bne     .LInterLockedDecLoop
         bne     .LInterLockedDecLoop
         mr      r3,r10
         mr      r3,r10
 end;
 end;
@@ -38,9 +38,9 @@ function InterLockedIncrement (var Target: integer) : Integer; assembler;
 { side-effect: target := target+1 }
 { side-effect: target := target+1 }
 asm
 asm
 .LInterLockedIncLoop:
 .LInterLockedIncLoop:
-        lwarx   r10,r10,r3
+        lwarx   r10,r0,r3
         addi    r10,r10,1
         addi    r10,r10,1
-        stwcx.  r10,r10,r3
+        stwcx.  r10,r0,r3
         bne     .LInterLockedIncLoop
         bne     .LInterLockedIncLoop
         mr      r3,r10
         mr      r3,r10
 end;
 end;
@@ -52,8 +52,8 @@ function InterLockedExchange (var Target: integer;Source : integer) : Integer; a
 { side-effect: target := source                 }
 { side-effect: target := source                 }
 asm
 asm
 .LInterLockedXchgLoop:
 .LInterLockedXchgLoop:
-        lwarx   r10,r10,r3
-        stwcx.  r4,r10,r3
+        lwarx   r10,r0,r3
+        stwcx.  r4,r0,r3
         bne     .LInterLockedXchgLoop
         bne     .LInterLockedXchgLoop
         mr      r3,r10
         mr      r3,r10
 end;
 end;
@@ -65,9 +65,9 @@ function InterLockedExchangeAdd (var Target: integer;Source : integer) : Integer
 { side-effect: target := target+source          }
 { side-effect: target := target+source          }
 asm
 asm
 .LInterLockedXchgAddLoop:
 .LInterLockedXchgAddLoop:
-        lwarx   r10,r10,r3
+        lwarx   r10,r0,r3
         add     r10,r10,r4
         add     r10,r10,r4
-        stwcx.  r10,r10,r3
+        stwcx.  r10,r0,r3
         bne     .LInterLockedXchgAddLoop
         bne     .LInterLockedXchgAddLoop
         sub     r3,r10,r4
         sub     r3,r10,r4
 end;
 end;
@@ -75,7 +75,10 @@ end;
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.5  2003-11-29 16:27:19  jonas
+  Revision 1.6  2003-12-28 20:55:57  jonas
+    * fixed *locked* routines
+
+  Revision 1.5  2003/11/29 16:27:19  jonas
     * fixed several ppc assembler reader related problems
     * fixed several ppc assembler reader related problems
     * local vars in assembler procedures now start at offset 4
     * local vars in assembler procedures now start at offset 4
     * fixed second_int_to_bool (apparently an integer can be in  LOC_JUMP??)
     * fixed second_int_to_bool (apparently an integer can be in  LOC_JUMP??)