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

#pragma ASM/ENDASM inside a #define (???)

Hello,

I'm having trouble using #pragma ASM/ENDASM inside a #define statement. This is what I want to do inside the #define:

- push ACC (assembly)
- push IE (assembly)
- EA = 0 (C)

This is the code I'm *trying* to use:

#define portENTER_CRITICAL() \ 
{ \ 
#pragma ASM \ 
push  ACC \ 
push  IE  \ 
#pragma ENDASM \ 
EA = 0; \ 
}

But I always get an error, no matter what I change... also, it seems that #pragma ASM/ENDASM can't be used inside header files (who knows why...), is there any workaround for that, without repeating the same #defines inside all .c files that uses it?

Best regards,
Carlos.

PS: any one answering this thread, nevermind the "that's a bad practice! use separate asm and c source files! blah blah!..." comments... I really need this, so don't bother with those kind of comments...

Parents
  • "Those defines are used mainly for context switching, so they need to be done in assembly"

    Yes that is the kind of thing that should be done in assembly!

    It really shouldn't be anywhere near a 'C' file!

    "If anyone saw the freertos sources, you know what I'm talking about..."

    I haven't, so I'll take your word for it...

    If you're stuck with having to do it this way because of 3rd-party constraints, then I s'pose you'll have to go that way - even if it really is a "bad practice" blah, blah, etc...

    :-(

    So, although the source is "free", the work to port it is going to cost something - that's always the tradeoff: is it worth it, rather than buy something "ready-to-go"...?
    That's a call only you can make!

Reply
  • "Those defines are used mainly for context switching, so they need to be done in assembly"

    Yes that is the kind of thing that should be done in assembly!

    It really shouldn't be anywhere near a 'C' file!

    "If anyone saw the freertos sources, you know what I'm talking about..."

    I haven't, so I'll take your word for it...

    If you're stuck with having to do it this way because of 3rd-party constraints, then I s'pose you'll have to go that way - even if it really is a "bad practice" blah, blah, etc...

    :-(

    So, although the source is "free", the work to port it is going to cost something - that's always the tradeoff: is it worth it, rather than buy something "ready-to-go"...?
    That's a call only you can make!

Children
No data