Hi Borut,

2007/11/6, Borut Razem <[EMAIL PROTECTED]>:
>
> #define SAVE_TASK_CTX(stack_low, stack_high)                           \
> do {                                                                   \
>     /* Disable global interrupt. */                                    \
>         _asm                                                           \
>         bcf     INTCON, 6, 0                                           \
>         _endasm;                                                       \
>         _asm                                                           \
>         movff   STATUS, PREINC1                                        \
>         _endasm;                                                       \
>         _asm                                                           \
>         movff   WREG, PREINC1                                          \
>         _endasm;                                                       \
>     /* Store the necessary registers to the stack. */                  \
>         ...
> } while (0)
>
>
> so that the following cases work correctly:
>
> if (...)
>   SAVE_TASK_CTX(stack_low, stack_high);
>
>
> if (...)
>   SAVE_TASK_CTX(stack_low, stack_high);
> else
>   ...
>

Yes. I saw this tips at kernelnewbies.org some years ago. I'm
wondering because the original code works, see the pro_man.c from
PICos18:

  if (kernelState & USER)
    SAVE_TASK_CTX(stack_low, stack_high);
  SCHEDULE;

Very strange!

Cheers,

> Borut
>

Alan

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to