I think I have hit another compiler bug.
To demonstrate, check out a top of trunk source tree. Then try
to compile the kernel in UP mode. The compilation fails like
this:
mips64-linux-gcc -D__KERNEL__ -I/build2/kanoj/mips64/linux.work2/include -Wall
-Wst
rict-prototypes -O2 -fomit-frame-pointer -mabi=64 -G 0 -mno-abicalls -fno-pic
-pipe -mcpu=r8000 -mips4 -Wa,-32 -fno-strict-aliasing -c r4k_genex.S -o
r4k_genex.o
r4k_genex.S: Assembler messages:
r4k_genex.S:168: Warning: Missing .end or .bend at end of file
mips64-linux-gcc: Internal compiler error: program as got fatal signal 11
make[1]: *** [r4k_genex.o] Error 1
make[1]: Leaving directory `/build2/kanoj/mips64/linux.work2/arch/mips64/kernel'
make: *** [_dir_arch/mips64/kernel] Error 2
To fix this, you need to delete at least one instruction from the
include/asm-mips64/stackframe.h file under the CONFIG_SMP code
block. Ie, deleting at least one instruction from the code block
mfc0 k1, CP0_WATCHHI
mfc0 k0, CP0_WATCHLO
dsll32 k1, k1, 0
or k1, k1, k0
li k0, K0BASE
or k1, k1, k0
daddiu k1, k1, KERNEL_STACK_SIZE-32
will cure the problem.
If any of you guys have a chance to track down what's going on, let me
know. Otherwise, just aply this workaround while compiling an UP kernel.
Kanoj
|