Update of /cvsroot/linux-mips/linux/include/asm-mips/sibyte
In directory usw-pr-cvs1:/tmp/cvs-serv9335
Modified Files:
64bit.h
Log Message:
Minor code overhaul.
Index: 64bit.h
===================================================================
RCS file: /cvsroot/linux-mips/linux/include/asm-mips/sibyte/64bit.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- 64bit.h 8 Nov 2001 17:28:25 -0000 1.1
+++ 64bit.h 19 Feb 2002 17:46:59 -0000 1.2
@@ -19,43 +19,47 @@
#ifndef _SB1_64BIT_H
#define _SB1_64BIT_H
+#include <linux/types.h>
#include <asm/system.h>
+/*
+ * This is annoying...we can't actually write the 64-bit IO register properly
+ * without having access to 64-bit registers... which doesn't work by default
+ * in o32 format...grrr...
+*/
-/* This is annoying...we can't actually write the 64-bit IO
- register properly without having access to 64-bit registers...
- which doesn't work by default in o32 format...grrr...*/
-extern inline void out64(u64 val, unsigned long addr)
+static inline void out64(u64 val, unsigned long addr)
{
- u32 low, high;
+ u32 low, high, tmp;
unsigned long flags;
+
high = val >> 32;
low = val & 0xffffffff;
- // save_flags(flags);
__save_and_cli(flags);
__asm__ __volatile__ (
- ".set push\n"
+ ".set push\t\t\t# out64n"
".set noreorder\n"
".set noat\n"
".set mips4\n"
- " dsll32 $2, %1, 0 \n"
- " dsll32 $1, %0, 0 \n"
- " dsrl32 $2, $2, 0 \n"
- " or $1, $1, $2 \n"
- " sd $1, (%2)\n"
+ " dsll32 %0, %2, 0 \n"
+ " dsll32 $1, %1, 0 \n"
+ " dsrl32 %0, %0, 0 \n"
+ " or $1, $1, %0 \n"
+ " sd $1, (%3)\n"
".set pop\n"
- ::"r" (high), "r" (low), "r" (addr)
- :"$1", "$2");
+ : "=&r" (tmp)
+ : "r" (high), "r" (low), "r" (addr));
__restore_flags(flags);
}
-extern inline u64 in64(unsigned long addr)
+static inline u64 in64(unsigned long addr)
{
- u32 low, high;
unsigned long flags;
+ u32 low, high;
+
__save_and_cli(flags);
__asm__ __volatile__ (
- ".set push\n"
+ ".set push\t\t\t# in64\n"
".set noreorder\n"
".set noat \n"
".set mips4 \n"
@@ -63,9 +67,11 @@
" dsra32 %0, %1, 0\n"
" sll %1, %1, 0\n"
".set pop\n"
- :"=r" (high), "=r" (low): "r" (addr));
+ : "=r" (high), "=r" (low)
+ : "r" (addr));
__restore_flags(flags);
+
return (((u64)high) << 32) | low;
}
-#endif
+#endif /* _SB1_64BIT_H */
|