Subversion Repositories pentevo

Rev

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

  1. #ifndef GETFARADDRESS_H
  2. #define GETFARADDRESS_H
  3.  
  4. #ifdef pgm_get_far_address
  5. #define GET_FAR_ADDRESS pgm_get_far_address
  6. #else
  7. #define GET_FAR_ADDRESS(var)                          \
  8. ({                                                    \
  9.     uint_farptr_t tmp;                                \
  10.                                                       \
  11.     __asm__ __volatile__(                             \
  12.                                                       \
  13.             "ldi    %A0, lo8(%1)"           "\n\t"    \
  14.             "ldi    %B0, hi8(%1)"           "\n\t"    \
  15.             "ldi    %C0, hh8(%1)"           "\n\t"    \
  16.             "clr    %D0"                    "\n\t"    \
  17.         :                                             \
  18.             "=d" (tmp)                                \
  19.         :                                             \
  20.             "p"  (&(var))                             \
  21.     );                                                \
  22.     tmp;                                              \
  23. })
  24. #endif
  25.  
  26. #endif
  27.