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 12struct access_regs { 13 unsigned int regs[NUM_ACRS]; 14}; 15 16static 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 27static 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 */ 39