Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.13.7.
 1/* SPDX-License-Identifier: GPL-2.0 */
 2#include <as-layout.h>
 3
 4.section .__syscall_stub, "ax"
 5	.globl batch_syscall_stub
 6batch_syscall_stub:
 7	mov	$(STUB_DATA), %rbx
 8	/* load pointer to first operation */
 9	mov	%rbx, %rsp
10	add	$0x10, %rsp
11again:
12	/* load length of additional data */
13	mov	0x0(%rsp), %rax
14
15	/* if(length == 0) : end of list */
16	/* write possible 0 to header */
17	mov	%rax, 8(%rbx)
18	cmp	$0, %rax
19	jz	done
20
21	/* save current pointer */
22	mov	%rsp, 8(%rbx)
23
24	/* skip additional data */
25	add	%rax, %rsp
26
27	/* load syscall-# */
28	pop	%rax
29
30	/* load syscall params */
31	pop	%rdi
32	pop	%rsi
33	pop	%rdx
34	pop	%r10
35 	pop	%r8
36	pop	%r9
37
38	/* execute syscall */
39	syscall
40
41	/* check return value */
42	pop	%rcx
43	cmp	%rcx, %rax
44	je	again
45
46done:
47	/* save return value */
48	mov	%rax, (%rbx)
49
50	/* stop */
51	int3