Re: [RFC PATCH] m68k: GENERIC_IOMAP support (take #2)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



+#define rom_out_be16(addr,w)                                                 \
+    ({u16 __w, __v;                                                          \
+	  __v = (w) >> 8;                                                    \
+	  __w = ((*(__force volatile u16 *) ((addr) + 0x10000 + (__v<<1)))); \
                                     ^^^
Shouldn't this and __w be u8? I though the hardware only did 8-bit
accesses?

The 8 bit is the effective data path but the data written are read back on
the high byte of a 16 bit word. Not sure we really do need the dummy read
at all - in that case, it probably wouldn't matter.


+	  __v = (w) & 0x0f;                                                  \
                        ^^
			ff?

Right you are :-( Didn't do hex calculation in a long while ...

+	  __w = ((*(__force volatile u16 *) ((addr) + 0x10000 + (__v<<1)))); })

Woops, multiple use of `addr' and `w' in a macro can have nasty side-effects
(think e.g. `outw(addr++, value)'.

Oops - that I need to fix for sure.

Wouldn't it be better to implement rom_out_be16() to use rom_out_8(),
for easier understanding of the code?

I was worried about even more side effects there...

	Michael
-
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux