summaryrefslogtreecommitdiff
path: root/experimental/libffcall/ppc64.patch
diff options
context:
space:
mode:
Diffstat (limited to 'experimental/libffcall/ppc64.patch')
-rw-r--r--experimental/libffcall/ppc64.patch371
1 files changed, 371 insertions, 0 deletions
diff --git a/experimental/libffcall/ppc64.patch b/experimental/libffcall/ppc64.patch
new file mode 100644
index 000000000..e7da43899
--- /dev/null
+++ b/experimental/libffcall/ppc64.patch
@@ -0,0 +1,371 @@
+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 */