Dne 01. 03. 25 v 23:48 Rudolf Marek napsal(a):
I don't know how slow is to do the jump back via far jump.

I did some micro benchmark on Raptorlake platform using other operating system 
I'm very familiar with.

I added following sequence to the SYSCALL64 entrypoint:

 .balign 16
syscallentry64:
    .byte 0x48
    ljmp *jmpaddr(%rip)
continuehere:
     swapgs
<...>

jmpaddr:
.quad continuehere
.word KERN_OTHER_CS << 3

And well, it is  1.5x slower. Unmodified syscall benchmark took on avg 261 
cycles / 104 ns and the one with the indirect jump with %cs change took
386 cycles/ 154 ns.

This whole thing is quite literally a trap next to a trap, because GAS wasn't 
adding REX.W prefix and somehow complained about ljmpq.

Thanks,
Rudolf


Reply via email to