#if defined (__powerpc__) unsigned int mach64MemReg = 0xDEADBEAF; static inline void old_regw(volatile unsigned long regindex, unsigned long regdata) { register unsigned long base_addr = (unsigned long)mach64MemReg; asm("stwbrx %0,%1,%2": : "r"(regdata), "r"(regindex), "r"(base_addr)); } static inline unsigned long old_regr(volatile unsigned long regindex) { register unsigned long base_addr = (unsigned long)mach64MemReg, val; asm("lwbrx %0,%1,%2": "=r"(val):"r"(regindex), "r"(base_addr)); return(val); } static inline void regw(volatile unsigned long regindex, unsigned long regdata) { register unsigned long base_addr = (unsigned long)mach64MemReg; asm("stwbrx %0,%1,%2": : "r"(regdata), "b"(regindex), "r"(base_addr)); } static inline unsigned long regr(volatile unsigned long regindex) { register unsigned long base_addr = (unsigned long)mach64MemReg, val; asm("lwbrx %0,%1,%2": "=r"(val):"b"(regindex), "r"(base_addr)); return(val); } #endif int main() { int offset=10; int data=12; int input, input2; input = regr(offset); input = old_regr(offset); regw(offset,data); old_regw(offset,data); }