]> Git Repo - linux.git/blob - arch/s390/include/asm/access-regs.h
Linux 6.14-rc3
[linux.git] / arch / s390 / include / asm / access-regs.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright IBM Corp. 1999, 2024
4  */
5
6 #ifndef __ASM_S390_ACCESS_REGS_H
7 #define __ASM_S390_ACCESS_REGS_H
8
9 #include <linux/instrumented.h>
10 #include <asm/sigcontext.h>
11
12 struct access_regs {
13         unsigned int regs[NUM_ACRS];
14 };
15
16 static inline void save_access_regs(unsigned int *acrs)
17 {
18         struct access_regs *regs = (struct access_regs *)acrs;
19
20         instrument_write(regs, sizeof(*regs));
21         asm volatile("stamy     0,15,%[regs]"
22                      : [regs] "=QS" (*regs)
23                      :
24                      : "memory");
25 }
26
27 static inline void restore_access_regs(unsigned int *acrs)
28 {
29         struct access_regs *regs = (struct access_regs *)acrs;
30
31         instrument_read(regs, sizeof(*regs));
32         asm volatile("lamy      0,15,%[regs]"
33                      :
34                      : [regs] "QS" (*regs)
35                      : "memory");
36 }
37
38 #endif /* __ASM_S390_ACCESS_REGS_H */
This page took 0.027195 seconds and 4 git commands to generate.