diff options
author | nyan <nyan@FreeBSD.org> | 2008-07-05 16:31:58 +0000 |
---|---|---|
committer | nyan <nyan@FreeBSD.org> | 2008-07-05 16:31:58 +0000 |
commit | b8ebcde152d873c59bf3e8e4e7900ca1a71604ed (patch) | |
tree | cadd0216923c8565ddb7aff4e4dba44d20526f41 | |
parent | 54ef085aeeb1c1e11f58d72d96a630352b1b26e9 (diff) | |
download | FreeBSD-src-b8ebcde152d873c59bf3e8e4e7900ca1a71604ed.zip FreeBSD-src-b8ebcde152d873c59bf3e8e4e7900ca1a71604ed.tar.gz |
Add i386_memio_compare() to compare two resources.
It's used by uart(4) in the future.
-rw-r--r-- | sys/pc98/include/bus.h | 9 | ||||
-rw-r--r-- | sys/pc98/pc98/busiosubr.c | 25 |
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); +} |