Про процессоры.
Jun. 23rd, 2009 08:57 amКогда-то давно портировали мы криптоядро на первый не-интеловский процессор - спарк.
И завели там два дефайна STRICT_OFFSET и WORDS_BIGENDIAN.
Первый означает, что нельзя обращаться к 32-битным словам по адресу не кратному четырем (а к 16-битным - по нечетному), второй - понятно что означает.
Сейчас возникла задача портировать это дело еще на кучку процессоров и выяснилось, что
1. на Nokia N800, процессор ARM11 архитектура armel (ARM Extended ABI) не нужно ни того ни другого
2. на ARM9 будь бинарник собран для arm или для armel (т.е. без extended ABI) нужен STRICT_OFFSET
3. на mips (big endian) STRICT_OFFSET не нужен, но нужен, как нетрудно догадаться WORDS_BIGENDIAN. Правда, похоже, со STRICT_OFFSET оно заметно быстрее. Впрочем, openssl speed пока не гонял.
4. на mipsel (mips little endian) еще не пробовал. Надо эмулятор отсетапить. Но похоже, тоже ничего не нужно.
На mipsel без STRICT_OFFSET работает правильно, но в 6 раз медленнее чем с ним
А вот с AVR32 незадача вышла. В ТЗ его вписали, а какой Linux туда ставить - непонятно. Debian порт какой-то неживой. Ну и эмулятора нормального нет.
И завели там два дефайна STRICT_OFFSET и WORDS_BIGENDIAN.
Первый означает, что нельзя обращаться к 32-битным словам по адресу не кратному четырем (а к 16-битным - по нечетному), второй - понятно что означает.
Сейчас возникла задача портировать это дело еще на кучку процессоров и выяснилось, что
1. на Nokia N800, процессор ARM11 архитектура armel (ARM Extended ABI) не нужно ни того ни другого
2. на ARM9 будь бинарник собран для arm или для armel (т.е. без extended ABI) нужен STRICT_OFFSET
3. на mips (big endian) STRICT_OFFSET не нужен, но нужен, как нетрудно догадаться WORDS_BIGENDIAN. Правда, похоже, со STRICT_OFFSET оно заметно быстрее. Впрочем, openssl speed пока не гонял.
4. на mipsel (mips little endian) еще не пробовал. Надо эмулятор отсетапить. Но похоже, тоже ничего не нужно.
А вот с AVR32 незадача вышла. В ТЗ его вписали, а какой Linux туда ставить - непонятно. Debian порт какой-то неживой. Ну и эмулятора нормального нет.