version 1.12, 2007/04/09 17:43:40 |
version 1.12.16.1, 2007/10/18 08:32:47 |
Line 499 bus_space_mallocok(void) |
|
Line 499 bus_space_mallocok(void) |
|
paddr_t |
paddr_t |
memio_mmap(bus_space_tag_t t, bus_addr_t bpa, off_t offset, int prot, int flags) |
memio_mmap(bus_space_tag_t t, bus_addr_t bpa, off_t offset, int prot, int flags) |
{ |
{ |
return (trunc_page(bpa + offset)); |
paddr_t ret; |
|
/* XXX what about stride? */ |
|
ret = trunc_page(t->pbs_offset + bpa + offset); |
|
#ifdef DEBUG |
|
if (ret == 0) { |
|
printf("%s: [%08x, %08x %08x] mmaps to 0?!\n", __func__, |
|
(uint32_t)t->pbs_offset, (uint32_t)bpa, (uint32_t)offset); |
|
return -1; |
|
} |
|
#endif |
|
return ret; |
} |
} |
|
|
int |
int |
Line 510 memio_map(bus_space_tag_t t, bus_addr_t |
|
Line 520 memio_map(bus_space_tag_t t, bus_addr_t |
|
paddr_t pa; |
paddr_t pa; |
|
|
size = _BUS_SPACE_STRIDE(t, size); |
size = _BUS_SPACE_STRIDE(t, size); |
|
bpa = _BUS_SPACE_STRIDE(t, bpa); |
|
|
if (bpa + size > t->pbs_limit) { |
if (bpa + size > t->pbs_limit) { |
#ifdef DEBUG |
#ifdef DEBUG |
printf("bus_space_map(%p[%x:%x], %#x, %#x) failed: EINVAL\n", |
printf("bus_space_map(%p[%x:%x], %#x, %#x) failed: EINVAL\n", |
t, t->pbs_base, t->pbs_limit, bpa, size); |
t, t->pbs_base, t->pbs_limit, bpa, size); |
|
|
#endif |
#endif |
return (EINVAL); |
return (EINVAL); |
} |
} |
Line 523 memio_map(bus_space_tag_t t, bus_addr_t |
|
Line 535 memio_map(bus_space_tag_t t, bus_addr_t |
|
* Can't map I/O space as linear. |
* Can't map I/O space as linear. |
*/ |
*/ |
if ((flags & BUS_SPACE_MAP_LINEAR) && |
if ((flags & BUS_SPACE_MAP_LINEAR) && |
(t->pbs_flags & _BUS_SPACE_IO_TYPE)) |
(t->pbs_flags & _BUS_SPACE_IO_TYPE)) { |
return (EOPNOTSUPP); |
return (EOPNOTSUPP); |
|
} |
|
|
#ifdef PPC_IBM4XX |
#ifdef PPC_IBM4XX |
/* |
/* |
Line 662 memio_alloc(bus_space_tag_t t, bus_addr_ |
|
Line 675 memio_alloc(bus_space_tag_t t, bus_addr_ |
|
int error; |
int error; |
|
|
size = _BUS_SPACE_STRIDE(t, size); |
size = _BUS_SPACE_STRIDE(t, size); |
|
rstart = _BUS_SPACE_STRIDE(t, rstart); |
|
|
if (rstart + size > t->pbs_limit) |
if (rstart + size > t->pbs_limit) |
return (EINVAL); |
return (EINVAL); |