Blame |
    Last modification |
    View Log
    | Download
    | RSS feed
  
  
#ifndef GETFARADDRESS_H
 
#define GETFARADDRESS_H
 
 
 
#ifdef pgm_get_far_address
 
#define GET_FAR_ADDRESS pgm_get_far_address
 
#else
 
#define GET_FAR_ADDRESS(var)                          \
 
({                                                    \
 
    uint_farptr_t tmp;                                \
 
                                                      \
 
    __asm__ __volatile__(                             \
 
                                                      \
 
            "ldi    %A0, lo8(%1)"           "\n\t"    \
 
            "ldi    %B0, hi8(%1)"           "\n\t"    \
 
            "ldi    %C0, hh8(%1)"           "\n\t"    \
 
            "clr    %D0"                    "\n\t"    \
 
        :                                             \
 
            "=d" (tmp)                                \
 
        :                                             \
 
            "p"  (&(var))                             \
 
    );                                                \
 
    tmp;                                              \
 
})
 
#endif
 
 
 
#endif