cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

chpid.h (979B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 *    Copyright IBM Corp. 2007, 2012
      4 *    Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
      5 */
      6#ifndef _ASM_S390_CHPID_H
      7#define _ASM_S390_CHPID_H
      8
      9#include <uapi/asm/chpid.h>
     10#include <asm/cio.h>
     11
     12struct channel_path_desc_fmt0 {
     13	u8 flags;
     14	u8 lsn;
     15	u8 desc;
     16	u8 chpid;
     17	u8 swla;
     18	u8 zeroes;
     19	u8 chla;
     20	u8 chpp;
     21} __packed;
     22
     23static inline void chp_id_init(struct chp_id *chpid)
     24{
     25	memset(chpid, 0, sizeof(struct chp_id));
     26}
     27
     28static inline int chp_id_is_equal(struct chp_id *a, struct chp_id *b)
     29{
     30	return (a->id == b->id) && (a->cssid == b->cssid);
     31}
     32
     33static inline void chp_id_next(struct chp_id *chpid)
     34{
     35	if (chpid->id < __MAX_CHPID)
     36		chpid->id++;
     37	else {
     38		chpid->id = 0;
     39		chpid->cssid++;
     40	}
     41}
     42
     43static inline int chp_id_is_valid(struct chp_id *chpid)
     44{
     45	return (chpid->cssid <= __MAX_CSSID);
     46}
     47
     48
     49#define chp_id_for_each(c) \
     50	for (chp_id_init(c); chp_id_is_valid(c); chp_id_next(c))
     51#endif /* _ASM_S390_CHPID_H */