Add: bus_space_{read,write}_region_N() and bus_space_set_{multi,region}_N()

functions.
This commit is contained in:
leo 1998-01-16 09:17:48 +00:00
parent 87feef5fe5
commit bb4f2f4ebe
1 changed files with 260 additions and 2 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: bus.h,v 1.9 1997/09/02 11:19:02 leo Exp $ */ /* $NetBSD: bus.h,v 1.10 1998/01/16 09:17:48 leo Exp $ */
/* /*
* Copyright (c) 1996 Leo Weppelman. All rights reserved. * Copyright (c) 1996 Leo Weppelman. All rights reserved.
@ -82,7 +82,38 @@ void bus_space_write_multi_4 __P((bus_space_tag_t, bus_space_handle_t,
int, u_int32_t *, int)); int, u_int32_t *, int));
void bus_space_write_multi_8 __P((bus_space_tag_t, bus_space_handle_t, void bus_space_write_multi_8 __P((bus_space_tag_t, bus_space_handle_t,
int, u_int64_t *, int)); int, u_int64_t *, int));
void bus_space_read_region_1 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, u_int8_t *, size_t));
void bus_space_read_region_2 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, u_int16_t *, size_t));
void bus_space_read_region_4 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, u_int32_t *, size_t));
void bus_space_read_region_8 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, u_int64_t *, size_t));
void bus_space_write_region_1 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, const u_int8_t *, size_t));
void bus_space_write_region_2 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, const u_int16_t *, size_t));
void bus_space_write_region_4 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, const u_int32_t *, size_t));
void bus_space_write_region_8 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, const u_int64_t *, size_t));
void bus_space_set_multi_1 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, u_int8_t, size_t));
void bus_space_set_multi_2 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, u_int16_t, size_t));
void bus_space_set_multi_4 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, u_int32_t, size_t));
void bus_space_set_multi_8 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, u_int64_t, size_t));
void bus_space_set_region_1 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, u_int8_t, size_t));
void bus_space_set_region_2 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, u_int16_t, size_t));
void bus_space_set_region_4 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, u_int32_t, size_t));
void bus_space_set_region_8 __P((bus_space_tag_t, bus_space_handle_t,
bus_size_t, u_int64_t, size_t));
/* /*
* Check accesibility of the location for various sized bus accesses * Check accesibility of the location for various sized bus accesses
*/ */
@ -199,4 +230,231 @@ bus_space_write_multi_8(t, h, o, a, c)
for (; c; a++, c--) for (; c; a++, c--)
bus_space_write_8(t, h, o, *a); bus_space_write_8(t, h, o, *a);
} }
/*
* void bus_space_read_region_N __P((bus_space_tag_t tag,
* bus_space_handle_t bsh, bus_size_t offset,
* u_intN_t *addr, size_t count));
*
* Read `count' 1, 2, 4, or 8 byte quantities from bus space
* described by tag/handle and starting at `offset' and copy into
* buffer provided.
*/
extern __inline__ void
bus_space_read_region_1(t, h, o, a, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
u_int8_t *a;
size_t c;
{
for (; c; a++, o++, c--)
*a = bus_space_read_1(t, h, o);
}
extern __inline__ void
bus_space_read_region_2(t, h, o, a, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
u_int16_t *a;
size_t c;
{
for (; c; a++, o += 2, c--)
*a = bus_space_read_2(t, h, o);
}
extern __inline__ void
bus_space_read_region_4(t, h, o, a, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
u_int32_t *a;
size_t c;
{
for (; c; a++, o += 4, c--)
*a = bus_space_read_4(t, h, o);
}
extern __inline__ void
bus_space_read_region_8(t, h, o, a, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
u_int64_t *a;
size_t c;
{
for (; c; a++, o += 8, c--)
*a = bus_space_read_8(t, h, o);
}
/*
* void bus_space_write_region_N __P((bus_space_tag_t tag,
* bus_space_handle_t bsh, bus_size_t offset,
* u_intN_t *addr, size_t count));
*
* Copy `count' 1, 2, 4, or 8 byte quantities from the buffer provided
* into the bus space described by tag/handle and starting at `offset'.
*/
extern __inline__ void
bus_space_write_region_1(t, h, o, a, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
const u_int8_t *a;
size_t c;
{
for (; c; a++, o++, c--)
bus_space_write_1(t, h, o, *a);
}
extern __inline__ void
bus_space_write_region_2(t, h, o, a, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
const u_int16_t *a;
size_t c;
{
for (; c; a++, o += 2, c--)
bus_space_write_2(t, h, o, *a);
}
extern __inline__ void
bus_space_write_region_4(t, h, o, a, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
const u_int32_t *a;
size_t c;
{
for (; c; a++, o += 4, c--)
bus_space_write_4(t, h, o, *a);
}
extern __inline__ void
bus_space_write_region_8(t, h, o, a, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
const u_int64_t *a;
size_t c;
{
for (; c; a++, o += 8, c--)
bus_space_write_8(t, h, o, *a);
}
/*
* void bus_space_set_multi_N __P((bus_space_tag_t tag,
* bus_space_handle_t bsh, bus_size_t offset, u_intN_t val,
* size_t count));
*
* Write the 1, 2, 4, or 8 byte value `val' to bus space described
* by tag/handle/offset `count' times.
*/
extern __inline__ void
bus_space_set_multi_1(t, h, o, v, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
u_int8_t v;
size_t c;
{
for (; c; c--)
bus_space_write_1(t, h, o, v);
}
extern __inline__ void
bus_space_set_multi_2(t, h, o, v, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
u_int16_t v;
size_t c;
{
for (; c; c--)
bus_space_write_2(t, h, o, v);
}
extern __inline__ void
bus_space_set_multi_4(t, h, o, v, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
u_int32_t v;
size_t c;
{
for (; c; c--)
bus_space_write_4(t, h, o, v);
}
extern __inline__ void
bus_space_set_multi_8(t, h, o, v, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
u_int64_t v;
size_t c;
{
for (; c; c--)
bus_space_write_8(t, h, o, v);
}
/*
* void bus_space_set_region_N __P((bus_space_tag_t tag,
* bus_space_handle_t bsh, bus_size_t offset, u_intN_t val,
* size_t count));
*
* Write `count' 1, 2, 4, or 8 byte value `val' to bus space described
* by tag/handle starting at `offset'.
*/
extern __inline__ void
bus_space_set_region_1(t, h, o, v, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
u_int8_t v;
size_t c;
{
for (; c; o++, c--)
bus_space_write_1(t, h, o, v);
}
extern __inline__ void
bus_space_set_region_2(t, h, o, v, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
u_int16_t v;
size_t c;
{
for (; c; o += 2, c--)
bus_space_write_2(t, h, o, v);
}
extern __inline__ void
bus_space_set_region_4(t, h, o, v, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
u_int32_t v;
size_t c;
{
for (; c; o += 4, c--)
bus_space_write_4(t, h, o, v);
}
extern __inline__ void
bus_space_set_region_8(t, h, o, v, c)
bus_space_tag_t t;
bus_space_handle_t h;
bus_size_t o;
u_int64_t v;
size_t c;
{
for (; c; o += 8, c--)
bus_space_write_8(t, h, o, v);
}
#endif /* _ATARI_BUS_H_ */ #endif /* _ATARI_BUS_H_ */