summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/ppcn_60x/startup/swap.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/powerpc/ppcn_60x/startup/swap.c')
-rw-r--r--c/src/lib/libbsp/powerpc/ppcn_60x/startup/swap.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/ppcn_60x/startup/swap.c b/c/src/lib/libbsp/powerpc/ppcn_60x/startup/swap.c
new file mode 100644
index 0000000000..58b3e13dbb
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/ppcn_60x/startup/swap.c
@@ -0,0 +1,64 @@
+/*
+ * COPYRIGHT (c) 1998 by Radstone Technology
+ *
+ *
+ * THIS FILE IS PROVIDED TO YOU, THE USER, "AS IS", WITHOUT WARRANTY OF ANY
+ * KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK
+ * AS TO THE QUALITY AND PERFORMANCE OF ALL CODE IN THIS FILE IS WITH YOU.
+ *
+ * You are hereby granted permission to use, copy, modify, and distribute
+ * this file, provided that this notice, plus the above copyright notice
+ * and disclaimer, appears in all copies. Radstone Technology will provide
+ * no support for this code.
+ *
+ */
+
+#include <rtems.h>
+
+/*
+ * JRS - February 20, 1998
+ *
+ * There is a swap32 in each port. So this should be removed.
+ *
+ * Adding a swap16 to the port would be useful.
+ *
+ * The end of all this would be to remove this file.
+ */
+
+inline unsigned int Swap32(
+ unsigned32 ulValue
+)
+{
+ unsigned32 ulSwapped;
+
+ asm volatile(
+ "rlwimi %0,%1,8,24,31;"
+ "rlwimi %0,%1,24,16,23;"
+ "rlwimi %0,%1,8,8,15;"
+ "rlwimi %0,%1,24,0,7;" :
+
+ "=&r" ((ulSwapped)) :
+ "r" ((ulValue))
+ );
+
+ return( ulSwapped );
+}
+
+inline unsigned int Swap16(
+ unsigned16 usValue
+)
+{
+ unsigned16 usSwapped;
+
+ asm volatile(
+ "rlwimi %0,%1,24,24,31;"
+ "rlwimi %0,%1,8,16,23;" :
+
+ "=&r" ((usSwapped)) :
+ "r" ((usValue))
+ );
+
+ return( usSwapped );
+}
+