LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1569|回复: 1

arm+uclinux开发环境建立错误求助

[复制链接]
发表于 2005-1-23 16:58:26 | 显示全部楼层 |阅读模式
arm+uclinux开发环境建立错误,刚开始接触,不知如何解决,请指教,十分感谢!
[root@localhost uClinux-dist]# make
make ARCH=armnommu CROSS_COMPILE=arm-elf- -C linux-2.6.x  || exit 1
make[1]: Entering directory `/home/embeded/uClinux-dist/linux-2.6.x'
  CHK     include/linux/version.h
make[2]: `arch/armnommu/kernel/asm-offsets.s' is up to date.
make[2]: `include/asm-arm/mach-types.h' is up to date.
  CHK     include/linux/compile.h
  AS      arch/armnommu/kernel/entry.o
arch/armnommu/kernel/entry.S: Assembler messages:
arch/armnommu/kernel/entry.S:99: Error: can only set flag field with immediate value
arch/armnommu/kernel/entry.S:152: Error: can only set flag field with immediate
value
arch/armnommu/kernel/entry.S:154: Error: can only set flag field with immediate
value
arch/armnommu/kernel/entry.S:178: Error: can only set flag field with immediate
value
arch/armnommu/kernel/entry.S:199: Error: can only set flag field with immediate
value
arch/armnommu/kernel/entry.S:237: Error: can only set flag field with immediate
value
arch/armnommu/kernel/entry.S:320: Error: can only set flag field with immediate
value
arch/armnommu/kernel/entry.S:383: Error: can only set flag field with immediate
value
make[2]: *** [arch/armnommu/kernel/entry.o] Error 1
make[1]: *** [arch/armnommu/kernel] Error 2
make[1]: Leaving directory `/home/embeded/uClinux-dist/linux-2.6.x'
make: *** [linux] Error 1

部分文件如下
/*
*  linux/arch/armnommu/kernel/entry.S
*
*  Copyright (C) 1996,1997,1998 Russell King.
*  ARM700 fix by Matthew Godbolt (linux-user@willothewisp.demon.co.uk)
*  uClinux/ARM fix and clean-up by Hyok S. Choi (hyok.choi@samsung.com)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
*  machine independent low-level vector interface routines, only.
*  dependent codes gone to each machine directory, "entry-header.S"
*  
*/
#include <linux/config.h>
#include <linux/init.h>

#include <asm/thread_info.h>
#include <asm/glue.h>
#include <asm/ptrace.h>

#include "../../arm/kernel/entry-header.S"

/*
* Load-in the machine dependent Macros from:
*    arch/armnommu/mach-$(MACHINE)/entry-macro.S
*
*    disable_fiq                : disable FIQ
*    get_irqnr_and_base        : get the irq number(at least), and others.
*    irq_prio_table                : irq priority table
*/

#include "entry-macro.S"


/*
* Invalid mode handlers
*/
__pabt_invalid:        sub        sp, sp, #S_FRAME_SIZE                @ Allocate frame size in one go
                stmia        sp, {r0 - lr}                        @ Save XXX r0 - lr
                ldr        r4, .LCabt
                mov        r1, #BAD_PREFETCH
                b        1f

__dabt_invalid:        sub        sp, sp, #S_FRAME_SIZE
                stmia        sp, {r0 - lr}                        @ Save SVC r0 - lr [lr *should* be intact]
                ldr        r4, .LCabt
                mov        r1, #BAD_DATA
                b        1f

__irq_invalid:        sub        sp, sp, #S_FRAME_SIZE                @ Allocate space on stack for frame
                stmfd        sp, {r0 - lr}                        @ Save r0 - lr
                ldr        r4, .LCirq
                mov        r1, #BAD_IRQ
                b        1f

__und_invalid:        sub        sp, sp, #S_FRAME_SIZE
                stmia        sp, {r0 - lr}
                ldr        r4, .LCund
                mov        r1, #BAD_UNDEFINSTR                @ int reason

1:                zero_fp
                ldmia        r4, {r5 - r7}                        @ Get XXX pc, cpsr, old_r0
                add        r4, sp, #S_PC
                stmia        r4, {r5 - r7}                        @ Save XXX pc, cpsr, old_r0
                mov        r0, sp
                and        r2, r6, #31                        @ int mode
                b        bad_mode

/*
* SVC mode handlers
*/
                .align        5
__dabt_svc:        sub        sp, sp, #S_FRAME_SIZE
                stmia        sp, {r0 - r12}                        @ save r0 - r12
                ldr        r2, .LCabt
                add        r0, sp, #S_FRAME_SIZE
                ldmia        r2, {r2 - r4}                        @ get pc, cpsr
                add        r5, sp, #S_SP
                mov        r1, lr
                stmia        r5, {r0 - r4}                        @ save sp_SVC, lr_SVC, pc, cpsr, old_ro
                mrs        r9, cpsr                        @ Enable interrupts if they were
                tst        r3, #PSR_I_BIT
                biceq        r9, r9, #PSR_I_BIT                @ previously
/*
* This routine must not corrupt r9
*/
#ifdef MULTI_ABORT
                ldr        r4, .LCprocfns                        @ pass r2, r3 to
                mov        lr, pc                                @ processor code
                ldr        pc, [r4]                        @ call processor specific code
#else
                bl        CPU_ABORT_HANDLER
#endif
                msr        cpsr_c, r9
                mov        r2, sp
                bl        do_DataAbort
                disable_irq r0           -------------------》99行,怎么更改呢?
                ldr        r0, [sp, #S_PSR]
                msr        spsr, r0
                ldmia        sp, {r0 - pc}^                        @ load r0 - pc, cpsr

                .align        5
__irq_svc:        sub        sp, sp, #S_FRAME_SIZE
                stmia        sp, {r0 - r12}                        @ save r0 - r12
                ldr        r7, .LCirq
                add        r5, sp, #S_FRAME_SIZE
                ldmia        r7, {r7 - r9}
                add        r4, sp, #S_SP
发表于 2005-2-6 09:27:50 | 显示全部楼层
这种情况我也遇到过,不过多试几次也许就过去了,make dep ;make
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表