This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

REALview FIQ Handler Compiler Error

Hi

I'm can't get a Source code with a FIQ Handler compiled with REALview.

There is always a error in the line "void FIQ_Handler (void) __fiq" which says: error: #130: expected a "{"

This is the complete test Code:

#include<aduc7024.h>

int main(void)
{
while(1){}
}

void FIQ_Handler (void)  __fiq
{
// bla bla ....
}

There is no error when I switch to CARM Compiler and a IRQ with this scheme works with REALview.

Can some one give me a hint?

Parents
  • There is a difference between the ARM modes as you say. I am talking however about the compiler function attributes.

    You have a compilation problem.

    __fiq is NOT a valid function attribute for the RealView compiler. It is for the CARM compiler however.

    You should use the __irq function attribute in RealView.

    The section in the RealView manual is quoted below.

    From this, it seems to me like the RealView compiler does not differentiate between the fiq and irq. Therefore it ignores the extra banked registers that are available to it in fiq mode.


    __irq
    Enables a C or C++ function to be used as an interrupt routine called by
    the IRQ or FIQ vectors. All corrupted registers except floating-point
    registers are preserved, not only those that are normally preserved under
    the AAPCS. The default AAPCS mode must be used.
    The function exits by setting the PC to lr–4 and the CPSR to the value in
    SPSR. No arguments or return values can be used with __irq functions.

Reply
  • There is a difference between the ARM modes as you say. I am talking however about the compiler function attributes.

    You have a compilation problem.

    __fiq is NOT a valid function attribute for the RealView compiler. It is for the CARM compiler however.

    You should use the __irq function attribute in RealView.

    The section in the RealView manual is quoted below.

    From this, it seems to me like the RealView compiler does not differentiate between the fiq and irq. Therefore it ignores the extra banked registers that are available to it in fiq mode.


    __irq
    Enables a C or C++ function to be used as an interrupt routine called by
    the IRQ or FIQ vectors. All corrupted registers except floating-point
    registers are preserved, not only those that are normally preserved under
    the AAPCS. The default AAPCS mode must be used.
    The function exits by setting the PC to lr–4 and the CPSR to the value in
    SPSR. No arguments or return values can be used with __irq functions.

Children
No data