summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tapset/endian.stp47
1 files changed, 47 insertions, 0 deletions
diff --git a/tapset/endian.stp b/tapset/endian.stp
new file mode 100644
index 00000000..26b3a05a
--- /dev/null
+++ b/tapset/endian.stp
@@ -0,0 +1,47 @@
+function big_endian2:long (val:long) %{
+#ifdef __LITTLE_ENDIAN
+ THIS->__retvalue = swab16(THIS->val);
+#else
+ THIS->__retvalue = THIS->val & 0xffff;
+#endif
+%}
+
+function big_endian4:long (val:long) %{
+#ifdef __LITTLE_ENDIAN
+ THIS->__retvalue = swab32(THIS->val);
+#else
+ THIS->__retvalue = THIS->val & 0xffffffff;
+#endif
+%}
+
+function big_endian8:long (val:long) %{
+#ifdef __LITTLE_ENDIAN
+ THIS->__retvalue = swab64(THIS->val);
+#else
+ THIS->__retvalue = THIS->val;
+#endif
+%}
+
+function little_endian2:long (val:long) %{
+#ifndef __LITTLE_ENDIAN
+ THIS->__retvalue = swab16(THIS->val);
+#else
+ THIS->__retvalue = THIS->val & 0xffff;
+#endif
+%}
+
+function little_endian4:long (val:long) %{
+#ifndef __LITTLE_ENDIAN
+ THIS->__retvalue = swab32(THIS->val);
+#else
+ THIS->__retvalue = THIS->val & 0xffffffff;
+#endif
+%}
+
+function little_endian8:long (val:long) %{
+#ifndef __LITTLE_ENDIAN
+ THIS->__retvalue = swab64(THIS->val);
+#else
+ THIS->__retvalue = THIS->val;
+#endif
+%}