도와주세요!!
글 수 15,339
2004.06.11 08:27:51 (*.74.211.7)
6694
저만 그런 문제가 있는 줄 알았는데, 검색을 해 보니 같은 문제를 가진 분이
계시군요..
일단 증상은 같습니다. 같구요...
이걸 소스를 약간 수정하면 되긴 하는데 이 방법으로 해도 되는지 여쭈어 볼라
구요..
커널 컴파일 시 아래와 같은 에러가 발생합니다.
(크로스 컴파일러 버전 : GCC 3.3, 커널 linux-2.4.19-x5-v06b)
blkpg.c:252: error: asm-specifier for variable '__r1' conflicts with asm
clobber list
문제된 부분을 아래처럼 고치면 컴파일이 됩니다.
if (cmd == BLKGETSIZE)
return put_user((unsigned long) ullval, (unsigned long *)arg);
else
(수정전) return put_user(ullval << 9, (u64 *)arg);
(수정후) return put_user(ullval << 9, (unsigned long *)arg);
아마도 블럭 사이즈 결과에 따라 무언가 다른 결과를 리턴하는 부분 같은데
요....
u64 또는 unsigned long long 모두 같은 에러로 처리 됩니다.
컴파일러의 문제일런지.. 아님 그냥 u32로 리턴해도 되는 것인지요??
컴파일러 문제라면 컴파일러를 다시 만들기 위해 삽질을 또 해야하는 아픔이
ㅜ.ㅜ
아아... 끝나지 않는 삽질이여...
알려주세요~
계시군요..
일단 증상은 같습니다. 같구요...
이걸 소스를 약간 수정하면 되긴 하는데 이 방법으로 해도 되는지 여쭈어 볼라
구요..
커널 컴파일 시 아래와 같은 에러가 발생합니다.
(크로스 컴파일러 버전 : GCC 3.3, 커널 linux-2.4.19-x5-v06b)
blkpg.c:252: error: asm-specifier for variable '__r1' conflicts with asm
clobber list
문제된 부분을 아래처럼 고치면 컴파일이 됩니다.
if (cmd == BLKGETSIZE)
return put_user((unsigned long) ullval, (unsigned long *)arg);
else
(수정전) return put_user(ullval << 9, (u64 *)arg);
(수정후) return put_user(ullval << 9, (unsigned long *)arg);
아마도 블럭 사이즈 결과에 따라 무언가 다른 결과를 리턴하는 부분 같은데
요....
u64 또는 unsigned long long 모두 같은 에러로 처리 됩니다.
컴파일러의 문제일런지.. 아님 그냥 u32로 리턴해도 되는 것인지요??
컴파일러 문제라면 컴파일러를 다시 만들기 위해 삽질을 또 해야하는 아픔이
ㅜ.ㅜ
아아... 끝나지 않는 삽질이여...
알려주세요~