]> pilppa.org Git - linux-2.6-omap-h63xx.git/blob - arch/um/sys-x86_64/stub.S
[PATCH] uml: TLB operation batching
[linux-2.6-omap-h63xx.git] / arch / um / sys-x86_64 / stub.S
1 #include "uml-config.h"
2
3         .globl syscall_stub
4 .section .__syscall_stub, "x"
5 syscall_stub:
6         syscall
7         /* We don't have 64-bit constants, so this constructs the address
8          * we need.
9          */
10         movq    $(UML_CONFIG_STUB_DATA >> 32), %rbx
11         salq    $32, %rbx
12         movq    $(UML_CONFIG_STUB_DATA & 0xffffffff), %rcx
13         or      %rcx, %rbx
14         movq    %rax, (%rbx)
15         int3
16
17         .globl batch_syscall_stub
18 batch_syscall_stub:
19         movq    $(UML_CONFIG_STUB_DATA >> 32), %rbx
20         salq    $32, %rbx
21         movq    $(UML_CONFIG_STUB_DATA & 0xffffffff), %rcx
22         or      %rcx, %rbx
23         movq    %rbx, %rsp
24 again:  pop     %rax
25         cmpq    $0, %rax
26 jz      done
27         pop     %rdi
28         pop     %rsi
29         pop     %rdx
30         pop     %r10
31         pop     %r8
32         pop     %r9
33         syscall
34         mov     %rax, (%rbx)
35         jmp     again
36 done:   int3