
From: Andrew Morton <akpm@osdl.org>

In file included from drivers/pnp/pnpbios/bioscalls.c:22:
include/asm/desc.h:18: warning: `desc_empty' redefined
include/asm/processor.h:32: warning: this is the location of the previous definition
drivers/pnp/pnpbios/bioscalls.c: In function `call_pnp_bios':
drivers/pnp/pnpbios/bioscalls.c:126: warning: comparison of distinct pointer types lacks a cast
drivers/pnp/pnpbios/bioscalls.c:126: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:126: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:126: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:126: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:126: warning: comparison of distinct pointer types lacks a cast
drivers/pnp/pnpbios/bioscalls.c:126: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:126: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:126: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:128: warning: comparison of distinct pointer types lacks a cast
drivers/pnp/pnpbios/bioscalls.c:128: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:128: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:128: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:128: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:128: warning: comparison of distinct pointer types lacks a cast
drivers/pnp/pnpbios/bioscalls.c:128: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:128: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:128: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c: In function `pnpbios_calls_init':
drivers/pnp/pnpbios/bioscalls.c:536: warning: comparison of distinct pointer types lacks a cast
drivers/pnp/pnpbios/bioscalls.c:536: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:536: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:536: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:536: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:537: warning: comparison of distinct pointer types lacks a cast
drivers/pnp/pnpbios/bioscalls.c:540: warning: comparison of distinct pointer types lacks a cast
drivers/pnp/pnpbios/bioscalls.c:540: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:540: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:540: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:540: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:540: warning: comparison of distinct pointer types lacks a cast
drivers/pnp/pnpbios/bioscalls.c:540: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:540: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:540: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:541: warning: comparison of distinct pointer types lacks a cast
drivers/pnp/pnpbios/bioscalls.c:541: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:541: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:541: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:541: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:541: warning: comparison of distinct pointer types lacks a cast
drivers/pnp/pnpbios/bioscalls.c:541: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:541: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:541: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:542: warning: comparison of distinct pointer types lacks a cast
drivers/pnp/pnpbios/bioscalls.c:542: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:542: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:542: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:542: cannot convert to a pointer type
drivers/pnp/pnpbios/bioscalls.c:542: warning: comparison of distinct pointer types lacks a cast
drivers/pnp/pnpbios/bioscalls.c:542: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:542: invalid type argument of `unary *'
drivers/pnp/pnpbios/bioscalls.c:542: cannot convert to a pointer type
make[1]: *** [drivers/pnp/pnpbios/bioscalls.o] Error 1
make: *** [drivers/pnp/pnpbios/bioscalls.o] Error 2

Cc: Zachary Amsden <zach@vmware.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 drivers/pnp/pnpbios/bioscalls.c |   32 +++++++++++++++++---------------
 1 files changed, 17 insertions(+), 15 deletions(-)

diff -puN drivers/pnp/pnpbios/bioscalls.c~i386--typecheck-and-optimize-base-and-limit-accessors-fix drivers/pnp/pnpbios/bioscalls.c
--- devel/drivers/pnp/pnpbios/bioscalls.c~i386--typecheck-and-optimize-base-and-limit-accessors-fix	2005-08-17 23:47:49.000000000 -0700
+++ devel-akpm/drivers/pnp/pnpbios/bioscalls.c	2005-08-17 23:47:49.000000000 -0700
@@ -67,17 +67,17 @@ __asm__(
 	".previous		\n"
 );
 
-#define Q_SET_SEL(cpu, selname, address, size) \
-do { \
-set_base(per_cpu(cpu_gdt_table,cpu)[(selname) >> 3], __va((u32)(address))); \
-set_limit(per_cpu(cpu_gdt_table,cpu)[(selname) >> 3], size); \
-} while(0)
-
-#define Q2_SET_SEL(cpu, selname, address, size) \
-do { \
-set_base(per_cpu(cpu_gdt_table,cpu)[(selname) >> 3], (u32)(address)); \
-set_limit(per_cpu(cpu_gdt_table,cpu)[(selname) >> 3], size); \
-} while(0)
+static void Q_SET_SEL(int cpu, int selname, void *address, u32 size)
+{
+	set_base(&per_cpu(cpu_gdt_table,cpu)[selname >> 3], __va(address));
+	set_limit(&per_cpu(cpu_gdt_table,cpu)[selname >> 3], size);
+}
+
+static void Q2_SET_SEL(int cpu, int selname, void *address, u32 size)
+{
+	set_base(&per_cpu(cpu_gdt_table,cpu)[selname >> 3], address);
+	set_limit(&per_cpu(cpu_gdt_table,cpu)[selname >> 3], size);
+}
 
 static struct desc_struct bad_bios_desc = { 0, 0x00409200 };
 
@@ -533,12 +533,14 @@ void pnpbios_calls_init(union pnp_bios_i
 	pnp_bios_callpoint.offset = header->fields.pm16offset;
 	pnp_bios_callpoint.segment = PNP_CS16;
 
-	set_base(bad_bios_desc, __va((unsigned long)0x40 << 4));
-	_set_limit((char *)&bad_bios_desc, 4095 - (0x40 << 4));
+	set_base(&bad_bios_desc, __va((unsigned long)0x40 << 4));
+	_set_limit(&bad_bios_desc, 4095 - (0x40 << 4));
 	for(i=0; i < NR_CPUS; i++)
 	{
 		Q2_SET_SEL(i, PNP_CS32, &pnp_bios_callfunc, 64 * 1024);
-		Q_SET_SEL(i, PNP_CS16, header->fields.pm16cseg, 64 * 1024);
-		Q_SET_SEL(i, PNP_DS, header->fields.pm16dseg, 64 * 1024);
+		Q_SET_SEL(i, PNP_CS16, (void *)header->fields.pm16cseg,
+				64 * 1024);
+		Q_SET_SEL(i, PNP_DS, (void *)header->fields.pm16dseg,
+				64 * 1024);
 	}
 }
_
