Subversion Repositories CharLCD

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #ifndef _JTEST_CYCLE_H_
  2. #define _JTEST_CYCLE_H_
  3.  
  4. /*--------------------------------------------------------------------------------*/
  5. /* Includes */
  6. /*--------------------------------------------------------------------------------*/
  7.  
  8. #include "jtest_fw.h"           /* JTEST_DUMP_STRF() */
  9. #include "jtest_systick.h"
  10. #include "jtest_util.h"         /* STR() */
  11.  
  12. /*--------------------------------------------------------------------------------*/
  13. /* Declare Module Variables */
  14. /*--------------------------------------------------------------------------------*/
  15. extern const char * JTEST_CYCLE_STRF;
  16.  
  17. /*--------------------------------------------------------------------------------*/
  18. /* Macros and Defines */
  19. /*--------------------------------------------------------------------------------*/
  20.  
  21. /**
  22.  *  Wrap the function call, fn_call, to count execution cycles and display the
  23.  *  results.
  24.  */
  25. /* skipp function name + param
  26. #define JTEST_COUNT_CYCLES(fn_call)                     \
  27.     do                                                  \
  28.     {                                                   \
  29.         uint32_t __jtest_cycle_end_count;               \
  30.                                                         \
  31.         JTEST_SYSTICK_RESET(SysTick);                   \
  32.         JTEST_SYSTICK_START(SysTick);                   \
  33.                                                         \
  34.         fn_call;                                        \
  35.                                                         \
  36.         __jtest_cycle_end_count =                       \
  37.             JTEST_SYSTICK_VALUE(SysTick);               \
  38.                                                         \
  39.                 JTEST_SYSTICK_RESET(SysTick);                   \
  40.         JTEST_DUMP_STRF(JTEST_CYCLE_STRF,               \
  41.                         STR(fn_call),                   \
  42.                         (JTEST_SYSTICK_INITIAL_VALUE -  \
  43.                          __jtest_cycle_end_count));     \
  44.     } while (0)
  45. */
  46. #define JTEST_COUNT_CYCLES(fn_call)                     \
  47.     do                                                  \
  48.     {                                                   \
  49.         uint32_t __jtest_cycle_end_count;               \
  50.                                                         \
  51.         JTEST_SYSTICK_RESET(SysTick);                   \
  52.         JTEST_SYSTICK_START(SysTick);                   \
  53.                                                         \
  54.         fn_call;                                        \
  55.                                                         \
  56.         __jtest_cycle_end_count =                       \
  57.             JTEST_SYSTICK_VALUE(SysTick);               \
  58.                                                         \
  59.                 JTEST_SYSTICK_RESET(SysTick);                   \
  60.         JTEST_DUMP_STRF(JTEST_CYCLE_STRF,               \
  61.                         (JTEST_SYSTICK_INITIAL_VALUE -  \
  62.                          __jtest_cycle_end_count));     \
  63.     } while (0)
  64.  
  65. #endif /* _JTEST_CYCLE_H_ */
  66.