blob: 957f2eff32cabde7cf1cc7e4e8dcdb06137664e2 [file] [log] [blame]
Jeff Diked67b5692005-07-07 17:56:49 -07001#include "uml-config.h"
2
3 .globl syscall_stub
4.section .__syscall_stub, "x"
5syscall_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
Jeff Dikec5600492005-09-03 15:57:36 -070016
17 .globl batch_syscall_stub
18batch_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
24again: pop %rax
25 cmpq $0, %rax
26jz 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
36done: int3