Comment says "Read high byte first as some registers increment..."
but code doesn't guarantee that, I think:
	return ((ahd_inb(ahd, port+1) << 8) | ahd_inb(ahd, port));
Compiler can reorder it.
Make the order explicit.
Signed-off-by: Denis Vlasenko <vda.linux@googlemail.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Fixed rejections and added aic7xxx code
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
         * or have other side effects when the low byte is
         * read.
         */
-       return ((ahd_inb(ahd, port+1) << 8) | ahd_inb(ahd, port));
+       uint16_t r = ahd_inb(ahd, port+1) << 8;
+       return r | ahd_inb(ahd, port);
 }
 
 static __inline void
 
 static __inline uint16_t
 ahc_inw(struct ahc_softc *ahc, u_int port)
 {
-       return ((ahc_inb(ahc, port+1) << 8) | ahc_inb(ahc, port));
+       uint16_t r = ahc_inb(ahc, port+1) << 8;
+       return r | ahc_inb(ahc, port);
 }
 
 static __inline void