patch-2.4.20 linux-2.4.20/arch/mips/sibyte/sb1250/lib_hssubr.h
Next file: linux-2.4.20/arch/mips/sibyte/sb1250/pci.c
Previous file: linux-2.4.20/arch/mips/sibyte/sb1250/lib_hssubr.S
Back to the patch index
Back to the overall index
- Lines: 104
- Date:
Thu Nov 28 15:53:10 2002
- Orig file:
linux-2.4.19/arch/mips/sibyte/sb1250/lib_hssubr.h
- Orig date:
Fri Aug 2 17:39:43 2002
diff -urN linux-2.4.19/arch/mips/sibyte/sb1250/lib_hssubr.h linux-2.4.20/arch/mips/sibyte/sb1250/lib_hssubr.h
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2000, 2001 Broadcom Corporation
+ * Copyright (C) 2002 Ralf Baechle
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -10,45 +11,71 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-
#ifndef _LIB_HSSUBR_H
#define _LIB_HSSUBR_H
-/*
- * If __long64 we can do this via macros. Otherwise, call
- * the magic functions.
- */
-
-#if __long64
+#include <linux/config.h>
+#include <asm/addrspace.h>
typedef long hsaddr_t;
-#define hs_write8(a,b) *((volatile uint8_t *) (a)) = (b)
-#define hs_write16(a,b) *((volatile uint16_t *) (a)) = (b)
-#define hs_write32(a,b) *((volatile uint32_t *) (a)) = (b)
-#define hs_write64(a,b) *((volatile uint32_t *) (a)) = (b)
-#define hs_read8(a) *((volatile uint8_t *) (a))
-#define hs_read16(a) *((volatile uint16_t *) (a))
-#define hs_read32(a) *((volatile uint32_t *) (a))
-#define hs_read64(a) *((volatile uint64_t *) (a))
+#ifdef CONFIG_MIPS64
-#else /* not __long64 */
-
-typedef long hsaddr_t;
-
-extern void hs_write8(hsaddr_t a,uint8_t b);
-extern void hs_write16(hsaddr_t a,uint16_t b);
-extern void hs_write32(hsaddr_t a,uint32_t b);
-extern void hs_write64(hsaddr_t a,uint64_t b);
+static inline void hs_write8(hsaddr_t a, uint8_t b)
+{
+ *(volatile uint8_t *) a = PHYS_TO_XKSEG_UNCACHED(b);
+}
+
+static inline void hs_write16(hsaddr_t a, uint16_t b)
+{
+ *(volatile uint16_t *) a = PHYS_TO_XKSEG_UNCACHED(b);
+}
+
+static inline void hs_write32(hsaddr_t a, uint32_t b)
+{
+ *(volatile uint32_t *) a = PHYS_TO_XKSEG_UNCACHED(b);
+}
+
+static inline void hs_write64(hsaddr_t a, uint64_t b)
+{
+ *(volatile uint32_t *) a = PHYS_TO_XKSEG_UNCACHED(b);
+}
+
+static inline uint8_t hs_read8(hsaddr_t a)
+{
+ return *(volatile uint8_t *) a;
+}
+
+static inline uint16_t hs_read16(hsaddr_t a)
+{
+ return *(volatile uint16_t *) a;
+}
+
+static inline uint32_t hs_read32(hsaddr_t a)
+{
+ return *(volatile uint32_t *) a;
+}
+
+static inline uint64_t hs_read64(hsaddr_t a)
+{
+ return *(volatile uint64_t *) a;
+}
+
+#else /* just CONFIG_MIPS32 */
+
+extern void hs_write8(hsaddr_t a, uint8_t b);
+extern void hs_write16(hsaddr_t a, uint16_t b);
+extern void hs_write32(hsaddr_t a, uint32_t b);
+extern void hs_write64(hsaddr_t a, uint64_t b);
extern uint8_t hs_read8(hsaddr_t a);
extern uint16_t hs_read16(hsaddr_t a);
extern uint32_t hs_read32(hsaddr_t a);
extern uint64_t hs_read64(hsaddr_t a);
#endif
-#endif
+#endif /* _LIB_HSSUBR_H */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)