리눅스 컴파일 질문(not support Thumb mode)

leeky1124의 이미지

android board에 올릴 내용을 인라인 assembler를 이용해서 컴파일 하는 중에

static inline void vfma64_operation_d1() {
        __asm__ __volatile__ (
                        "vfma.F64       d0, d1, d2 \n\t"
                        : \
                        : \
                        : \
                        );
}

를 컴파일 하는데

@ubuntu:~$ arm-linux-gnueabihf-gcc -O2 VFMA.c -o VFMA
/tmp/ccyfCo0b.s: Assembler messages:
/tmp/ccyfCo0b.s:32: Error: selected processor does not support Thumb mode `vfma.f64 d0,d1,d2'

에러를 받았습니다.

"vfma.F64       d0, d1, d2 \n\t" 

"ADD     r0, r1, r2 \n\t"

로 수정하여 컴파일 시켜봤더니 이상없이 수행이 되었습니다.

어떻게 에러를 없앨 수 있을까요? 답변부탁드려요.

익명 사용자의 이미지

-mfpu=neon-vfpv4 -mfloat-abi=hard 를 컴파일러 옵션에 추가해 보세요.
(컴파일러를 보니 아마 -mfloat-abi=hard는 안 넣어도 될 듯)

익명 사용자의 이미지

주신 내용가지고 해결했어요!!(-mfpu만으로 해결 되었어요)
후에 같은 부분으로 고민하실분들을 위해 추가적으로 공부해보았는데,
-mfpu=[](ARM):'부동소수점 포멧'이 어셈블리 파일 내에 제대로 사용되었는지 체크하는 옵션.
-mfloat-abi-abi(type): 인자로 오는 abi를 부동소수점 ABI로 사용하는 옵션.
이라고 나와있네요. 다시한번 감사합니다!