2007년 11월 12일 월요일

Error: suffix or operands invalid for `mov'



IEEE1394(based on TMO-LINUX)커널 컴파일 도중에 계속 뜨는 오류-_-
잘못된 곳이 없음에도 불구하고 계속 뜨길래 화가나서 검색해 봤더니, patch를 하면 괜찮아진단다;

3개의 파일을 수정을 해야한다.


1. linux/arch/i386/kernel/process.c

- asm volatile("movl %%fs,%0":"=m" (*(int *)&prev->fs));
- asm volatile("movl %%gs,%0":"=m" (*(int *)&prev->gs));
+ asm volatile("mov %%fs,%0":"=m" (prev->fs));
+ asm volatile("mov %%gs,%0":"=m" (prev->gs));



2. linux/arch/i386/kernel/vm86.c

- asm volatile("movl %%fs,%0":"=m" (tsk->thread.saved_fs));
- asm volatile("movl %%gs,%0":"=m" (tsk->thread.saved_gs));

+ asm volatile("mov %%fs,%0":"=m" (tsk->thread.saved_fs));
+ asm volatile("mov %%gs,%0":"=m" (tsk->thread.saved_gs));


3. linux/include/asm-i386/system.h

asm volatile("\n" \
"1:\t" \
- "movl %0,%%" #seg "\n" \
+ "mov %0,%%" #seg "\n" \
"2:\n" \
".section .fixup,\"ax\"\n" \
"3:\t" \

".align 4\n\t" \
".long 1b,3b\n" \
".previous" \
- : :"m" (*(unsigned int *)&(value)))
+ : :"m" (value))

#define savesegment(seg, value) \
- asm volatile("movl %%" #seg ",%0":"=m" (*(int *)&(value)))
+ asm volatile("mov %%" #seg ",%0":"=m" (value))



일일이 수정하기 귀찮다면 patch파일을 받아서 설치하는 것이 좋을 것이다.

댓글 없음:

댓글 쓰기