|
我用的是Redhat9.0,内核版本为2.6.10,我下载的源代码包为uClinux-dist-20040408.tar.gz。
已经安装了arm-elf-tools-20030314,make menuconfig;make dep之后make..
出错部分提示如下:
make[2]: Entering directory `/uClinux/uClinux-dist/linux-2.4.x/arch/armnommu/kernel'
arm-elf-gcc -D__ASSEMBLY__ -D__KERNEL__ -I/uClinux/uClinux-dist/linux-2.4.x/include -DNO_MM -mapcs-32 -march=armv4 -msoft-float -mno-fpu -c -o entry-armv.o entry-armv.S
entry-armv.S: Assembler messages:
entry-armv.S:1283: Error: Internal_relocation (type 187) not fixed up (OFFSET_IMM)
entry-armv.S:1285: Error: Internal_relocation (type 185) not fixed up (IMMEDIATE)
entry-armv.S:1336: Error: Internal_relocation (type 187) not fixed up (OFFSET_IMM)
entry-armv.S:1337: Error: Internal_relocation (type 187) not fixed up (OFFSET_IMM)
entry-armv.S:1608: Error: Can not represent SWI relocation in this object file format (0)
make[2]: *** [entry-armv.o] Error 1
make[2]: Leaving directory `/uClinux/uClinux-dist/linux-.4.x/arch/armnommu/kernel'
make[1]: *** [_dir_arch/armnommu/kernel] Error 2
make[1]: Leaving directory `/uClinux/uClinux-dist/linux-2.4.x'
make: *** [linux] Error 1
看提示是说entry-armv.S文件中第1283等行语句的内部重定位没有安排好。。什么意思??
entry-armv.S文件中出错部分代码如下:
call_fpe: get_current_task r10
mov r8, #1
1283: strb r8, [r10, #TSK_USED_MATH] @ set current->used_math
ldr r4, .LCfp
1285: add r10, r10, #TSS_FPESAVE @ r10 = workspace
ldr pc, [r4] @ Call FP module USR entry point
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
/*
* Register switch for ARMv3 and ARMv4 processors
* r0 = previous, r1 = next, return previous.
* previous and next are guaranteed not to be the same.
*/
ENTRY(__switch_to)
stmfd sp!, {r4 - sl, fp, lr} @ Store most regs on stack
mrs ip, cpsr
str ip, [sp, #-4]! @ Save cpsr_SVC
1336: str sp, [r0, #TSS_SAVE] @ Save sp_SVC
ldr sp, [r1, #TSS_SAVE] @ Get saved sp_SVC
#ifndef CONFIG_UCLINUX
ldr r2, [r1, #TSS_DOMAIN]
mcr p15, 0, r2, c3, c0 @ Set domain register
#endif
ldr ip, [sp], #4
msr spsr, ip @ Save tasks CPSR into SPSR for this return
ldmfd sp!, {r4 - sl, fp, pc}^ @ Load all regs saved previously
.section ".text.init",#alloc,#execinstr
这些看起来就是汇编指令,但又跟我熟悉的汇编语言有所不同,不知道怎样下手。。。。各位兄弟帮忙看看啦。。 |
|