Цитата(arttech @ Nov 10 2007, 17:51)

Подскажите пожалуйста, как правильно определить функцию обработки исключительных ситуаций на С, для:
- Сбоя выборки PAbt_Handler?A
- Сбоя данных DAbt_Handler?A
В литературе написано, что опиание даётся подобно описанию функций для прерываний:
- void Pabt_Handler (void) __abort
- void Dabt_Handler (void) __abort
в реальности такое описание на проходит, а суффикс __irq результата не даёт...
?A - обозначает arm-режим, поэтому функция должна определяться как
void xAbt_Handler(void) __armдержи для примера:
void DAbt_Handler(void) __arm
{
extern unsigned long E_LastErrAdr;
__asm { ldr r6, =E_LastErrAdr; }
__asm { subs r7, lr, #8; }
__asm { str r7, [r6, #0x00]; }
printf ("Data access violation! Address = 0x%08x\n", E_LastErrAdr);
while (1);
}