QUOTE (RA3PKJ @ Aug 8 2010, 14:13)

Надо присвоить переменной retval значение из регистра общего назначения r0, который фигурирует в ассемблерной вставке.
Т.е. retval = ?????????????
Вам уже выше все
объяснили, как ДЕЙСТВИТЕЛЬНО правильно.
Ну а для общего развития, существуют соглашения о передаваемых и возвращаемых параметрах (читаем документацию) , и о чудо

r0 это и есть Ваш "retval" - ничего присваивать не надо. Только Warning подавить на то, что функция значения не возврвщает.
CODE
.....
__asm ( "mrs r0, cpsr" );
#pragma diag_suppress = Pe940
}
#pragma diag_default = Pe940