unsigned long testit_reg(unsigned long x, unsigned long y) { unsigned long z = x + y; unsigned long v; asm("# Frame pointer in %[fp]\n\tmov %[in],%[out]" : [out] "=r" (v) : [in] "r" (z), [fp] "r" (__builtin_frame_address(0))); return v; } unsigned long testit_buf(unsigned long x, unsigned long y) { unsigned long z = x + y; unsigned long buffer[64]; asm("# Frame pointer in %[fp]\n\tmov %[in],%[out]" : [out] "=m" (buffer) : [in] "r" (z), [fp] "r" (__builtin_frame_address(0))); return buffer[0]; }