On 11/3/16, Naveen N. Rao <naveen.n....@linux.vnet.ibm.com> wrote: > On 2016/11/03 03:55PM, Nicholas Piggin wrote: >> On Wed, 2 Nov 2016 13:49:39 +0300 >> Denis Kirjanov <k...@linux-powerpc.org> wrote: >> >> > Hi guys, >> > >> > compiling ppc head with bunch of asm errors on power8 box (gcc version >> > 4.8.3 ) >> > checked commit log but found nothing special. Looks like it's asm >> > issue? >> > Has anybody seen that? >> > >> > arch/powerpc/kernel/exceptions-64s.S: Assembler messages: >> > arch/powerpc/kernel/exceptions-64s.S:421: Error: operand out of range >> > (0xffffffffffff8680 is not between 0x0000000000000000 and >> > 0x000000000000ffff) >> >> Hey, thanks for the report. It's likely due to the exception vectors >> rewrite, >> and yes it's an assembler issue (what's your binutils version?). Your >> errors >> look like they're coming from LOAD_HANDLER(). For some reason it seems to >> be >> interpreting the immediate as signed, or the actual calculation ends up >> being >> negative, neither of which should happen. >> >> It might take a bit of trial and error, and the assembler doesn't give a >> lot >> of good options to debug it, so if I can reproduce it here with your >> bintuils >> version it will be helpful. > > I saw this issue when trying to do a BE build on RHEL 7.1. The below > fixes this for me and it indeed looks like an issue with the assembler. > Interestingly, the same assembler version on RHEL 7.1 LE does not throw > these errors. > > [root@rhel71be linux]# gcc --version > gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-8) > <snip> > [root@rhel71be linux]# as --version > GNU assembler version 2.23.52.0.1-26.el7 20130226 > <snip> > > Signed-off-by: Naveen N. Rao <naveen.n....@linux.vnet.ibm.com>
Yep, it works. thanks! > --- > arch/powerpc/include/asm/exception-64s.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/powerpc/include/asm/exception-64s.h > b/arch/powerpc/include/asm/exception-64s.h > index 2e4e7d8..9b7b302 100644 > --- a/arch/powerpc/include/asm/exception-64s.h > +++ b/arch/powerpc/include/asm/exception-64s.h > @@ -91,7 +91,7 @@ > */ > #define LOAD_HANDLER(reg, label) \ > ld reg,PACAKBASE(r13); /* get high part of &label */ \ > - ori reg,reg,(FIXED_SYMBOL_ABS_ADDR(label))@l; > + ori reg,reg,((FIXED_SYMBOL_ABS_ADDR(label)) & 0xffff); > > /* Exception register prefixes */ > #define EXC_HV H > -- > 2.10.1 > >