[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH]: Fix several warnings on sparc64.
From: |
David Miller |
Subject: |
Re: [PATCH]: Fix several warnings on sparc64. |
Date: |
Wed, 04 Mar 2009 03:57:15 -0800 (PST) |
From: Vesa Jääskeläinen <address@hidden>
Date: Wed, 04 Mar 2009 13:56:08 +0200
> David Miller wrote:
> > Many of these warnings are for two reasons:
> >
> > 1) grub_ssize_t is != 'int' on sparc64, and many pieces of code
> > try to pass an int pointer in for the final arg of several
> > ieee1275 "get property" functions which take a grub_ssize_t
> > pointer.
> >
> > 2) The third arg to grub_ieee1275_get_integer_property is
> > "uint32_t *" but we try passing pointers to grub_ieee1275_ihandle_t
> > objects there, but those are of grub_ieee1275_cell_t type,
> > which is uint64_t on sparc64.
> >
> > diff --git a/kern/ieee1275/cmain.c b/kern/ieee1275/cmain.c
> > index b5e2ba6..847d9fd 100644
> > --- a/kern/ieee1275/cmain.c
> > +++ b/kern/ieee1275/cmain.c
> > @@ -157,11 +157,15 @@ grub_ieee1275_find_options (void)
> > void
> > grub_ieee1275_init (void)
> > {
> > + uint32_t val;
>
> Please use grub_uint32_t instead... (I know..)
>
> This same applies to other instances of that same type too...
>
> > diff --git a/term/ieee1275/ofconsole.c b/term/ieee1275/ofconsole.c
> > index 70fda9a..c24a4c2 100644
> > --- a/term/ieee1275/ofconsole.c
> > +++ b/term/ieee1275/ofconsole.c
> > @@ -341,12 +341,15 @@ static grub_err_t
> > grub_ofconsole_init_input (void)
> > {
> > grub_ssize_t actual;
> > + uint32_t val;
> >
> > - if (grub_ieee1275_get_integer_property (grub_ieee1275_chosen, "stdin",
> > &stdin_ihandle,
> > + if (grub_ieee1275_get_integer_property (grub_ieee1275_chosen, "stdin",
> > &val,
> > sizeof stdin_ihandle, &actual)
> > || actual != sizeof stdin_ihandle)
> > return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "Cannot find stdin");
> >
> > + stdin_ihandle = val;
>
> Why stdin_ihandle is not in proper type ? Or was there some other reason
> for this change?
A cell is the proper type, but that's 64-bit on sparc.
It's actually really a 32-bit integer property, but when
it's passed into the firmware via the ieee1275 interfaces
it gets pass in 64-bit extended as a cell, so the type
is correct.