diff options
Diffstat (limited to 'sys/arch/arc/include')
-rw-r--r-- | sys/arch/arc/include/bus.h | 206 | ||||
-rw-r--r-- | sys/arch/arc/include/bus.old.h | 140 |
2 files changed, 107 insertions, 239 deletions
diff --git a/sys/arch/arc/include/bus.h b/sys/arch/arc/include/bus.h index d261d565555..7b121c8c018 100644 --- a/sys/arch/arc/include/bus.h +++ b/sys/arch/arc/include/bus.h @@ -1,7 +1,7 @@ -/* $OpenBSD: bus.h,v 1.7 1996/10/17 18:58:58 niklas Exp $ */ +/* $OpenBSD: bus.h,v 1.8 1996/11/28 23:35:42 niklas Exp $ */ /* - * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. + * Copyright (c) 1996 Niklas Hallqvist. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -33,108 +33,116 @@ #ifndef _ARC_BUS_H_ #define _ARC_BUS_H_ -#include <machine/autoconf.h> -#include <machine/pio.h> - -/* - * I/O addresses (in bus space) - */ -typedef u_long bus_io_addr_t; -typedef u_long bus_io_size_t; -typedef u_long bus_io_handle_t; +#ifdef __STDC__ +#define CAT(a,b) a##b +#define CAT3(a,b,c) a##b##c +#else +#define CAT(a,b) a/**/b +#define CAT3(a,b,c) a/**/b/**/c +#endif /* - * Memory addresses (in bus space) + * Bus access types. */ -typedef u_long bus_mem_addr_t; -typedef u_long bus_mem_size_t; -typedef caddr_t bus_mem_handle_t; +typedef u_int32_t bus_addr_t; +typedef u_int32_t bus_size_t; +typedef u_int32_t bus_space_handle_t; +typedef u_int32_t bus_space_tag_t; /* - * Access methods for bus resources, I/O space, and memory space. + * Access methods for bus resources */ -typedef -struct arc_isa_busmap { - void *isa_io_base; - void *isa_mem_base; -} *bus_chipset_tag_t; - - -#define bus_io_map(t, port, size, iohp) \ - (*iohp = (t == NULL ? port : port + (ulong)(t->isa_io_base)), 0) -#define bus_io_unmap(t, ioh, size) - -#define bus_io_read_1(t, h, o) inb((h) + (o)) -#define bus_io_read_2(t, h, o) inw((h) + (o)) -#define bus_io_read_4(t, h, o) inl((h) + (o)) -#if 0 /* Cause a link error for bus_io_read_8 */ -#define bus_io_read_8(t, h, o) !!! bus_io_read_8 unimplemented !!! -#endif - -#define bus_io_read_multi_1(t, h, o, a, c) \ - insb((h) + (o), (a), (c)) -#define bus_io_read_multi_2(t, h, o, a, c) \ - insw((h) + (o), (a), (c)) -#define bus_io_read_multi_4(t, h, o, a, c) \ - insl((h) + (o), (a), (c)) -#if 0 /* Cause a link error for bus_io_read_multi_8 */ -#define bus_io_read_multi_8(t, h, o, a, c) \ - !!! bus_io_read_multi_8 unimplemented !!! -#endif - -#define bus_io_write_1(t, h, o, v) outb((h) + (o), (v)) -#define bus_io_write_2(t, h, o, v) outw((h) + (o), (v)) -#define bus_io_write_4(t, h, o, v) outl((h) + (o), (v)) -#if 0 /* Cause a link error for bus_io_write_8 */ -#define bus_io_write_8(t, h, o, v) !!! bus_io_write_8 unimplemented !!! -#endif - -#define bus_io_write_multi_1(t, h, o, a, c) \ - outsb((h) + (o), (a), (c)) -#define bus_io_write_multi_2(t, h, o, a, c) \ - outsw((h) + (o), (a), (c)) -#define bus_io_write_multi_4(t, h, o, a, c) \ - outsl((h) + (o), (a), (c)) -#if 0 /* Cause a link error for bus_io_write_multi_8 */ -#define bus_io_write_multi_8(t, h, o, a, c) \ - !!! bus_io_write_multi_8 unimplimented !!! -#endif - -#define bus_mem_map(t, addr, size, cacheable, mhp) \ - (*mhp = (bus_mem_handle_t)(t == NULL ? addr : addr + (ulong)(t->isa_mem_base)), 0) -#define bus_mem_unmap(t, ioh, size) - -#define bus_mem_read_1(t, h, o) (*(volatile u_int8_t *)((h) + (o))) -#define bus_mem_read_2(t, h, o) (*(volatile u_int16_t *)((h) + (o))) -#define bus_mem_read_4(t, h, o) (*(volatile u_int32_t *)((h) + (o))) -#define bus_mem_read_8(t, h, o) (*(volatile u_int64_t *)((h) + (o))) - -#define bus_mem_write_1(t, h, o, v) \ - ((void)(*(volatile u_int8_t *)((h) + (o)) = (v))) -#define bus_mem_write_2(t, h, o, v) \ - ((void)(*(volatile u_int16_t *)((h) + (o)) = (v))) -#define bus_mem_write_4(t, h, o, v) \ - ((void)(*(volatile u_int32_t *)((h) + (o)) = (v))) -#define bus_mem_write_8(t, h, o, v) \ - ((void)(*(volatile u_int64_t *)((h) + (o)) = (v))) - -/* These are extensions to the general NetBSD bus interface. */ -#define bus_io_read_raw_multi_2(t, h, o, a, c) \ - insw((h) + (o), (a), ((c) >> 1)) -#define bus_io_read_raw_multi_4(t, h, o, a, c) \ - insl((h) + (o), (a), ((c) >> 2)) -#if 0 /* Cause a link error for bus_io_read_raw_multi_8 */ -#define bus_io_read_raw_multi_8(t, h, o, a, c) \ - !!! bus_io_read_raw_multi_8 unimplemented !!! -#endif - -#define bus_io_write_raw_multi_2(t, h, o, a, c) \ - outsw((h) + (o), (a), ((c) >> 1)) -#define bus_io_write_raw_multi_4(t, h, o, a, c) \ - outsl((h) + (o), (a), ((c) >> 2)) -#if 0 /* Cause a link error for bus_io_write_raw_multi_8 */ -#define bus_io_write_raw_multi_8(t, h, o, a, c) \ - !!! bus_io_write_raw_multi_8 unimplimented !!! -#endif +#define bus_space_map(t, addr, size, cacheable, bshp) \ + ((*(bshp) = (t) + (addr)), 0) +#define bus_space_unmap(t, bsh, size) + +#define bus_space_read(n,m) \ +static __inline CAT3(u_int,m,_t) \ +CAT(bus_space_read_,n)(bus_space_tag_t bst, bus_space_handle_t bsh, \ + bus_addr_t ba) \ +{ \ + return *(volatile CAT3(u_int,m,_t) *)(bsh + ba); \ +} + +bus_space_read(1,8) +bus_space_read(2,16) +bus_space_read(4,32) + +#define bus_space_read_8 !!! bus_space_read_8 unimplemented !!! + +#define bus_space_read_multi(n, m) \ +static __inline void \ +CAT(bus_space_read_multi_,n)(bus_space_tag_t bst, bus_space_handle_t bsh, \ + bus_addr_t ba, CAT3(u_int,m,_t) *buf, bus_size_t cnt) \ +{ \ + while (cnt--) \ + *buf++ = CAT(bus_space_read_,n)(bst, bsh, ba); \ +} + +bus_space_read_multi(1,8) +bus_space_read_multi(2,16) +bus_space_read_multi(4,32) + +#define bus_space_read_multi_8 !!! bus_space_read_multi_8 not implemented !!! + +#define bus_space_write(n,m) \ +static __inline void \ +CAT(bus_space_write_,n)(bus_space_tag_t bst, bus_space_handle_t bsh, \ + bus_addr_t ba, CAT3(u_int,m,_t) x) \ +{ \ + *(volatile CAT3(u_int,m,_t) *)(bsh + ba) = x; \ +} + +bus_space_write(1,8) +bus_space_write(2,16) +bus_space_write(4,32) + +#define bus_space_write_8 !!! bus_space_write_8 unimplemented !!! + +#define bus_space_write_multi(n, m) \ +static __inline void \ +CAT(bus_space_write_multi_,n)(bus_space_tag_t bst, bus_space_handle_t bsh, \ + bus_addr_t ba, const CAT3(u_int,m,_t) *buf, bus_size_t cnt) \ +{ \ + while (cnt--) \ + CAT(bus_space_write_,n)(bst, bsh, ba, *buf++); \ +} + +bus_space_write_multi(1,8) +bus_space_write_multi(2,16) +bus_space_write_multi(4,32) + +#define bus_space_write_multi_8 !!! bus_space_write_multi_8 not implemented !!! + +/* These are OpenBSD extensions to the general NetBSD bus interface. */ +#define bus_space_read_raw_multi(n,m,l) \ +static __inline void \ +CAT(bus_space_read_raw_multi_,n)(bus_space_tag_t bst, bus_space_handle_t bsh, \ + bus_addr_t ba, u_int8_t *buf, bus_size_t cnt) \ +{ \ + CAT(bus_space_read_multi_,n)(bst, bsh, ba, (CAT3(u_int,m,_t) *)buf, \ + cnt >> l); \ +} + +bus_space_read_raw_multi(2,16,1) +bus_space_read_raw_multi(4,32,2) + +#define bus_space_read_raw_multi_8 \ + !!! bus_space_read_raw_multi_8 not implemented !!! + +#define bus_space_write_raw_multi(n,m,l) \ +static __inline void \ +CAT(bus_space_write_raw_multi_,n)(bus_space_tag_t bst, bus_space_handle_t bsh,\ + bus_addr_t ba, const u_int8_t *buf, bus_size_t cnt) \ +{ \ + CAT(bus_space_write_multi_,n)(bst, bsh, ba, \ + (const CAT3(u_int,m,_t) *)buf, cnt >> l); \ +} + +bus_space_write_raw_multi(2,16,1) +bus_space_write_raw_multi(4,32,2) + +#define bus_space_write_raw_multi_8 \ + !!! bus_space_write_raw_multi_8 not implemented !!! #endif /* _ARC_BUS_H_ */ diff --git a/sys/arch/arc/include/bus.old.h b/sys/arch/arc/include/bus.old.h deleted file mode 100644 index fbf8f293bab..00000000000 --- a/sys/arch/arc/include/bus.old.h +++ /dev/null @@ -1,140 +0,0 @@ -/* $OpenBSD: bus.old.h,v 1.1 1996/11/12 20:29:56 niklas Exp $ */ - -/* - * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Christopher G. Demetriou - * for the NetBSD Project. - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _ARC_BUS_H_ -#define _ARC_BUS_H_ - -#include <machine/autoconf.h> -#include <machine/pio.h> - -/* - * I/O addresses (in bus space) - */ -typedef u_long bus_io_addr_t; -typedef u_long bus_io_size_t; -typedef u_long bus_io_handle_t; - -/* - * Memory addresses (in bus space) - */ -typedef u_long bus_mem_addr_t; -typedef u_long bus_mem_size_t; -typedef caddr_t bus_mem_handle_t; - -/* - * Access methods for bus resources, I/O space, and memory space. - */ -typedef -struct arc_isa_busmap { - void *isa_io_base; - void *isa_mem_base; -} *bus_chipset_tag_t; - - -#define bus_io_map(t, port, size, iohp) \ - (*iohp = (t == NULL ? port : port + (ulong)(t->isa_io_base)), 0) -#define bus_io_unmap(t, ioh, size) - -#define bus_io_read_1(t, h, o) inb((h) + (o)) -#define bus_io_read_2(t, h, o) inw((h) + (o)) -#define bus_io_read_4(t, h, o) inl((h) + (o)) -#if 0 /* Cause a link error for bus_io_read_8 */ -#define bus_io_read_8(t, h, o) !!! bus_io_read_8 unimplemented !!! -#endif - -#define bus_io_read_multi_1(t, h, o, a, c) \ - insb((h) + (o), (a), (c)) -#define bus_io_read_multi_2(t, h, o, a, c) \ - insw((h) + (o), (a), (c)) -#define bus_io_read_multi_4(t, h, o, a, c) \ - insl((h) + (o), (a), (c)) -#if 0 /* Cause a link error for bus_io_read_multi_8 */ -#define bus_io_read_multi_8(t, h, o, a, c) \ - !!! bus_io_read_multi_8 unimplemented !!! -#endif - -#define bus_io_write_1(t, h, o, v) outb((h) + (o), (v)) -#define bus_io_write_2(t, h, o, v) outw((h) + (o), (v)) -#define bus_io_write_4(t, h, o, v) outl((h) + (o), (v)) -#if 0 /* Cause a link error for bus_io_write_8 */ -#define bus_io_write_8(t, h, o, v) !!! bus_io_write_8 unimplemented !!! -#endif - -#define bus_io_write_multi_1(t, h, o, a, c) \ - outsb((h) + (o), (a), (c)) -#define bus_io_write_multi_2(t, h, o, a, c) \ - outsw((h) + (o), (a), (c)) -#define bus_io_write_multi_4(t, h, o, a, c) \ - outsl((h) + (o), (a), (c)) -#if 0 /* Cause a link error for bus_io_write_multi_8 */ -#define bus_io_write_multi_8(t, h, o, a, c) \ - !!! bus_io_write_multi_8 unimplimented !!! -#endif - -#define bus_mem_map(t, addr, size, cacheable, mhp) \ - (*mhp = (bus_mem_handle_t)(t == NULL ? addr : addr + (ulong)(t->isa_mem_base)), 0) -#define bus_mem_unmap(t, ioh, size) - -#define bus_mem_read_1(t, h, o) (*(volatile u_int8_t *)((h) + (o))) -#define bus_mem_read_2(t, h, o) (*(volatile u_int16_t *)((h) + (o))) -#define bus_mem_read_4(t, h, o) (*(volatile u_int32_t *)((h) + (o))) -#define bus_mem_read_8(t, h, o) (*(volatile u_int64_t *)((h) + (o))) - -#define bus_mem_write_1(t, h, o, v) \ - ((void)(*(volatile u_int8_t *)((h) + (o)) = (v))) -#define bus_mem_write_2(t, h, o, v) \ - ((void)(*(volatile u_int16_t *)((h) + (o)) = (v))) -#define bus_mem_write_4(t, h, o, v) \ - ((void)(*(volatile u_int32_t *)((h) + (o)) = (v))) -#define bus_mem_write_8(t, h, o, v) \ - ((void)(*(volatile u_int64_t *)((h) + (o)) = (v))) - -/* These are extensions to the general NetBSD bus interface. */ -#define bus_io_read_raw_multi_2(t, h, o, a, c) \ - insw((h) + (o), (a), ((c) >> 1)) -#define bus_io_read_raw_multi_4(t, h, o, a, c) \ - insl((h) + (o), (a), ((c) >> 2)) -#if 0 /* Cause a link error for bus_io_read_raw_multi_8 */ -#define bus_io_read_raw_multi_8(t, h, o, a, c) \ - !!! bus_io_read_raw_multi_8 unimplemented !!! -#endif - -#define bus_io_write_raw_multi_2(t, h, o, a, c) \ - outsw((h) + (o), (a), ((c) >> 1)) -#define bus_io_write_raw_multi_4(t, h, o, a, c) \ - outsl((h) + (o), (a), ((c) >> 2)) -#if 0 /* Cause a link error for bus_io_write_raw_multi_8 */ -#define bus_io_write_raw_multi_8(t, h, o, a, c) \ - !!! bus_io_write_raw_multi_8 unimplimented !!! -#endif - -#endif /* _ARC_BUS_H_ */ |