Отговори на тема  [ 3 мнения ] 
GCC и ARM SWI функции 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение GCC и ARM SWI функции
Портвам от IAR на GCC... Системните ми функции са направени като SWI функции, т.е. викат се чрез SWI а не с CALL (BL/BX) и се чудя как да го реализирам това на GCC.
Мога да си направя wrapper функции в които на асемблер да ползвам SWI инструкции, но това ми изглежда като груба селска проява. Ще пробвам с макроси или inline функции, мисълта ми ако някой е борел нещо в тая насока да не откривам топлата вода...


Пон Май 07, 2007 11:25 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Май 17, 2006 4:22 pm
Мнения: 34
Местоположение: софия
Мнение 
Може да пробваш нещо такова:

#define CALL_FOO() asm("swi #0")


Пон Май 07, 2007 5:23 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
shopov написа:

#define CALL_FOO() asm("swi #0")



това предполагам ще вмъкне swi инструкцията, но предполагам ще остане много изненадано че след SWI интрукцията {R0-R3, R12} са омазани....
Освен това трябва да подавам параметри и да връщам резултат....
Всъщност, намерих някакъв пример:

Код:
#define MY_SWI_CALL_PARAM(MY_SWI_ID, MY_PARAM, MY_RESULT) \
   asm volatile( \
   "mov r0,%1  \t\n" \
   "swi %a2     \n\t" \
   "mov %0,r0  \n\t" \
   : "=r" (MY_RESULT) : "r" (MY_PARAM), "I" (MY_SWI_ID) : "r0", "lr" )



не че ми харесва, но едва ли ще намеря по-добро решение, дано поне работи че автора на тоя код има разни притеснителни коментари ;-)


Пон Май 07, 2007 6:14 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 3 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 5 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни