知識社群Login
GCC In-line Assembly
by 艾鍗學院, 2014-09-18 13:33, Views(666)

Kernel Source 
 ./include/asm/irqflags.h



/*
 * Enable FIQs
 */
#define local_fiq_enable()                  \
    ({                          \
        unsigned long temp;             \
    __asm__ __volatile__(                   \
    "mrs    %0, cpsr        @ stf\n"        \
"   bic %0, %0, #64\n"                  \
"   msr cpsr_c, %0"                 \
    : "=r" (temp)                       \
    :                           \
    : "memory", "cc");                  \
    })



/*
 * Disable FIQs
 */
#define local_fiq_disable()                 \
    ({                          \
        unsigned long temp;             \
    __asm__ __volatile__(                   \
    "mrs    %0, cpsr        @ clf\n"        \
"   orr %0, %0, #64\n"                  \
"   msr cpsr_c, %0"                 \
    : "=r" (temp)                       \
    :                           \
    : "memory", "cc");                  \
    })

#endif

/*