sunrize 0 14 октября, 2010 Опубликовано 14 октября, 2010 · Жалоба Есть проект: Leon3, AHBCTRL, AHBROM, APBCTRL, APBUART, GPIO. Проект компилируется, но есть 2 проблемы: 1) при возврате из функции (команда retl) происходит прерывание (0x07) 2) при выполнении команд вида st reg, [%fp - 0x0c] также происходит прерывание 3) и самое интересное, регистр o5 содержит значение 0х60000000, далее следует последовательность команд, в [] результат операции, выданный ModelSim'ом or %o5, 0x20C, %o4 [0x6000020C] st %g1, [%o4] mov 0x00, %o4 [0x00000000] or %o5, 0x200, %o4 [0x60000200] st %g1, [%o4] но на шину во втором случае выдается 0x6000020C Никак не могу понять в чем проблема, для компиляции использую GR-LIDE (Bare C), если кто-то сталкивался с подобным или знает решение, просьба подсказать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 15 октября, 2010 Опубликовано 15 октября, 2010 · Жалоба Есть проект: Leon3, AHBCTRL, AHBROM, APBCTRL, APBUART, GPIO. Проект компилируется, но есть 2 проблемы: 1) при возврате из функции (команда retl) происходит прерывание (0x07) 2) при выполнении команд вида st reg, [%fp - 0x0c] также происходит прерывание 3) и самое интересное, регистр o5 содержит значение 0х60000000, далее следует последовательность команд, в [] результат операции, выданный ModelSim'ом or %o5, 0x20C, %o4 [0x6000020C] st %g1, [%o4] mov 0x00, %o4 [0x00000000] or %o5, 0x200, %o4 [0x60000200] st %g1, [%o4] но на шину во втором случае выдается 0x6000020C Никак не могу понять в чем проблема, для компиляции использую GR-LIDE (Bare C), если кто-то сталкивался с подобным или знает решение, просьба подсказать 1) 0x7 это non-aligment смотреть надо sparcv8.pdf там все описано 2) 3) а точно два раза 0x6000020C? там write-buffer поэтому операция по шине не сразу проходит, может это с первого st? компилятор ерунды не делает, но 0х7 из-за линкера или crt может быть - стек то на 8 выровнен? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sunrize 0 15 октября, 2010 Опубликовано 15 октября, 2010 (изменено) · Жалоба yes, по поводу прерывания, стек при работе с функциями не используется, адреса возврата передаются через регистры, в проекте нет озу, а по поводу 3-го пункта я ошибся в описании проблемы моделсим выдал or %o5, 0x200, %o4 [0x6000020C] во втором случае Изменено 15 октября, 2010 пользователем SunRize Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 19 октября, 2010 Опубликовано 19 октября, 2010 · Жалоба стек при работе с функциями не используется если используете компилятор - используется: см описание инструкций save/restore ----------- возьмите стандартный проект Гейслера (лучше всего leon3mp) и посмотрите как оно должно работать, после собирайте свою систему все там работает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sunrize 0 25 октября, 2010 Опубликовано 25 октября, 2010 · Жалоба Решение проблем: 1) при возврате из функции (команда retl) происходит прерывание (0x07); 2) при выполнении команд вида st reg, [%fp - 0x0c] также происходит прерывание. Решаются записью в %o6 (%sp) адреса RAM памяти 3-я проблема решилась установкой текущего регистрового окна в %psr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 26 октября, 2010 Опубликовано 26 октября, 2010 · Жалоба начальную конфигурацию Гейслер делает не в crt.o, а с помощью специальной утилиты mkprom поэтому стеки/окна/маски окон и т.п. надо либо самому ставить (написать ассемблерный файлик и прилинковать с [по-моему] ключами nostartup или как-то так), либо почитать инструкцию --------------- а с проблемой завершения окон (window_overflow/window_underflow trap) уже столкнулись? имхо, самое прикольное место в архитектуре SPARC Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться