Linus> call *%gs:constant-offset
Linus> Not mmap. No magic system calls. No relinking. Not
Linus> _nothing_. One instruction, that's it.
I presume *%gs:0x18 is only for shared objects?
A naïve:
- asm volatile("call 0xffffe000"
+ asm volatile("call *%%gs:0x18"
in the trivial getppid benchmark code gives a SEGV, since
(according to gdb's info all-registers) %gs == 0 when it runs.
Is it just that my glibc is too old, or is there a shared vs static difference?
-JimC
P.S. On a (1 Gig) mobile p3 the getppid bench gives ~333 cycles for
int $0x80 and ~215 for call 0xffffe000, before yesterday's push.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/