[PATCH] PPC64 Poor assembly coding style

Doug Maxey dwm at austin.ibm.com
Wed Nov 10 10:03:13 EST 2004

On Tue, 09 Nov 2004 10:12:52 +1030, Alan Modra wrote:
>On Mon, Nov 08, 2004 at 12:16:19PM -0600, Linas Vepstas wrote:
>> The new assembler seems to be mistaking NR_syscalls for a register
>> number, which is clearly out of bounds (its not in 0..31).

I tripped over this while trying to build both rh and suse distro kernels
on one machine.   Seemed easier to just have the same compiler level
for both, the rh rpm version is 3.4.2, so I got real brave and built from 
scratch. 8)

compile arch/ppc64/kernel/entry.S with gcc_3_4_2_release.  Binutils is 

This particular history is from the, ahem, distro sources.  Different error 
in the mainline sources.  

Is there a set of patches to get this version of the toolchain up to snuff?


ARGS={O=/build/dwm/build/s9-sp1-1103.edit/ppc64 zImage}
STARTED  Tue Nov  9 16:21:15 2004  ON  io-browns
cmd=={make O=/build/dwm/build/s9-sp1-1103.edit/ppc64 zImage}
  Using /build/dwm/linux/s9-sp1-1103.edit as source for kernel
  CHK     include/linux/version.h
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/basic/split-include
  HOSTCC  scripts/basic/docproc
  HOSTCC  scripts/genksyms/genksyms.o
  HOSTCC  scripts/genksyms/lex.o
  HOSTCC  scripts/genksyms/parse.o
  HOSTLD  scripts/genksyms/genksyms
  HOSTCC  scripts/conmakehash
  HOSTCC  scripts/kallsyms
  CC      scripts/empty.o
  HOSTCC  scripts/mk_elfconfig
  MKELF   scripts/elfconfig.h
  HOSTCC  scripts/file2alias.o
  HOSTCC  scripts/modpost.o
  HOSTCC  scripts/sumversion.o
  HOSTLD  scripts/modpost
  HOSTCC  scripts/pnmtologo
  HOSTCC  scripts/bin2c
  CC      arch/ppc64/kernel/asm-offsets.s
  CHK     include/asm-ppc64/offsets.h
  CC      init/main.o
  CHK     include/linux/compile.h
  UPD     include/linux/compile.h
  CC      init/version.o
  CC      init/do_mounts.o
  CC      init/do_mounts_rd.o
/build/dwm/linux/s9-sp1-1103.edit/init/do_mounts_rd.c:309: warning: conflicting types for built-in function 'malloc'
  CC      init/do_mounts_initrd.o
  CC      init/do_mounts_md.o
  LD      init/mounts.o
  CC      init/initramfs.o
  LD      init/built-in.o
  CC      init/kerntypes.o
  HOSTCC  usr/gen_init_cpio
  CPIO    usr/initramfs_data.cpio
  GZIP    usr/initramfs_data.cpio.gz
  AS      usr/initramfs_data.o
  LD      usr/built-in.o
  CC      arch/ppc64/kernel/setup.o
/build/dwm/linux/s9-sp1-1103.edit/arch/ppc64/kernel/setup.c: In function `set_preferred_console':
/build/dwm/linux/s9-sp1-1103.edit/arch/ppc64/kernel/setup.c:477: warning: 'offset' might be used uninitialized in this function
  AS      arch/ppc64/kernel/entry.o
/build/dwm/linux/s9-sp1-1103.edit/arch/ppc64/kernel/entry.S: Assembler messages:
/build/dwm/linux/s9-sp1-1103.edit/arch/ppc64/kernel/entry.S:100: Error: operand out of range (268 is not between 0 and 31)
/build/dwm/linux/s9-sp1-1103.edit/arch/ppc64/kernel/entry.S:100: Error: missing operand
/build/dwm/linux/s9-sp1-1103.edit/arch/ppc64/kernel/entry.S:164: Error: operand out of range (268 is not between 0 and 31)
/build/dwm/linux/s9-sp1-1103.edit/arch/ppc64/kernel/entry.S:164: Error: missing operand
/build/dwm/linux/s9-sp1-1103.edit/arch/ppc64/kernel/entry.S:239: Error: operand out of range (3 is not between 0 and 1)
/build/dwm/linux/s9-sp1-1103.edit/arch/ppc64/kernel/entry.S:239: Error: missing operand
/build/dwm/linux/s9-sp1-1103.edit/arch/ppc64/kernel/entry.S:242: Error: operand out of range (3 is not between 0 and 1)
/build/dwm/linux/s9-sp1-1103.edit/arch/ppc64/kernel/entry.S:242: Error: missing operand
make[2]: *** [arch/ppc64/kernel/entry.o] Error 1
make[1]: *** [arch/ppc64/kernel] Error 2
make: *** [zImage] Error 2
CC { Reading specs from /opt/gcc-3.4.2/lib/gcc/powerpc64-unknown-linux-gnu/3.4.2/specs
 Configured with: /build/dwm/toolchain/gcc-3.4.2/configure --prefix=/opt/gcc-3.4.2 --disable-multilib --with-ld=/opt/binutils- --with-as=/opt/binutils- --enable-languages=c,c++,f77 --enable-altivec
 Thread model: posix
 gcc version 3.4.2
UNAME  Linux io-browns 2.6.5-7.97-pseries64 #1 SMP Fri Jul 2 14:21:59 UTC 2004 ppc64 ppc64 ppc64 GNU/Linux
uid=1001(dwm) gid=100(users) groups=10(wheel),14(uucp),16(dialout),17(audio),33(video),100(users)
COMPLETE at  Tue Nov  9 16:21:29 2004 
RETURN from {make O=/build/dwm/build/s9-sp1-1103.edit/ppc64 zImage} is 2
ELAPSED time  0:00:14

source lines:
     98         andi.   r11,r10,_TIF_SYSCALL_TRACE
     99         bne-    50f
    100         cmpli   0,r0,NR_syscalls
    101         bge-    66f
    102 /*
    162         /* XXX check this - Anton */
    163         ld      r9,GPR9(r1)
    164         cmpli   0,r0,NR_syscalls
    165         bge-    66f
    166 /*
    167  * Need to vector to 32 Bit or default sys_call_table
    237         andi.   r4,r4,_TIF_SYSCALL_TRACE
    238         bne-    81f
    239         cmpi    0,r3,0
    240         bge     .ret_from_except
    241         b       .ret_from_syscall_1
    242 81:     cmpi    0,r3,0
    243         blt     .ret_from_syscall_2
    244         bl      .do_syscall_trace

More information about the Linuxppc64-dev mailing list