summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/pc98/include/bus.h9
-rw-r--r--sys/pc98/pc98/busiosubr.c25
2 files changed, 34 insertions, 0 deletions
diff --git a/sys/pc98/include/bus.h b/sys/pc98/include/bus.h
index bb10690..39111f5 100644
--- a/sys/pc98/include/bus.h
+++ b/sys/pc98/include/bus.h
@@ -252,6 +252,15 @@ void i386_memio_free(bus_space_tag_t t, bus_space_handle_t bsh,
i386_memio_free((t), (h), (s))
/*
+ * int bus_space_compare (bus_space_tag_t t1, bus_space_handle_t bsh1,
+ * bus_space_tag_t t2, bus_space_handle_t bsh2);
+ *
+ * Compare two resources.
+ */
+int i386_memio_compare(bus_space_tag_t t1, bus_space_handle_t bsh1,
+ bus_space_tag_t t2, bus_space_handle_t bsh2);
+
+/*
* Access methods for bus resources and address space.
*/
#define _BUS_ACCESS_METHODS_PROTO(TYPE,BWN) \
diff --git a/sys/pc98/pc98/busiosubr.c b/sys/pc98/pc98/busiosubr.c
index 8776d3f..79b06ce 100644
--- a/sys/pc98/pc98/busiosubr.c
+++ b/sys/pc98/pc98/busiosubr.c
@@ -279,3 +279,28 @@ i386_memio_subregion(bus_space_tag_t t, bus_space_handle_t pbsh,
*tbshp = bsh;
return error;
}
+
+int
+i386_memio_compare(bus_space_tag_t t1, bus_space_handle_t bsh1,
+ bus_space_tag_t t2, bus_space_handle_t bsh2)
+{
+ int i;
+
+ if (t1->bs_tag != t2->bs_tag)
+ return (1);
+ if (bsh1->bsh_base != bsh2->bsh_base)
+ return (1);
+ if (bsh1->bsh_sz != bsh2->bsh_sz)
+ return (1);
+ if (bsh1->bsh_bam.bs_read_1 != bsh2->bsh_bam.bs_read_1) /* XXX */
+ return (1);
+
+ if (bsh1->bsh_iatsz != bsh2->bsh_iatsz)
+ return (1);
+ for (i = 0; i < bsh1->bsh_iatsz; i++) {
+ if (bsh1->bsh_iat[i] != bsh2->bsh_iat[i])
+ return (1);
+ }
+
+ return (0);
+}
OpenPOWER on IntegriCloud