Добавить возможность предварительной выборки для target из arm-linux-gnueabi-g++
Следующая строка кода была скомпилирована с использованием arm-linux-gnueabi-g++-4.7
на хост-машине Ubuntu. prfm
инструкция должна была генерироваться для конкретной строки, но это не так.
__builtin_prefetch(&some_variable,0,3);
Команда для компиляции:
arm-linux-gnueabi-g++-4.7 -O0 -S -std=c++11 main.cpp -D some_definition
cat main.s | grep pr
//Returns null (main.s is all lower case)
Цитирование одной строки из ссылки gcc здесь связано с проблемой:
Если цель не поддерживает предварительную выборку данных, выражение адреса оценивается, если оно включает побочные эффекты, но никакой другой код не генерируется, и GCC не выдает предупреждение.
Последняя часть информации заключается в том, что кросс-компилятор устанавливается с помощью apt-get install
не с нуля.
Здесь возникает вопрос:
Как можно просто добавить поддержку предварительной выборки данных к цели arm-linux-gnueabi-g++-4.7
кросс-компилятор?
заранее спасибо
1 ответ
Как предложил @Notlikethat, компилируя с -march=armv7-a
решил проблему. Теперь в выводе сборки есть инструкция pld.
$ arm-linux-gnueabi-g++-4.7 -g -O3 -std=c++11 -static -S -march=armv7-a main.cpp -D some_definition
$ cat main.s | grep pld
pld [r0, #0]