Path: blob/master/arch/s390/include/uapi/asm/guarded_storage.h
26481 views
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */1#ifndef _GUARDED_STORAGE_H2#define _GUARDED_STORAGE_H34#include <linux/types.h>56struct gs_cb {7__u64 reserved;8__u64 gsd;9__u64 gssm;10__u64 gs_epl_a;11};1213struct gs_epl {14__u8 pad1;15union {16__u8 gs_eam;17struct {18__u8 : 6;19__u8 e : 1;20__u8 b : 1;21};22};23union {24__u8 gs_eci;25struct {26__u8 tx : 1;27__u8 cx : 1;28__u8 : 5;29__u8 in : 1;30};31};32union {33__u8 gs_eai;34struct {35__u8 : 1;36__u8 t : 1;37__u8 as : 2;38__u8 ar : 4;39};40};41__u32 pad2;42__u64 gs_eha;43__u64 gs_eia;44__u64 gs_eoa;45__u64 gs_eir;46__u64 gs_era;47};4849#define GS_ENABLE 050#define GS_DISABLE 151#define GS_SET_BC_CB 252#define GS_CLEAR_BC_CB 353#define GS_BROADCAST 45455static inline void load_gs_cb(struct gs_cb *gs_cb)56{57asm volatile(".insn rxy,0xe3000000004d,0,%0" : : "Q" (*gs_cb));58}5960static inline void store_gs_cb(struct gs_cb *gs_cb)61{62asm volatile(".insn rxy,0xe30000000049,0,%0" : : "Q" (*gs_cb));63}6465static inline void save_gs_cb(struct gs_cb *gs_cb)66{67if (gs_cb)68store_gs_cb(gs_cb);69}7071static inline void restore_gs_cb(struct gs_cb *gs_cb)72{73if (gs_cb)74load_gs_cb(gs_cb);75}7677#endif /* _GUARDED_STORAGE_H */787980