Subject: Re: bus.h style question
To: Martin Husemann <>
From: Matt Thomas <>
List: tech-kern
Date: 08/14/1997 12:48:19
At 07:05 AM 8/14/97 +0200, Martin Husemann wrote:
>I have two question on usage of the bus.h interface:
>My card is mapped into ISA memory. At one time it generates a zero terminated
>string in this memory area, followed by a u_int32_t value. So what I do is:
>	int i;
>	u_int32_t value;
>	u_int8_t *p, buffer[MAX_BUF_SIZE];
>	for (p = buffer, i = 0; *p && i < sizeof buffer; i++, p++)
>		*p++ = bus_space_read_1(sc->sc_iot, sc->sc_ioh, MYOFF+i);

That can't be right.  buffer is not initialized yet.

	u_int8_t *p, buffer[MAX_BUF_SIZE];
	*p = bus_space_read_1(sc->sc_iot, sc->sc_ioh, MYOFF);
	for (p = buffer, i = 0; *p && i < sizeof buffer - 1; i++)
		*++p = bus_space_read_1(sc->sc_iot, sc->sc_ioh, MYOFF + (i+1));

>Could I use bus_space_read_4 savely to get value? Are there alignement 
>constraints in the bus.h interface?

I've wondered that as well.  My guess would have to be yes.

>The other question is the expected byte order. At another point I do check
>a signature with:
>On the i386 the signature I get is 0x4447 - should I expect 0x4744 on
>the atari or amiga? I guess (hope?) not.

I would hope the bus_space_ calls would byteswap >1 byte units as 
appropriate for the bus.  (especially since they're are no 
big endian byteswap routines).
Matt Thomas               Internet:
3am Software Foundry      WWW URL:
Nashua, NH                Disclaimer: I disavow all knowledge of this message