On Thu, Jul 12, 2007 at 03:47:04PM +0100, Maciej W. Rozycki wrote: > > Author: Atsushi Nemoto <anemo@xxxxxxxxxxxxx> Wed Jul 11 23:12:00 2007 +0900 > > Comitter: Ralf Baechle <ralf@xxxxxxxxxxxxxx> Thu Jul 12 14:39:44 2007 +0100 > > Commit: 57be612bf3815728ad29f39a09a1c70d71bd279c > > Gitweb: http://www.linux-mips.org/g/linux/57be612b > > Branch: master > > > > CKSEG1ADDR() returns unsigned int value on 32bit kernel. Cast it to > > This is not true. With a 32-bit kernel CKSEG1ADDR(), quite > intentionally, returns a *signed* int. > > Since you have decided to fix the symptom rather than the bug I would at > least suggest to cast the result to "long" first and only then drop the > signedness. Otherwise it looks misleading to a casual reader. More a general comment on the use of KSEG0, KSEG1, KSEG1ADDR and similar macros. They've been used in about every piece of MIPS UNIX OS kernel and driver code I ever touched. But generally we want to abstract such architecture specific knowledge away from drivers, even platform-specific drivers. So Linux code should prefer to use the standard Linux interfaces such as ioremap, readb, writeb etc. over those old macros. Ralf