реклама на сайте
подробности

 
 
> User Mode Stack в обработчике исключения, LPC2378 Exceptions
amw
сообщение Feb 25 2008, 16:24
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Для примера и определения архитектуры:
Процессор LPC2378, т.е. ARM7TDMI-S

Процессор работает в USER MODE. Происходит исключение, любое, UNDEF, PREFETCH ABTORT, DATA ABORT.
Переходим в обработчик.

Вопрос:
Как в обработчике исключения узнать значение регистра SP, из USER MODE?
Нужно положить на вершину USER MODE стека значение полученное в обработчике EXCEPTION.
В общем случае, нужно в обработчике исключения знать значене SP режима, в котором произошло это исключение.

Что-то в мануале на ARM найти не могу.
Может кто ткнет в правильный мануал или пример.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KRS
сообщение Feb 26 2008, 11:10
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



а не проще ли для этого использовать SWI
эта инструкция вроде как и предназначена для системных вызовов.
Go to the top of the page
 
+Quote Post
amw
сообщение Feb 26 2008, 15:27
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(KRS @ Feb 26 2008, 13:10) *
а не проще ли для этого использовать SWI
эта инструкция вроде как и предназначена для системных вызовов.

Действительно SWI проще.
Но для его использования необходимо переписать все используемые в проекте библиотеки.
И сильно переписать.
Вариант с исключениями позволяет экономить время и не вносить свои глюки в чужие библиотеки.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 26 2008, 15:51
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(amw @ Feb 26 2008, 17:27) *
Действительно SWI проще.
Но для его использования необходимо переписать все используемые в проекте библиотеки.
И сильно переписать.
Почему? Достаточно написать в исключении SWI чтение номера SWI из вызвавшей исключение инструкции, переключение в user(system) mode и ветвление по номеру swi на соответствующие библиотечные функции.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
amw
сообщение Feb 27 2008, 08:42
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Сергей Борщ @ Feb 26 2008, 17:51) *
Почему? Достаточно написать в исключении SWI чтение номера SWI из вызвавшей исключение инструкции, переключение в user(system) mode и ветвление по номеру swi на соответствующие библиотечные функции.

Если-бы все так просто было wink.gif. У меня случай обратный.
Нужно обеспечить библиотеке данные из написанного мной кода плюс сервисные функции, то-же написанные мной.
Для реализации этого методом SWI нужно убедить правообладателя библиотеки переписать код, нужным мне спобом, что весьма затруднительно (и убедить и перписать). Библиотека не моя, распространяется за деньги и только в бинарном виде.
Интерфейс библиотеки включает уже упомянутые мной таблицы с адресами.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 27 2008, 12:57
Сообщение #6


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(amw @ Feb 27 2008, 11:42) *
Библиотека не моя, распространяется за деньги и только в бинарном виде.

А что за библиотека такая? ( если не секрет )
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- amw   User Mode Stack в обработчике исключения   Feb 25 2008, 16:24
- - KRS   Цитата(amw @ Feb 25 2008, 19:24) Процессо...   Feb 25 2008, 16:32
|- - amw   Цитата(KRS @ Feb 25 2008, 18:32) IMHO в A...   Feb 25 2008, 16:39
- - GetSmart   Дык SP USER MODE виден (аппаратно!) только из ...   Feb 25 2008, 16:46
- - zhevak   Цитата(amw @ Feb 25 2008, 21:24) Нужно по...   Feb 25 2008, 19:28
|- - amw   Цитата(zhevak @ Feb 25 2008, 21:28) Я изв...   Feb 26 2008, 08:48
|- - KRS   Цитата(amw @ Feb 26 2008, 11:48) 2) - Реа...   Feb 26 2008, 09:23
|- - amw   Цитата(KRS @ Feb 26 2008, 11:23) Вот это ...   Feb 26 2008, 09:57
- - GetSmart   Мне кажется, это иммитация вызова процедуры в USER...   Feb 25 2008, 19:36
|- - KRS   Цитата(GetSmart @ Feb 25 2008, 22:36) Мне...   Feb 25 2008, 19:45
|- - aaarrr   Цитата(KRS @ Feb 25 2008, 22:45) Да и воо...   Feb 25 2008, 19:48
- - amw   Цитата(KRS @ Feb 27 2008, 14:57) А что за...   Feb 28 2008, 08:29


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 07:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01324 секунд с 7
ELECTRONIX ©2004-2016