From: Andrew Morton 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 Signed-off-by: Andrew Morton --- 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); } } _