Messages in this thread | | | Subject | Re: ioremap return type | From | Jes Sorensen <> | Date | 10 Aug 2000 18:18:14 +0200 |
| |
>>>>> "Jamie" == Jamie Lokier <lk@tantalophile.demon.co.uk> writes:
Jamie> Jes Sorensen wrote: Many drivers use a struct to define the Jamie> offsets in their I/O or iomem space. E.g. acenic.c: Jamie> readl(®s->CpuCtrl). We know that's not portable in the Jamie> sense that struct layout is not guaranteed. However, provided Jamie> all the fields are suitably padded & aligned, it works in Jamie> practice. (So far..) >> That is perfectly portable because that maps onto the hardware >> registers directly, the driver is not to known whether an IO spase >> is sparse or not thats handle by readl/writel. The acenic driver >> simply uses the struct to generate offsets because I find it >> utterly ugly to use a zillion defines to set all the offsets.
Jamie> The reason it's not portable in _principle_ is that the mapping Jamie> "list of struct fields" -> "offsets" can vary between Jamie> architectures.
That is why the structure I used explicitly used u32's in the define since PCI data word accessed by readl is 32 bits. True one has to be careful about the types used, but if done right it is perfectly fine.
Jes
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |