Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Jun 2004 06:13:40 GMT
From:      Juli Mallett <jmallett@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 54449 for review
Message-ID:  <200406090613.i596DeGQ016937@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=54449

Change 54449 by jmallett@jmallett_oingo on 2004/06/09 06:13:31

	Stab stab stab, I think I'll do bus stuff this way.

Affected files ...

.. //depot/projects/mips/sys/mips/include/bus.h#3 edit

Differences ...

==== //depot/projects/mips/sys/mips/include/bus.h#3 (text+ko) ====

@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2002 Juli Mallett.  All rights reserved.
+ * Copyright (c) 2002-2004 Juli Mallett.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -30,8 +30,50 @@
 
 typedef	unsigned long	bus_addr_t;
 typedef	unsigned long	bus_size_t;
-typedef	int		bus_type_t;
 typedef	unsigned long	bus_space_handle_t;
-typedef	unsigned long	bus_space_tag_t;
+typedef	unsigned long	bus_space_word_t;
+
+struct bus_space_tag {
+	const char *bst_name;
+	bus_space_word_t (*bst_read)(char, bus_space_handle_t, bus_size_t);
+	void (*bst_write)(char, bus_space_handle_t, bus_size_t, bus_space_word_t);
+};
+
+typedef	struct bus_space_tag *bus_space_tag_t;
+
+#define	BUSSPACE_READ(size, type)				\
+static __inline type						\
+bus_space_read_ ## size(bus_space_tag_t t,			\
+			bus_space_handle_t h,			\
+			bus_size_t o)				\
+{								\
+	return ((type)((*(t)->bst_read)((size), h, o)));	\
+}								\
+struct __hack
+
+#define	BUSSPACE_WRITE(size, type)				\
+static __inline void						\
+bus_space_write_ ## size(bus_space_tag_t t,			\
+			bus_space_handle_t h,			\
+			bus_size_t o,				\
+			type v)					\
+{								\
+	((*(t)->bst_write)((size), h, o, v));			\
+}								\
+struct __hack
+
+#define	BUSSPACE_WRAPPER(size, type)				\
+BUSSPACE_READ(size, type);					\
+BUSSPACE_WRITE(size, type);					\
+struct __hack
+
+BUSSPACE_WRAPPER(1, uint8_t);
+BUSSPACE_WRAPPER(2, uint16_t);
+BUSSPACE_WRAPPER(4, uint32_t);
+BUSSPACE_WRAPPER(8, uint64_t);
+
+#undef	BUSSPACE_READ
+#undef	BUSSPACE_WRITE
+#undef	BUSSPACE_WRAPPER
 
 #endif /* !_MACHINE_BUS_H_ */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200406090613.i596DeGQ016937>