Ver código fonte

* fixed fpc_set_in_byte

Jonas Maebe 22 anos atrás
pai
commit
a13841a857
1 arquivos alterados com 9 adições e 6 exclusões
  1. 9 6
      rtl/powerpc/set.inc

+ 9 - 6
rtl/powerpc/set.inc

@@ -210,14 +210,14 @@ asm
        // get the index of the correct *dword* in the set
        // r0 := (r4 rotl(32-3)) and (0x0fffffff8)
        rlwinm   r0,r4,31-3+1,3,31-2
+
        // load dword in which the bit has to be tested
        lwzx     r3,r3,r0
 
-       li       r0,1
-       // generate bit which has to be tested
-       rlwnm    r4,r0,r4,0,31
-       // test it
-       and.     r3,r3,r4
+       // r4 := 32 - r4 (no problem if r4 > 32, the rlwnm next does a mod 32)
+       subfic   r4,r4,32
+       // r3 := (r3 shr (r4 mod 32)) and 1  
+       rlwnm    r3,r3,r4,31,31
 end ['R0','R3','R4','CR0'];
 
 
@@ -523,7 +523,10 @@ end;
 
 {
   $Log$
-  Revision 1.17  2003-04-26 12:40:33  florian
+  Revision 1.18  2003-04-26 15:29:34  jonas
+    * fixed fpc_set_in_byte
+
+  Revision 1.17  2003/04/26 12:40:33  florian
     + set_in_byte needed FPC_SET_IN_BYTE alias
 
   Revision 1.16  2002/10/17 10:14:46  jonas