summaryrefslogblamecommitdiff
path: root/experimental/libffcall/ppc64.patch
blob: e7da43899e667ed2222a4ac144fdc599c265e88b (plain) (tree)
1
2
3
4
5




                                              






















































































































































































                                                                                   








                                                                                   
                                                                 

                               



                                                                       

                               




                                                                        

                               







                                                                        

                               








                                                                        

                               











                                                                        

                               












                                                                        

                                                   















                                                                        


                                 

                                                                          

                                  



                                                                           

                                  





                                                                            

                                  







                                                                            

                                  









                                                                            

                                  











                                                                            

                                  













                                                                            

                                  















                                                                            


                                                                              
Changed from 2.2/2.3 --> 2.4:

  * sed -i ppc64.patch -e 's/vaword/varword/g'
  * remove all assembly

--- libffcall-2.2/avcall/avcall-powerpc64.c.old	2018-09-17 16:47:43.000000000 +0000
+++ libffcall-2.2/avcall/avcall-powerpc64.c	2020-05-11 23:06:57.534813743 +0000
@@ -181,111 +181,111 @@
       /* In the ELFv2 ABI, gcc returns structs of size <= 16 in registers. */
       if (l->rsize > 0 && l->rsize <= 16) {
         void* raddr = l->raddr;
-        #if 0 /* Unoptimized */
+        #if 1 /* Unoptimized */
         if (l->rsize == 1) {
           ((unsigned char *)raddr)[0] = (unsigned char)(iret);
         } else
         if (l->rsize == 2) {
-          ((unsigned char *)raddr)[0] = (unsigned char)(iret);
-          ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8);
+          ((unsigned char *)raddr)[1] = (unsigned char)(iret);
+          ((unsigned char *)raddr)[0] = (unsigned char)(iret>>8);
         } else
         if (l->rsize == 3) {
-          ((unsigned char *)raddr)[0] = (unsigned char)(iret);
+          ((unsigned char *)raddr)[2] = (unsigned char)(iret);
           ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8);
-          ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16);
+          ((unsigned char *)raddr)[0] = (unsigned char)(iret>>16);
         } else
         if (l->rsize == 4) {
-          ((unsigned char *)raddr)[0] = (unsigned char)(iret);
-          ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8);
-          ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16);
-          ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24);
+          ((unsigned char *)raddr)[3] = (unsigned char)(iret);
+          ((unsigned char *)raddr)[2] = (unsigned char)(iret>>8);
+          ((unsigned char *)raddr)[1] = (unsigned char)(iret>>16);
+          ((unsigned char *)raddr)[0] = (unsigned char)(iret>>24);
         } else
         if (l->rsize == 5) {
-          ((unsigned char *)raddr)[0] = (unsigned char)(iret);
-          ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8);
+          ((unsigned char *)raddr)[4] = (unsigned char)(iret);
+          ((unsigned char *)raddr)[3] = (unsigned char)(iret>>8);
           ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16);
-          ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24);
-          ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32);
+          ((unsigned char *)raddr)[1] = (unsigned char)(iret>>24);
+          ((unsigned char *)raddr)[0] = (unsigned char)(iret>>32);
         } else
         if (l->rsize == 6) {
-          ((unsigned char *)raddr)[0] = (unsigned char)(iret);
-          ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8);
-          ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16);
-          ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24);
-          ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32);
-          ((unsigned char *)raddr)[5] = (unsigned char)(iret>>40);
+          ((unsigned char *)raddr)[5] = (unsigned char)(iret);
+          ((unsigned char *)raddr)[4] = (unsigned char)(iret>>8);
+          ((unsigned char *)raddr)[3] = (unsigned char)(iret>>16);
+          ((unsigned char *)raddr)[2] = (unsigned char)(iret>>24);
+          ((unsigned char *)raddr)[1] = (unsigned char)(iret>>32);
+          ((unsigned char *)raddr)[0] = (unsigned char)(iret>>40);
         } else
         if (l->rsize == 7) {
-          ((unsigned char *)raddr)[0] = (unsigned char)(iret);
-          ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8);
-          ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16);
+          ((unsigned char *)raddr)[6] = (unsigned char)(iret);
+          ((unsigned char *)raddr)[5] = (unsigned char)(iret>>8);
+          ((unsigned char *)raddr)[4] = (unsigned char)(iret>>16);
           ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24);
-          ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32);
-          ((unsigned char *)raddr)[5] = (unsigned char)(iret>>40);
-          ((unsigned char *)raddr)[6] = (unsigned char)(iret>>48);
+          ((unsigned char *)raddr)[2] = (unsigned char)(iret>>32);
+          ((unsigned char *)raddr)[1] = (unsigned char)(iret>>40);
+          ((unsigned char *)raddr)[0] = (unsigned char)(iret>>48);
         } else
         if (l->rsize >= 8 && l->rsize <= 16) {
-          ((unsigned char *)raddr)[0] = (unsigned char)(iret);
-          ((unsigned char *)raddr)[1] = (unsigned char)(iret>>8);
-          ((unsigned char *)raddr)[2] = (unsigned char)(iret>>16);
-          ((unsigned char *)raddr)[3] = (unsigned char)(iret>>24);
-          ((unsigned char *)raddr)[4] = (unsigned char)(iret>>32);
-          ((unsigned char *)raddr)[5] = (unsigned char)(iret>>40);
-          ((unsigned char *)raddr)[6] = (unsigned char)(iret>>48);
-          ((unsigned char *)raddr)[7] = (unsigned char)(iret>>56);
+          ((unsigned char *)raddr)[7] = (unsigned char)(iret);
+          ((unsigned char *)raddr)[6] = (unsigned char)(iret>>8);
+          ((unsigned char *)raddr)[5] = (unsigned char)(iret>>16);
+          ((unsigned char *)raddr)[4] = (unsigned char)(iret>>24);
+          ((unsigned char *)raddr)[3] = (unsigned char)(iret>>32);
+          ((unsigned char *)raddr)[2] = (unsigned char)(iret>>40);
+          ((unsigned char *)raddr)[1] = (unsigned char)(iret>>48);
+          ((unsigned char *)raddr)[0] = (unsigned char)(iret>>56);
           if (l->rsize == 8) {
           } else
           if (l->rsize == 9) {
-            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
+            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
           } else
           if (l->rsize == 10) {
-            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
-            ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8);
+            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
+            ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48);
           } else
           if (l->rsize == 11) {
-            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
-            ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8);
-            ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16);
+            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
+            ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48);
+            ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40);
           } else
           if (l->rsize == 12) {
-            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
-            ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8);
-            ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16);
-            ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24);
+            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
+            ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48);
+            ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40);
+            ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32);
           } else
           if (l->rsize == 13) {
-            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
-            ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8);
-            ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16);
-            ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24);
-            ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32);
+            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
+            ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48);
+            ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40);
+            ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32);
+            ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24);
           } else
           if (l->rsize == 14) {
-            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
-            ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8);
-            ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16);
-            ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24);
-            ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32);
-            ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>40);
+            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
+            ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48);
+            ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40);
+            ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32);
+            ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24);
+            ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>16);
           } else
           if (l->rsize == 15) {
-            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
-            ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8);
-            ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16);
-            ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24);
-            ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32);
-            ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>40);
-            ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>48);
+            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
+            ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48);
+            ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40);
+            ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32);
+            ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24);
+            ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>16);
+            ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>8);
           } else
           if (l->rsize == 16) {
-            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2);
-            ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>8);
-            ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>16);
-            ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>24);
-            ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>32);
-            ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>40);
-            ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>48);
-            ((unsigned char *)raddr)[8+7] = (unsigned char)(iret2>>56);
+            ((unsigned char *)raddr)[8+0] = (unsigned char)(iret2>>56);
+            ((unsigned char *)raddr)[8+1] = (unsigned char)(iret2>>48);
+            ((unsigned char *)raddr)[8+2] = (unsigned char)(iret2>>40);
+            ((unsigned char *)raddr)[8+3] = (unsigned char)(iret2>>32);
+            ((unsigned char *)raddr)[8+4] = (unsigned char)(iret2>>24);
+            ((unsigned char *)raddr)[8+5] = (unsigned char)(iret2>>16);
+            ((unsigned char *)raddr)[8+6] = (unsigned char)(iret2>>8);
+            ((unsigned char *)raddr)[8+7] = (unsigned char)(iret2);
           }
         }
         #else /* Optimized: fewer conditional jumps, fewer memory accesses */
--- libffcall-2.2/vacall/vacall-powerpc64.c.old	2020-05-11 23:11:15.566571148 +0000
+++ libffcall-2.2/vacall/vacall-powerpc64.c	2020-05-11 23:16:52.489693582 +0000
@@ -140,111 +140,111 @@
     if (list.flags & __VA_REGISTER_STRUCT_RETURN) {
       /* In the ELFv2 ABI, gcc returns structs of size <= 16 in registers. */
       if (list.rsize > 0 && list.rsize <= 16) {
-        #if 0 /* Unoptimized */
+        #if 1 /* Unoptimized */
         if (list.rsize == 1) {
           iret =   (__varword)((unsigned char *) list.raddr)[0];
         } else
         if (list.rsize == 2) {
-          iret =  ((__varword)((unsigned char *) list.raddr)[0])
-                | ((__varword)((unsigned char *) list.raddr)[1] << 8);
+          iret =  ((__varword)((unsigned char *) list.raddr)[1])
+                | ((__varword)((unsigned char *) list.raddr)[0] << 8);
         } else
         if (list.rsize == 3) {
-          iret =  ((__varword)((unsigned char *) list.raddr)[0])
+          iret =  ((__varword)((unsigned char *) list.raddr)[2])
                 | ((__varword)((unsigned char *) list.raddr)[1] << 8)
-                | ((__varword)((unsigned char *) list.raddr)[2] << 16);
+                | ((__varword)((unsigned char *) list.raddr)[0] << 16);
         } else
         if (list.rsize == 4) {
-          iret =  ((__varword)((unsigned char *) list.raddr)[0])
-                | ((__varword)((unsigned char *) list.raddr)[1] << 8)
-                | ((__varword)((unsigned char *) list.raddr)[2] << 16)
-                | ((__varword)((unsigned char *) list.raddr)[3] << 24);
+          iret =  ((__varword)((unsigned char *) list.raddr)[3])
+                | ((__varword)((unsigned char *) list.raddr)[2] << 8)
+                | ((__varword)((unsigned char *) list.raddr)[1] << 16)
+                | ((__varword)((unsigned char *) list.raddr)[0] << 24);
         } else
         if (list.rsize == 5) {
-          iret =  ((__varword)((unsigned char *) list.raddr)[0])
-                | ((__varword)((unsigned char *) list.raddr)[1] << 8)
+          iret =  ((__varword)((unsigned char *) list.raddr)[4])
+                | ((__varword)((unsigned char *) list.raddr)[3] << 8)
                 | ((__varword)((unsigned char *) list.raddr)[2] << 16)
-                | ((__varword)((unsigned char *) list.raddr)[3] << 24)
-                | ((__varword)((unsigned char *) list.raddr)[4] << 32);
+                | ((__varword)((unsigned char *) list.raddr)[1] << 24)
+                | ((__varword)((unsigned char *) list.raddr)[0] << 32);
         } else
         if (list.rsize == 6) {
-          iret =  ((__varword)((unsigned char *) list.raddr)[0])
-                | ((__varword)((unsigned char *) list.raddr)[1] << 8)
-                | ((__varword)((unsigned char *) list.raddr)[2] << 16)
-                | ((__varword)((unsigned char *) list.raddr)[3] << 24)
-                | ((__varword)((unsigned char *) list.raddr)[4] << 32)
-                | ((__varword)((unsigned char *) list.raddr)[5] << 40);
+          iret =  ((__varword)((unsigned char *) list.raddr)[5])
+                | ((__varword)((unsigned char *) list.raddr)[4] << 8)
+                | ((__varword)((unsigned char *) list.raddr)[3] << 16)
+                | ((__varword)((unsigned char *) list.raddr)[2] << 24)
+                | ((__varword)((unsigned char *) list.raddr)[1] << 32)
+                | ((__varword)((unsigned char *) list.raddr)[0] << 40);
         } else
         if (list.rsize == 7) {
-          iret =  ((__varword)((unsigned char *) list.raddr)[0])
-                | ((__varword)((unsigned char *) list.raddr)[1] << 8)
-                | ((__varword)((unsigned char *) list.raddr)[2] << 16)
+          iret =  ((__varword)((unsigned char *) list.raddr)[6])
+                | ((__varword)((unsigned char *) list.raddr)[5] << 8)
+                | ((__varword)((unsigned char *) list.raddr)[4] << 16)
                 | ((__varword)((unsigned char *) list.raddr)[3] << 24)
-                | ((__varword)((unsigned char *) list.raddr)[4] << 32)
-                | ((__varword)((unsigned char *) list.raddr)[5] << 40)
-                | ((__varword)((unsigned char *) list.raddr)[6] << 48);
+                | ((__varword)((unsigned char *) list.raddr)[2] << 32)
+                | ((__varword)((unsigned char *) list.raddr)[1] << 40)
+                | ((__varword)((unsigned char *) list.raddr)[0] << 48);
         } else
         if (list.rsize >= 8 && list.rsize <= 16) {
-          iret =  ((__varword)((unsigned char *) list.raddr)[0])
-                | ((__varword)((unsigned char *) list.raddr)[1] << 8)
-                | ((__varword)((unsigned char *) list.raddr)[2] << 16)
-                | ((__varword)((unsigned char *) list.raddr)[3] << 24)
-                | ((__varword)((unsigned char *) list.raddr)[4] << 32)
-                | ((__varword)((unsigned char *) list.raddr)[5] << 40)
-                | ((__varword)((unsigned char *) list.raddr)[6] << 48)
-                | ((__varword)((unsigned char *) list.raddr)[7] << 56);
+          iret =  ((__varword)((unsigned char *) list.raddr)[7])
+                | ((__varword)((unsigned char *) list.raddr)[6] << 8)
+                | ((__varword)((unsigned char *) list.raddr)[5] << 16)
+                | ((__varword)((unsigned char *) list.raddr)[4] << 24)
+                | ((__varword)((unsigned char *) list.raddr)[3] << 32)
+                | ((__varword)((unsigned char *) list.raddr)[2] << 40)
+                | ((__varword)((unsigned char *) list.raddr)[1] << 48)
+                | ((__varword)((unsigned char *) list.raddr)[0] << 56);
           if (list.rsize == 8) {
           } else
           if (list.rsize == 9) {
-            iret2 =   (__varword)((unsigned char *) list.raddr)[8];
+            iret2 =   (__varword)((unsigned char *) list.raddr)[8] << 56;
           } else
           if (list.rsize == 10) {
-            iret2 =  ((__varword)((unsigned char *) list.raddr)[8])
-                   | ((__varword)((unsigned char *) list.raddr)[9] << 8);
+            iret2 =  ((__varword)((unsigned char *) list.raddr)[8] << 56)
+                   | ((__varword)((unsigned char *) list.raddr)[9] << 48);
           } else
           if (list.rsize == 11) {
-            iret2 =  ((__varword)((unsigned char *) list.raddr)[8])
-                   | ((__varword)((unsigned char *) list.raddr)[9] << 8)
-                   | ((__varword)((unsigned char *) list.raddr)[10] << 16);
+            iret2 =  ((__varword)((unsigned char *) list.raddr)[8] << 56)
+                   | ((__varword)((unsigned char *) list.raddr)[9] << 48)
+                   | ((__varword)((unsigned char *) list.raddr)[10] << 40);
           } else
           if (list.rsize == 12) {
-            iret2 =  ((__varword)((unsigned char *) list.raddr)[8])
-                   | ((__varword)((unsigned char *) list.raddr)[9] << 8)
-                   | ((__varword)((unsigned char *) list.raddr)[10] << 16)
-                   | ((__varword)((unsigned char *) list.raddr)[11] << 24);
+            iret2 =  ((__varword)((unsigned char *) list.raddr)[8] << 56)
+                   | ((__varword)((unsigned char *) list.raddr)[9] << 48)
+                   | ((__varword)((unsigned char *) list.raddr)[10] << 40)
+                   | ((__varword)((unsigned char *) list.raddr)[11] << 32);
           } else
           if (list.rsize == 13) {
-            iret2 =  ((__varword)((unsigned char *) list.raddr)[8])
-                   | ((__varword)((unsigned char *) list.raddr)[9] << 8)
-                   | ((__varword)((unsigned char *) list.raddr)[10] << 16)
-                   | ((__varword)((unsigned char *) list.raddr)[11] << 24)
-                   | ((__varword)((unsigned char *) list.raddr)[12] << 32);
+            iret2 =  ((__varword)((unsigned char *) list.raddr)[8] << 56)
+                   | ((__varword)((unsigned char *) list.raddr)[9] << 48)
+                   | ((__varword)((unsigned char *) list.raddr)[10] << 40)
+                   | ((__varword)((unsigned char *) list.raddr)[11] << 32)
+                   | ((__varword)((unsigned char *) list.raddr)[12] << 24);
           } else
           if (list.rsize == 14) {
-            iret2 =  ((__varword)((unsigned char *) list.raddr)[8])
-                   | ((__varword)((unsigned char *) list.raddr)[9] << 8)
-                   | ((__varword)((unsigned char *) list.raddr)[10] << 16)
-                   | ((__varword)((unsigned char *) list.raddr)[11] << 24)
-                   | ((__varword)((unsigned char *) list.raddr)[12] << 32)
-                   | ((__varword)((unsigned char *) list.raddr)[13] << 40);
+            iret2 =  ((__varword)((unsigned char *) list.raddr)[8] << 56)
+                   | ((__varword)((unsigned char *) list.raddr)[9] << 48)
+                   | ((__varword)((unsigned char *) list.raddr)[10] << 40)
+                   | ((__varword)((unsigned char *) list.raddr)[11] << 32)
+                   | ((__varword)((unsigned char *) list.raddr)[12] << 24)
+                   | ((__varword)((unsigned char *) list.raddr)[13] << 16);
           } else
           if (list.rsize == 15) {
-            iret2 =  ((__varword)((unsigned char *) list.raddr)[8])
-                   | ((__varword)((unsigned char *) list.raddr)[9] << 8)
-                   | ((__varword)((unsigned char *) list.raddr)[10] << 16)
-                   | ((__varword)((unsigned char *) list.raddr)[11] << 24)
-                   | ((__varword)((unsigned char *) list.raddr)[12] << 32)
-                   | ((__varword)((unsigned char *) list.raddr)[13] << 40)
-                   | ((__varword)((unsigned char *) list.raddr)[14] << 48);
+            iret2 =  ((__varword)((unsigned char *) list.raddr)[8] << 56)
+                   | ((__varword)((unsigned char *) list.raddr)[9] << 48)
+                   | ((__varword)((unsigned char *) list.raddr)[10] << 40)
+                   | ((__varword)((unsigned char *) list.raddr)[11] << 32)
+                   | ((__varword)((unsigned char *) list.raddr)[12] << 24)
+                   | ((__varword)((unsigned char *) list.raddr)[13] << 16)
+                   | ((__varword)((unsigned char *) list.raddr)[14] << 8);
           } else
           if (list.rsize == 16) {
-            iret2 =  ((__varword)((unsigned char *) list.raddr)[8])
-                   | ((__varword)((unsigned char *) list.raddr)[9] << 8)
-                   | ((__varword)((unsigned char *) list.raddr)[10] << 16)
-                   | ((__varword)((unsigned char *) list.raddr)[11] << 24)
-                   | ((__varword)((unsigned char *) list.raddr)[12] << 32)
-                   | ((__varword)((unsigned char *) list.raddr)[13] << 40)
-                   | ((__varword)((unsigned char *) list.raddr)[14] << 48)
-                   | ((__varword)((unsigned char *) list.raddr)[15] << 56);
+            iret2 =  ((__varword)((unsigned char *) list.raddr)[8] << 56)
+                   | ((__varword)((unsigned char *) list.raddr)[9] << 48)
+                   | ((__varword)((unsigned char *) list.raddr)[10] << 40)
+                   | ((__varword)((unsigned char *) list.raddr)[11] << 32)
+                   | ((__varword)((unsigned char *) list.raddr)[12] << 24)
+                   | ((__varword)((unsigned char *) list.raddr)[13] << 16)
+                   | ((__varword)((unsigned char *) list.raddr)[14] << 8)
+                   | ((__varword)((unsigned char *) list.raddr)[15]);
           }
         }
         #else /* Optimized: fewer conditional jumps, fewer memory accesses */