Chromium Code Reviews| Index: lss/linux_syscall_support.h |
| diff --git a/lss/linux_syscall_support.h b/lss/linux_syscall_support.h |
| index f2eaa3e1528cac85bce0a6544be0967330d54de3..26bfe2c1c7e47c9a7d4784ca08787b0e7da65b74 100644 |
| --- a/lss/linux_syscall_support.h |
| +++ b/lss/linux_syscall_support.h |
| @@ -2028,13 +2028,12 @@ struct kernel_statfs { |
| * function, as glibc goes out of its way to make it inaccessible. |
| */ |
| long long res; |
| - __asm__ __volatile__("call 2f\n" |
| - "0:.align 16\n" |
| + __asm__ __volatile__("jmp 2f\n" |
| + ".align 16\n" |
| "1:movq %1,%%rax\n" |
| LSS_ENTRYPOINT |
| - "2:popq %0\n" |
| - "addq $(1b-0b),%0\n" |
| - : "=a" (res) |
| + "2:leaq 1b(%%rip),%0\n" |
| + : "=r" (res) |
|
jln (very slow on Chromium)
2013/08/29 20:22:03
This should always have been =r, right?
Mark Seaborn
2013/08/31 00:01:58
Yes. Constraining this to rax was unnecessary.
|
| : "i" (__NR_rt_sigreturn)); |
| return (void (*)(void))(uintptr_t)res; |
| } |