ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
4 мая
1221100 Топик полностью
Zoro (05.07.2022 23:16, просмотров: 148) ответил VVB на Прошу помощи зала по GCC
мои пять копеек. 

Если я правильно осилил сию тему - то при выключенном кеше "всё работает" ?

Мысли вслух:

1 - почитать на еррату в части кеша

2 - посмотреть в код (в частности в реализацию протек/унпротек)

там упоминается

pbuf.с

SYS_ARCH_PROTECT(old_level);

pbuf_free_ooseq_pending = 1;

SYS_ARCH_UNPROTECT(old_level);

pbuf.h

#define PBUF_CHECK_FREE_OOSEQ() do { if(pbuf_free_ooseq_pending) { \


Другими словами в одно случае есть протек/унпротек, а в другом нет.

Саму реализацию протек/унпротек я не смотрел - она кажется от проца/оси зависит.

3 - возможно требуется применять асм команды "барьеры данных" (как они точно работают - я не вникал, знаю что есть).


пс: сильно "глубоко не копал"...

ну и докучи посмотреть дизасм: десять команд до и десять после мест, где используется эта переменная. таких мест по коду кажется всего три штуки: установка в ноль, установка в единицу, тестирование.