License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[linux-block.git] / tools / testing / selftests / x86 / raw_syscall_helper_32.S
1 /* SPDX-License-Identifier: GPL-2.0 */
2 .global sys32_helper
3 sys32_helper:
4         /* Args: syscall_args_32*, function pointer */
5         pushl   %ebp
6         pushl   %ebx
7         pushl   %esi
8         pushl   %edi
9         movl    5*4(%esp), %eax /* pointer to args struct */
10
11         movl    1*4(%eax), %ebx
12         movl    2*4(%eax), %ecx
13         movl    3*4(%eax), %edx
14         movl    4*4(%eax), %esi
15         movl    5*4(%eax), %edi
16         movl    6*4(%eax), %ebp
17         movl    0*4(%eax), %eax
18
19         call    *(6*4)(%esp)    /* Do the syscall */
20
21         /* Now we need to recover without losing any reg values */
22         pushl   %eax
23         movl    6*4(%esp), %eax
24         popl    0*4(%eax)
25         movl    %ebx, 1*4(%eax)
26         movl    %ecx, 2*4(%eax)
27         movl    %edx, 3*4(%eax)
28         movl    %esi, 4*4(%eax)
29         movl    %edi, 5*4(%eax)
30         movl    %ebp, 6*4(%eax)
31
32         popl    %edi
33         popl    %esi
34         popl    %ebx
35         popl    %ebp
36         ret
37
38         .type sys32_helper, @function
39         .size sys32_helper, .-sys32_helper
40
41 .global int80_and_ret
42 int80_and_ret:
43         int     $0x80
44         ret
45
46         .type int80_and_ret, @function
47         .size int80_and_ret, .-int80_and_ret