123456789101112131415161718192021222324252627282930313233343536 |
- #include "uml-config.h"
- .globl syscall_stub
- .section .__syscall_stub, "x"
- syscall_stub:
- syscall
- /* We don't have 64-bit constants, so this constructs the address
- * we need.
- */
- movq $(UML_CONFIG_STUB_DATA >> 32), %rbx
- salq $32, %rbx
- movq $(UML_CONFIG_STUB_DATA & 0xffffffff), %rcx
- or %rcx, %rbx
- movq %rax, (%rbx)
- int3
- .globl batch_syscall_stub
- batch_syscall_stub:
- movq $(UML_CONFIG_STUB_DATA >> 32), %rbx
- salq $32, %rbx
- movq $(UML_CONFIG_STUB_DATA & 0xffffffff), %rcx
- or %rcx, %rbx
- movq %rbx, %rsp
- again: pop %rax
- cmpq $0, %rax
- jz done
- pop %rdi
- pop %rsi
- pop %rdx
- pop %r10
- pop %r8
- pop %r9
- syscall
- mov %rax, (%rbx)
- jmp again
- done: int3
|